Форум: "Media";
Текущий архив: 2006.10.01;
Скачать: [xml.tar.bz2];
ВнизКак узнать время bitrate... Найти похожие ветки
← →
Unitay © (2006-03-10 10:36) [0]Как узнать время, количество кадров и др. параметры таких видео-файлов как *.ogg *.ogm *.mkv средствами Delphi?
PS Как узнать количество аудио-потоков(количество звуковых дорожек) обычного avi файла?
← →
antonn © (2006-03-10 11:48) [1]поищи в поисковике Audio Tools Library, найдешь архив с классами, организующих работу с этими форматами (и даже больше). Под Delphi7 мог бы дать компонент, собраный на этих классах, упрощающий применение.
← →
AbrosimovA (2006-03-10 15:44) [2]
uses ..., MMSystem, VFW;
................................
var
hFile : PAVIFile;
nameFile : array[0..254] of Char;
infoFile : TAVIFileInfo;
infoVStream, infoAStream : TAVIStreamInfo;
VideoStream, AudioStream : PAVIStream;
Res: HResult;
tStream: string;
AudioFormat: TWAVEFORMATEX;
AudioSize: DWord;
begin
if OpenDialog1.Execute then begin
StrPCopy(nameFile,OpenDialog1.FileName);
{---------------------Получение данных файла--------------------}
AVIFileInit; // иниц. API
Res:=AVIFileOpen (hFile, nameFile, OF_READ, nil); // открытие файла
if Res<>S_OK then Exit;
AVIFileInfo (hFile, @infoFile, SizeOf(infoFile)); // получение инфы файла
with ListBox1.Items, infoFile do
begin
Clear;
Add("Файл: " + nameFile);
Add("");
Add("Число потоков: " + IntToStr(dwStreams));
end;
{------------------Получение данных видеопотока-----------------}
AVIStreamInit;
Res:=AVIFileGetStream(hFile, VideoStream, streamtypeVIDEO, OF_READ);
if Res<>S_OK then Exit;
AVIStreamInfo(VideoStream, @infoVStream, SizeOf(infoVStream));
{---------------------------------------------------------------}
with ListBox1.Items, infoVStream do
begin
case fccType of
STREAMTYPEVIDEO: tStream:="Видео (vids)";
end;
Add("");
Add("Тип потока: " + tStream);
Add("Ширина: "+IntToStr(rcFrame.Right)+" точек");
Add("Высота: "+IntToStr(rcFrame.Bottom)+" точек");
Add("Частота кадров: " + IntToStr(Round(dwRate/dwScale)) + " кадров/сек");
Add("");
end;
{------------------Получение данных аудиопотока------------------}
Res:=AVIFileGetStream(hFile, AudioStream, streamtypeAUDIO, OF_READ);
if Res<>S_OK then Exit;
AVIStreamInfo(AudioStream, @infoAStream, SizeOf(infoAStream));
{----------------------------------------------------------------}
with ListBox1.Items, infoAStream do
begin
case fccType of
streamtypeAUDIO: tStream:="Аудио (auds)";
end;
Add("");
Add("Тип потока: " + tStream);
Add("Длительность: " + TimeToStr(dwLength/(dwRate/dwScale) /
SecsPerDay));
end;
{----------------Дополнительные данные аудиопотока---------------}
AVIStreamFormatSize(AudioStream,0,@AudioSize);
AVIStreamReadFormat(AudioStream,0,@AudioFormat,@AudioSize);
with ListBox1.Items, AudioFormat do
begin
case nChannels of
1: Add("Канал звука: Моно");
2: Add("Канал звука: Стерео");
end;
Add("Частота: "+IntToStr(nSamplesPerSec div 1000)+" кГц");
Add("BPS: "+IntToStr(nAvgBytesPerSec div 1000));
Add("");
end;
AVIStreamRelease(VideoStream);
AVIStreamExit;
AVIFileRelease (hFile); // закрытие файла
AVIFileExit; // закрытие API
end;
Страницы: 1 вся ветка
Форум: "Media";
Текущий архив: 2006.10.01;
Скачать: [xml.tar.bz2];
Память: 0.46 MB
Время: 0.012 c