Форум: "Media";
Текущий архив: 2005.09.25;
Скачать: [xml.tar.bz2];
ВнизКак подключяются кодаки? Найти похожие ветки
← →
ronyn (2005-05-06 01:46) [0]Пжалста помогите, научите как надо сделать , что бы к проигрывателю подключались дополнительные кодаки? Я из начинающих - поэтому прошу поподробнее, желательно на примере.
Заранее благодарю.
← →
dmitry501 © (2005-05-06 05:38) [1]ronyn (06.05.05 1:46)
Скачиваешь с интернета, жмешь setup.exe и все!
← →
ronyn (2005-05-06 12:53) [2]Я имею ввиду, чтобы мой проигрыватель - TMediaPlayer, искал и подключал эти кодаки.
← →
WondeRu © (2005-05-06 15:18) [3]DSPack
← →
kai © (2005-05-06 21:47) [4]ronyn (06.05.05 01:46)
обычно декодеры поставляются в виде activex-ов
достаточно скопировать их в папочку %WIN%\SYSTEM32
и зарегистрировать вызвав функцию DllRegisterServer. либо с помощью regsvr32.exe (первый вариант лучше)
вот кусок кода устаноки декодера xvid (требуется 2 файла: xvid.ax, xvid.dll)
FillChar(aSystemDirZ, Length(aSystemDirZ), 0);
GetSystemDirectory(aSystemDirZ, 2047);
fSystemDir := aSystemDirZ; //кривовато, но перепишу на досуге -)
try
if CopyFile(PAnsiChar(ExtractFilePath(Paramstr(0)) + XVID_DECODER_OCX_FILENAME),
PAnsiChar(IncludeTrailingPathDelimiter(fSystemDir) + XVID_DECODER_OCX_FILENAME), False) and
CopyFile(PAnsiChar(ExtractFilePath(Paramstr(0)) + XVID_DECODER_DLL_FILENAME),
PAnsiChar(IncludeTrailingPathDelimiter(fSystemDir) + XVID_DECODER_DLL_FILENAME), False) then
begin
_Name := IncludeTrailingPathDelimiter(fSystemDir) + XVID_DECODER_OCX_FILENAME;
end
else
begin
_Name := ExtractFilePath(Paramstr(0)) + XVID_DECODER_OCX_FILENAME;
end;
aHandle := LoadLibrary(PAnsiChar(_Name));
try
if (aHandle >= 32) then
begin
aFunc := GetProcAddress(aHandle, "DllRegisterServer");
if Assigned(aFunc) then
aFunc;
end;
finally
FreeLibrary(aHandle);
end;
except //невозможно установить видео декодер
end;
переменные:
aSystemDirZ: array[0..2047] of Char;
fSystemDir: String;
aHandle: Cardinal;
aFunc: TRegFunc;
естественно, надо проверку наличия и версии установленного activex-а сделать перед копированием/регистрацией. если интересно - могу написать как. ну и права админа нужны для доступа к system32.
еще есть нюансы связанные с xvid, которые жить мешают немного...
удачи.
← →
kai © (2005-05-07 00:14) [5]type
TRegFunc = function : HResult; stdcall;
← →
ronyn (2005-05-07 02:09) [6]Kai, спасибо за помощь. Буду узнать о том, как делать проверку наличия и версии установленного activex-а перед копированием/регистрацией.Чем больше комментариев - тем лучше, т.к. я из начинающих многого не знаю ещё. Заранее благодарю.
← →
kai © (2005-05-07 11:29) [7]пример проверки зарегистрированного декодера xvid
_Reg := TRegistry.Create(KEY_READ);
try
_Reg.RootKey := HKEY_CLASSES_ROOT;
if _Reg.KeyExists(XVID_DECODER_PATH_KEY) then
begin
_Reg.OpenKey(XVID_DECODER_PATH_KEY, False);
_Name := _Reg.ReadString("");
if FileExists(_Name) then
begin
//тут можно проверить версию (а можно и не проверять ;) )
XVidInstRequired := False;
end;
end;
finally
_Reg.Free;
end;
константы:
XVID_DECODER_PATH_KEY = "\CLSID\{64697678-0000-0010-8000-00AA00389B71}\InprocServer32";
переменные:
_Reg: TRegistry;
_Name: String;
XVidInstRequired: Boolean;
← →
ronyn (2005-05-08 16:25) [8]Не получается почему -то. Говорит сто TRegistry - не задекларированный идентификатор.
← →
kai © (2005-05-08 17:10) [9]ronyn (08.05.05 16:25) [8]
interface
uses Registry;
← →
ronyn (2005-05-09 01:10) [10]Спасибо,kai, проверю - сообщу результат. очень благодарен.
← →
ronyn (2005-05-10 01:47) [11]Приложение запускается, но файлы DVD - MPEG2,1,bup, ifo не проигрываются. В чём может быть дело?
← →
kai © (2005-05-10 07:25) [12]ronyn (10.05.05 01:47) [11]
другие кодеки нужно наверно. какие - не знаю, я только с mpeg4 работал.
Страницы: 1 вся ветка
Форум: "Media";
Текущий архив: 2005.09.25;
Скачать: [xml.tar.bz2];
Память: 0.47 MB
Время: 0.04 c