Форум: "Media";
Текущий архив: 2004.08.01;
Скачать: [xml.tar.bz2];
Внизкодеки Найти похожие ветки
← →
Senator (2004-05-14 16:03) [0]Кто подскажет, как узнать какими кодеками (видео, аудио) был сжат avi файл ??
← →
NailMan © (2004-05-14 16:18) [1]Получаешь FCC видеопотока(проще всего вытащить его напрямую из заголовка ручками) и юзаешь такую функцию:
Function GetVideoCodec(FCC:DWORD):String;
label _exit;
var pSysDevEnum : ICreateDevEnum;
pEnumCat : IEnumMoniker;
pMoniker : IMoniker;
pPropBag : IPropertyBag;
cFetched : DWORD;
FCCStr : String;
OLEvar : OLEVariant;
n : string;
FCCH: TFOURCC;
begin
result:="Незарегистированный кодек";
move(FCC,FCCH,4);
FCCStr:=string(FCCH);
pSysDevEnum:=nil;
pEnumCat:=nil;
pPropBag:=nil;
pMoniker:=nil;
CoCreateInstance(CLSID_SystemDeviceEnum, nil, CLSCTX_INPROC, IID_ICreateDevEnum,
pSysDevEnum);
if not assigned(pSysDevEnum) then exit;
pSysDevEnum.CreateClassEnumerator(CLSID_VideoCompressorCategory, pEnumCat, 0);
while pEnumCat.Next(1, pMoniker, @cFetched) = S_OK do
begin
pMoniker.BindToStorage(nil, nil, IID_IPropertyBag, pPropBag);
pPropBag.Read("FccHandler", OLEVar, nil);
N:=VarToStr(OLEVar);
If uppercase(n)=uppercase(FCCstr) then
begin
pPropBag.Read("FriendlyName", OLEvar, nil);
result:=VarToStr(OLEVar);
goto _exit;
end;
OLEVar:="";
pPropBag:=nil;
pMoniker:=nil;
end;
_exit:
pPropBag:=nil;
pMoniker:=nil;
pEnumCat:=nil;
pSysDevEnum:=nil;
end;
Точно также получаешь индентификатор кодека из заголовка AVI(ручками, ручками) и юзаешь эту функцию:Function GetAudioCodec(AcmId:DWORD):String;
label _exit;
var pSysDevEnum : ICreateDevEnum;
pEnumCat : IEnumMoniker;
pMoniker : IMoniker;
pPropBag : IPropertyBag;
cFetched : DWORD;
OLEvar,
olevar2 : OLEVariant;
VM : TVariantManager;
NN : DWORD;
begin
result:="Неизвестный кодек";
pSysDevEnum:=nil;
pEnumCat:=nil;
pPropBag:=nil;
pMoniker:=nil;
GetVariantManager(VM);
CoCreateInstance(CLSID_SystemDeviceEnum, nil, CLSCTX_INPROC, IID_ICreateDevEnum,
pSysDevEnum);
if not assigned(pSysDevEnum) then exit;
pSysDevEnum.CreateClassEnumerator(CLSID_AudioCompressorCategory, pEnumCat, 0);
while pEnumCat.Next(1, pMoniker, @cFetched) = S_OK do
begin
pMoniker.BindToStorage(nil, nil, IID_IPropertyBag, pPropBag);
pPropBag.Read("AcmId", OLEVar, nil);
if VarIsType(OLEVar,[varLongWord,varInteger]) then
Begin
NN:=VM.VarToInt(OLEVar);
If AcmId = NN then
begin
pPropBag.Read("FriendlyName", OLEvar2, nil);
result:=VarToStr(OLEVar2);
goto _exit;
end;
End;
pPropBag:=nil;
pMoniker:=nil;
end;
_exit:
pPropBag:=nil;
pMoniker:=nil;
pEnumCat:=nil;
pSysDevEnum:=nil;
end;
---
WBR, NailMan aka 2:5020/3337.13
← →
NailMan © (2004-05-14 16:26) [2]Формат AVI(RIFF) лучше всего описан в SDK("AVI RIFF File Reference").
Вот выдержка(*.DOC) из этой части - разбирайся что к чему.
http://www.cyborghome.ru/nailman/zakroma/AVI_RIFF_Format.doc
В модуле MMSystem.Pas все структуры заголовков AVI есть.
---
WBR, NailMan aka 2:5020/3337.13
← →
Senator (2004-05-14 16:46) [3]ок, пасибо, ща почитаю
Страницы: 1 вся ветка
Форум: "Media";
Текущий архив: 2004.08.01;
Скачать: [xml.tar.bz2];
Память: 0.46 MB
Время: 0.034 c