Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "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
6-1085955124
VID
2004-05-31 02:12
2004.08.01
Точное определение момента, когда можно отправлять текст в сокет


14-1089050937
Piter
2004-07-05 22:08
2004.08.01
Magic Forum beta4


8-1084647905
Agent[007]
2004-05-15 23:05
2004.08.01
MP3 в API


6-1086093802
BDyatel
2004-06-01 16:43
2004.08.01
При дисконекте клиента не уменьшается кол-во активных соеденений


14-1090117107
Думкин
2004-07-18 06:18
2004.08.01
С днем рождения! 18 июля





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский