Форум: "Media";
Текущий архив: 2004.12.12;
Скачать: [xml.tar.bz2];
ВнизДлительность музыкальных и видеофайлов Найти похожие ветки
← →
KADAN © (2004-09-10 23:17) [0]Доброго здравия всем. Я написал функцию, можно сказать cписал из медиаплеера, но она это делает очень медленно, приходится открывать файл (MCI_OPEN), а видеофайлы открываются долго. Вопрос, можно ли это провернуть как-то побыстрее?
Код:function GetDuration(Filename:string):string;
var OpenParm: TMCI_Open_Parms;
StatusParm: TMCI_Status_Parms;
SetParm:TMCI_Set_Parms;
Error:Cardinal;
errstring:string;
begin
setlength(errstring,256);
FillChar(OpenParm, SizeOf(TMCI_Open_Parms), 0);
OpenParm.lpstrDeviceType := "";
OpenParm.lpstrElementName := PChar(Filename);
Error := mciSendCommand(0, mci_Open, mci_wait or MCI_OPEN_ELEMENT, Longint(@OpenParm));
if not boolean(error) then begin
SetParm.dwTimeFormat:=longint(tfMilliseconds);
mciSendCommand( OpenParm.wDeviceID, mci_Set, mci_Set_Time_Format, Longint(@SetParm)); //извиняюсь, что без проверки Error
StatusParm.dwItem := mci_Status_Length;
Error := mciSendCommand(OpenParm.wDeviceID, mci_Status, mci_wait or mci_status_item, Longint(@StatusParm))
end else begin
mciGetErrorString(error,pchar(errstring), 255);
showmessage(errstring);
result:="00:00:00";
exit;
end;
if boolean(error) then begin
mciGetErrorString(error,pchar(errstring), 255);
showmessage(errstring);
result:="00:00:00";
end else result:=inttostr(StatusParm.dwReturn div (1000*60*60))+":"+inttostr((StatusParm.dwReturn mod (1000*60*60)) div (1000*60))+":"+inttostr((StatusParm.dwReturn mod (1000*60)) div 1000);
mciSendCommand( OpenParm.wDeviceID, mci_Close, 0, 0);
end;
← →
Cardinal © (2004-09-11 20:24) [1]Привет. Код не мой, но, может, тебе он чем-нибудь да поможет:
procedure TForm1.Button1Click(Sender: TObject);
begin
MediaPlayer1.TimeFormat := tfFrames;
ShowMessage("Number of frames = " + IntToStr(MediaPlayer1.Length));
MediaPlayer1.TimeFormat := tfMilliseconds;
ShowMessage("Number of milliseconds = " + IntToStr(MediaPlayer1.Length));
end;
---
--
← →
Рыба © (2004-09-11 22:10) [2]По сабжу: читать заголовки файлов. В большинстве должна прописываться длительность. Для каждого формата файлов свой формат заголовков. Так что читай информацию по форматам.
А вот это
>result:=inttostr(StatusParm.dwReturn div (1000*60*60))+":"+inttostr((StatusParm.dwReturn mod (1000*60*60)) div (1000*60))+":"+inttostr((StatusParm.dwReturn mod (1000*60)) div 1000);
Лучше заменить на
with StatusParm do
Result := Format(%d:%d:%d" [dwReturn div 3600000, (dwReturn mod 3600000) div 6000, (dwReturn mod 60000) div 1000]);
← →
Рыба © (2004-09-11 22:24) [3]Вот полезная ссылка
http://www.nvkz.kuzbass.net/vitalicite/mp3_descr_rus.htm
← →
Рыба © (2004-09-11 22:28) [4]Забыл запятую
Result := Format(%d:%d:%d",
← →
Рыба © (2004-09-11 22:29) [5]И кавычку :))))
Result := Format("%d:%d:%d",
Поря на пеньсию...
← →
KADAN © (2004-09-12 22:01) [6]Что неужели никто не знает ничего лучшего?
to Cardinal, Рыба: читайте вопрос.
← →
KADAN © (2004-09-13 11:19) [7]Рыба, прошу прощения, погорячился.
> читать заголовки файлов
оказалось полезно
Страницы: 1 вся ветка
Форум: "Media";
Текущий архив: 2004.12.12;
Скачать: [xml.tar.bz2];
Память: 0.46 MB
Время: 0.043 c