Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2006.10.01;
Скачать: CL | DM;

Вниз

Как узнать время 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 вся ветка

Текущий архив: 2006.10.01;
Скачать: CL | DM;

Наверх




Память: 0.48 MB
Время: 0.098 c
2-1157997488
Adios
2006-09-11 21:58
2006.10.01
помогите разобраться


9-1136242899
aleccc
2006-01-03 02:01
2006.10.01
opengl


11-1133367210
_Simon_
2005-11-30 19:13
2006.10.01
RegKeyDelete &amp; SubKeys


1-1156172149
Fay
2006-08-21 18:55
2006.10.01
THintWindow.CalcHintRect


15-1157988739
Дураг
2006-09-11 19:32
2006.10.01
Два “тяжелых” вопроса на сегодняшнем кандминимуме.