Текущий архив: 2007.09.09;
Скачать: CL | DM;
Вниз
Продолжительность MP3 Найти похожие ветки
← →
Kikoz (2007-08-18 14:32) [0]Ув.. мастера каким способом можно получить продолжительность mp3 в минутах ?
← →
Dimaxx © (2007-08-18 19:26) [1]Длительность (сек)=Размер файла/(Битрейт*1000/8)
← →
DrPass © (2007-08-18 20:20) [2]
> Длительность (сек)=Размер файла/(Битрейт*1000/8)
Ага. Особенно для mp3...
← →
Ricks © (2007-08-18 21:27) [3]Ищи в интернете по mp3 формату. Длительность можно определить, прочитав заголовок файла (только его еще нужно найти)
← →
Lacmus © (2007-08-19 00:59) [4]Наверно необычный способ (через Shell), возвращает время в секундах
uses
ActiveX, ComObj, ShlObj;
const
FMTID_Audio: TGUID = "{64440490-4c8b-11d1-8b70-080036b11a03}";
PIDASI_FORMAT = $00000002;
PIDASI_TIMELENGTH = $00000003;
PIDASI_AVG_DATA_RATE = $00000004;
PIDASI_SAMPLE_RATE = $00000005;
PIDASI_SAMPLE_SIZE = $00000006;
PIDASI_CHANNEL_COUNT = $00000007;
VT_UI8 = 21;
function GetAudioTimeLength(const aFileName: string): Integer;
var
dwFlags, dwNumChars: DWord;
DesktopFolder: IShellFolder;
ShellFolder2: IShellFolder2;
MAlloc: IMAlloc;
DirPIDL, FilePIDL: PItemIDList;
COLUMNID: SHCOLUMNID;
PropValue: Variant;
begin
dwFlags := 0;
OleCheck(SHGetDesktopFolder(DesktopFolder));
OleCheck(DesktopFolder.ParseDisplayName(0, nil, PWideChar(WideString(ExtractFilePath(aFileName))),
dwNumChars, DirPIDL, dwFlags));
OleCheck(DesktopFolder.BindToObject(DirPIDL, nil, IID_IShellFolder2, ShellFolder2));
OleCheck(ShellFolder2.ParseDisplayName(0, nil, PWideChar(WideString(ExtractFileName(aFileName))),
dwNumChars, FilePIDL, dwFlags));
COLUMNID.fmtid := FMTID_Audio;
COLUMNID.pid := PIDASI_TIMELENGTH;
OleCheck(ShellFolder2.GetDetailsEx(FilePIDL, COLUMNID, @PropValue));
OleCheck(SHGetMAlloc(MAlloc));
MAlloc.Free(DirPIDL);
MAlloc.Free(FilePIDL);
case TVarData(PropValue).VType of
VT_UI4: Result := TVarData(PropValue).VInt64 div 1000;
VT_UI8: Result := TVarData(PropValue).VInt64 div 10000000;
else
Result := 0
end
end;
procedure TForm41.Button2Click(Sender: TObject);
begin
if OpenDialog1.Execute then
ShowMessage(IntToStr(GetAudioTimeLength(OpenDialog1.FileName)))
end;
← →
Zeqfreed © (2007-08-19 01:01) [5]> Ricks © (18.08.07 21:27) [3]
В подавляющем большинстве случаев, заголовок размещен в начале файла. Т.к. разработчики все-таки понимают бредовость его размещения где-либо еще.
← →
Dimaxx © (2007-08-19 13:22) [6]
> Ага. Особенно для mp3...
Проверь. Как ни странно, но совпадает...
← →
Virgo_Style © (2007-08-19 13:31) [7]Dimaxx © (19.08.07 13:22) [6]
И особенно для VBR
← →
Dimaxx © (2007-08-19 16:22) [8]
> И особенно для VBR
VBR частный случай и в вопросе о нем ни слова.
← →
Virgo_Style © (2007-08-19 19:01) [9]Dimaxx © (19.08.07 16:22) [8]
в вопросе отсутствуют тысячи, а то и миллионы слов
← →
Dimaxx © (2007-08-19 20:16) [10]
> в вопросе отсутствуют тысячи, а то и миллионы слов
Ты отвечай на поставленный вопрос, а не к словам цепляйся. Не знаешь - лучше промолчи...
← →
DrPass © (2007-08-19 20:19) [11]
> Dimaxx © (19.08.07 16:22) [8]
>
> > И особенно для VBR
>
> VBR частный случай и в вопросе о нем ни слова.
Тем не менее, этот частный случай делает неприемлемым метод решения. Зачем нужен алгоритм, который иногда работает, а иногда не работает? Тем более что и в остальных случаях он покажет только приблизительный результат - в mp3 есть еще куча информации помимо собственно потока данных.
И вообще неясно, зачем вычитывать битрейт из файла и высчитывать его длительность, если оттуда собственно длительность и так можно вычитать?
← →
antonn © (2007-08-19 20:44) [12]Audio Tools Library 1.9
Модули для определения параметров мультимедийных файлов (от размера, до длительности, битрейта и тд), их тегов. Для каждого модуля есть пример использования.
MPEGaudio 1.7 - for manipulating with MPEG audio file information
ID3v1 1.0 - for manipulating with ID3v1 tags
ID3v2 1.7 - for manipulating with ID3v2 tags
WAVfile 1.2 - for extracting information from WAV file header
OggVorbis 1.6 - for manipulating with Ogg Vorbis file information
MPEGplus 1.6 - for manipulating with MPEGplus file information
TwinVQ 1.1 - for extracting information from TwinVQ file header
Monkey 1.4 - for manipulating with Monkey"s Audio file information
APEtag 1.0 - for manipulating with APE tags
WMAfile 1.0 - for extracting information from WMA file header
FLACfile 1.0 - for manipulating with FLAC file information
AACfile 1.0 - for manipulating with AAC file information
CDAtrack 1.0 - for getting information for CDA track
http://desksoft.ru/index.php?downloads=files&id=8 (150 кб)
← →
EagleEye (2007-08-19 20:46) [13]//Milliseconds
function GetMP3Length(XFileName : string): Longint;
var XMediaPlayer : TMediaPlayer;
begin
XMediaPlayer := TMediaPlayer.CreateParented(Application.MainForm.Handle);
XMediaPlayer.Visible := false;
XMediaPlayer.FileName := XFileName;
XMediaPlayer.TimeFormat := tfMilliseconds;
XMediaPlayer.Open;
Result := XMediaPlayer.Length;
XMediaPlayer.Free;
end;
Страницы: 1 вся ветка
Текущий архив: 2007.09.09;
Скачать: CL | DM;
Память: 0.48 MB
Время: 0.03 c