Форум: "Media";
Текущий архив: 2006.01.01;
Скачать: [xml.tar.bz2];
Вниз-= .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 вся ветка
Форум: "Media";
Текущий архив: 2006.01.01;
Скачать: [xml.tar.bz2];
Память: 0.49 MB
Время: 0.018 c