Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2006.01.01;
Скачать: CL | DM;

Вниз

-= .AVI видео и информация о нем =-   Найти похожие ветки 

 
_DemiK   (2005-01-16 03:59) [0]

В видео файлах есть что-то типо тегов где имеется инфа о артисте и т.д. Как их от туда всех извлечь, как, к примеру, теги из МР3?
Спасибо!


 
Antonn ©   (2005-01-16 05:12) [1]


> инфа о артисте

разве такие есть? есть только "технические" характеристики.


 
_DemiK   (2005-01-16 15:04) [2]

Удалено модератором
Примечание: Предупреждение тебе.


 
Antonn ©   (2005-01-16 15:14) [3]

_DemiK   (16.01.05 15:04) [2]
За базаром... Сначала научись нормально вопрос ставить. Вот как найдешь информацию об артисте в *.avi тогда и ори.


 
cydvb   (2005-04-14 11:50) [4]

инфа об артисте есть, во всяком случае когда в адоп премьере делаеш аувишку можеш запихивать свою инфу, и винда её с удовольствием показывает в свойствах.


 
Black&White   (2005-07-11 12:47) [5]

Вот здесь есть то о чем ты спрашиваешь!
http://abcavi.kibi.ru/index_rus.htm
Называется  поддержка расширенного набора INFO тэгов (Extended INFO tags)


есть только "технические" характеристики.


Встречное предложение
помогите, пожалуйста, извлечь техническую информацию из заголовка  AVI файл


 
Киби   (2005-07-19 17:15) [6]

http://abcavi.kibi.ru/docs/avi_bitrate.htm - там как раз про вычисление характеристик AVI файла написано.

К вопросу о всяко-разных способах изменения информации в AVI тэгах всё-таки лучше зайти непосредственно на страницу для разработчиков:  http://abcavi.kibi.ru/developer.htm

Там и примеры есть с исходными кодами, и DLL для работы с AVI файлами, и технические описания.


 
Simon ©   (2005-07-23 12:27) [7]

А может кто знает как проделать тоже самое но с VOB или IFO файлами?
Очень бы хотелось почитать...
Заранее благодарен.


 
NailMan ©   (2005-07-25 11:26) [8]

извлечь тех-информацию можно распотрошив заголовок AVI, а сделать это грамотно можно с помощью DirectX SDK, там все подробнейше расписано впро все стандартные секции заголовков RIFF - медиафайлов(AVI, WAV etc)

---
P.L.U.R. and WBR, NailMan aka 2:5020/3337.13


 
NailMan ©   (2005-07-25 11:32) [9]

[8] NailMan ©   (25.07.05 11:26)

нашел в закромах родины своего плеера. Вырезано из контекста, комментарии излишни. Часто встречаются лишние операции move(PD^,FCC,4); - это для отладки - видно где я стою в файле если заголовок нестандартный(помогает написать распознавание левой секции и ее обработать в дальнейшем).

Function ReadAVIHeader(Const FName:String;Var Avi:TAviInfo):Cardinal;
var f:Integer;
    p,PD:pointer;
    NulDD,i,leng:Cardinal;
audstreams:dword;
    FCC,FCC2 : Array[0..3] of char;
    MH : ^TAVIMainHeader;
    SH : ^TAVIStreamHeader;
   VFH : ^TVidsFormat;
   WVH : ^TWaveFormatEx;

begin
Result:=1; //По умолчанию - AVIVideo
Zeromemory(@AVi,sizeof(TAviInfo));

if FileAutoDetection then avi.CRC:=getfilecrc(fname);

F:=Fileopen(fname,fmopenread or fmsharedenynone);

 fileread(f,fcc,4);   //RIFF
 fileread(f,nuldd,4);
 fileread(f,fcc2,4);  //AVI_

 if (fcc=fcc_riff) and (fcc2<>FCC_AVI) then
  begin
    result:=0;
   Fileclose(F);
   exit;
  end;

 if (fcc<>fcc_riff) then
   begin
    If FCC=FCC_mpeg then result:=2
     else
     result:=0;
    Fileclose(F);
    exit;
   end;

 Fileread(f,fcc,4);  //LIST
 fileread(f,nuldd,4);
  getmem(p,nuldd+1024);
   fileread(f,p^,nuldd);
 fileclose(f);

 PD:=P; //stay on "hdrl"
 inc(DWORD(PD),4); //stay on "avih"
  MH:=PD;
  AVi.AVIHeader.dwMicroSecPerFrame:=MH^.dwMicroSecPerFrame;
  avi.AVIHeader.dwMaxBytesPerSec:=mh^.dwMaxBytesPerSec;
  avi.AVIHeader.dwFlags:=mh^.dwFlags;
  avi.AVIHeader.dwTotalFrames:=mh^.dwTotalFrames;
  avi.AVIHeader.dwStreams:=mh^.dwStreams;
 inc(DWORD(PD),sizeof(TAVIMainHeader)); //Stay on LIST
 audstreams:=0;
    move(PD^,FCC,4);
 For i:=0 to avi.AVIHeader.dwStreams-1 do
  Begin
   inc(DWORD(PD),4); //stay on "strl" length
    move(PD^,FCC,4);
   inc(DWORD(PD),4); //Stay on "strl"
    move(PD^,FCC,4);
   inc(DWORD(PD),4); //stay on "strh"
    move(PD^,FCC,4);
   SH:=PD;
   if SH^.fccType=ConvertFCCToDWORD(FCC_vids) then
    begin
     avi.vids.st:=sh^;
     inc(DWORD(PD),sh^.cb+8); //stay on "strf"
      move(PD^,FCC,4);
     inc(DWORD(PD),4); //stay on length "strf"
      move(PD^,leng,4);
     inc(DWORD(PD),4); //stay on "strf" data
     VFH:=PD;
     avi.vids.FMT.BMfmt:=VFH^.BMfmt;
     if leng>56 then
       avi.vids.FMT.DVFmt:=VFH^.DVFmt;
     inc(DWORD(PD),leng);//stay on LIST
     move(PD^,FCC,4);
    end;

    if SH^.fccType=ConvertFCCToDWORD("auds") then begin
     avi.auds[audstreams].st:=SH^;
      inc(DWORD(PD),sh^.cb+8); //stay on "strf"
      move(PD^,FCC,4);
     inc(DWORD(PD),4); //stay on length "strf"
      move(PD^,leng,4);
     inc(DWORD(PD),4); //stay on "strf" data
     WVH:=PD;
     avi.auds[audstreams].WAVFmt:=WVH^;
     inc(DWORD(PD),leng);
     inc(audstreams);
    end;
  Move(PD^,FCC,4);//Stay on JUNK or "strn"
  If (FCC=FCC_JUNK) or (FCC=FCC_strn) or (FCC=FCC_strd) or (FCC=FCC_indx) then
   begin
     inc(DWORD(PD),4);
      move(PD^,nuldd,4);
      If nuldd mod 2<>0 then inc(nuldd);
      inc(DWORD(PD),4+NULDD);
      move(PD^,FCC,4);
   end;
  End;
 avi.audstreams:=audstreams;
freemem(p);
end;


---
P.L.U.R. and WBR, NailMan aka 2:5020/3337.13


 
NailMan ©   (2005-07-25 11:34) [10]

описания типов и констант:

type
        FCC_Type = array[0..3] of char;
Const

        FCC_RIFF : FCC_Type = "RIFF";
        FCC_hdrl : FCC_Type = "hdrl";
        FCC_AVI  : FCC_Type = "AVI ";
        FCC_avih : FCC_Type = "avih";
        FCC_strl : FCC_Type = "strl";
        FCC_strh : FCC_Type = "strh";
        FCC_strf : FCC_Type = "strf";
        FCC_strd : FCC_Type = "strd";
        FCC_strn : FCC_Type = "strn";
        FCC_MOVI : FCC_Type = "movi";
        FCC_LIST : FCC_Type = "LIST";
        FCC_JUNK : FCC_Type = "JUNK";
        FCC_indx : FCC_Type = "indx";
        FCC_vids : FCC_Type = "vids";
        FCC_MPEG : FCC_Type = chr($0)+ chr($0) + chr($01)+ chr($BA);

TYPE
           TFOURCC = array[0..3] of char;    

           TVidsFormat = record
                 BMfmt : TBITMAPINFOHEADER;
                 DVFmt : TDVINFO;
           end;

          TVideoStream = record
                    st : TAVIStreamHeader;
                   FMT : TVidsFormat;
          end;

          TAudioStream = record
                    st : TAVIStreamHeader;
                WAVFmt : TWaveFormatEx;
          end;

                    TAviInfo = record
                   AVIHeader : TAVIMainHeader;
                  audstreams : DWORD;
                        vids : TvideoStream;
                        auds : Array[0..4] of TAudioStream;
                         CRC : Int64;
                    end;

Function ConvertFCCToDWORD(fcc:FCC_Type):dword;
begin
move(fcc,result,4);
end;



---
P.L.U.R. and WBR, NailMan aka 2:5020/3337.13



Страницы: 1 вся ветка

Текущий архив: 2006.01.01;
Скачать: CL | DM;

Наверх




Память: 0.5 MB
Время: 0.025 c
14-1133884089
Torry
2005-12-06 18:48
2006.01.01
Delphi 2006 - Danny Thorpe leaving Borland


14-1133786020
Kerk
2005-12-05 15:33
2006.01.01
Поисковая система Kazzoom вступает в гонку с Yahoo! и Google


2-1134727375
yk
2005-12-16 13:02
2006.01.01
Как определить выходные дни


14-1133779473
k2
2005-12-05 13:44
2006.01.01
Математика для детей.


11-1115879438
Thaddy
2005-05-12 10:30
2006.01.01
Menu bug