Jak moge sprawdzić długośc pliku audio/video (GGSS) bez używania komponentu MediaPlayer??
0
0
Sciagasz opis pliku AVI, szukasz jak wyglada header:
typedef struct {
DWORD dwMicroSecPerFrame;
DWORD dwMaxBytesPerSec;
DWORD dwReserved1;
DWORD dwFlags;
DWORD dwTotalFrames;
DWORD dwInitialFrames;
DWORD dwStreams;
DWORD dwSuggestedBufferSize;
DWORD dwWidth;
DWORD dwHeight;
DWORD dwScale;
DWORD dwRate;
DWORD dwStart;
DWORD dwLength;
} MainAVIHeader;
piszesz odpowiednia procedura, ktora go odczyta
procedure TForm1.Button1Click(Sender: TObject);
type
TMainAviHeader = packed(?) record
dwMicroSecPerFrame: LongWord;
dwMaxBytesPerSec: LongWord;
dwReserved1: LongWord;
dwFlags: LongWord;
dwTotalFrames: LongWord;
dwInitialFrames: LongWord;
dwStreams: LongWord;
dwSuggestedBufferSize: LongWord;
dwWidth: LongWord;
dwHeight: LongWord;
dwScale: LongWord;
dwRate: LongWord;
dwStart: LongWord;
dwLength: LongWord;
end;
var
AviFile: file;
Header: TMainAviHeader;
begin
AssignFile(AviFile, 'film.avi');
Reset(AviFile);
BlockRead(AviFile, Header, SizeOf(Header));
CloseFile(AviFile);
end;
i w rekordzie Header masz zapisane informacje o filmie
0
tu tez masz odczytywanie.
czas masz w "ostringtime"
var
oFps:longint;
oTime:TDatetime;
oWidth:integer;
oHeight:integer;
oTotalFrames:integer;
oHandler1:FourCC;
oHandler2:FourCC;
oFilesize:longword;
oCodec:string;
oStringTime:string;
oerror:integer;
function Execute(filename:string):integer;
var
AVI : TAVIMainHeader ;
DVINFO : TDVINFO ;
unknownR:TaviUnknownrecord;
avi2:TsecondAvi;
F : File;
t:integer;
g,m,s:string;
begin
ofps:=0;
otime:=0;
oWidth:=0;
oHeight:=0;
oTotalFrames:=0;
oHandler1:=' ';
oHandler2:=' ';
oFilesize:=0;
ocodec:='Unknown';
if not fileexists(FileName)then
begin
oerror:=1;
Execute:=1;
exit;
end;
AssignFile(F, FileName);
filemode:=0;
Reset(F,1);
BlockRead(F, DVINFO, SizeOf(DVINFO));
if uppercase(DVINFO.dwDVAAuxSrc)<>'RIFF'then
begin
oerror:=2;
Execute:=2;
exit;
end;
if uppercase(DVINFO.dwDVAAuxSrc1)<>'AVI 'then
begin
oError:=2;
Execute:=2;
exit;
end;
BlockRead(F, AVI, SizeOf(AVI));
Blockread(f, UnknownR, Sizeof(unknownR));
Blockread(F, avi2, sizeof(avi2));
oFileSize:=system.filesize(f);
Blockread(f, UnknownR, Sizeof(unknownR));
Blockread(f, UnknownR, Sizeof(unknownR));
owidth:=avi.Width;
oheight:=avi.Height;
oTotalFrames:=avi2.Length;
ofps:=avi2.Rate div avi2.Scale;
t:=round(avi2.Length div(avi2.Rate div avi2.Scale));
g:=inttostr(t div 3600);
m:=inttostr((t-(strtoint(g)*3600)) div 60);
s:=inttostr(t mod 60);
if length(g)=1 then g:='0'+g;
if length(m)=1 then m:='0'+m;
if length(s)=1 then s:='0'+s;
oStringTime:=g+':'+m+':'+s;
oTime:=strtotime(ostringtime);
ohandler1:=avi2.Handler;
ohandler2:=Unknownr.f4;
oCodec:=getCodec(ohandler2);
CloseFile(F);
end;
0
No tak fajne rzeczy tylko ze do działa jedynie do filmów a co z muzyka?
0
Tak samo http://myfileformats.com/ i do roboty.