Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Delphi: Звук, графика и видео > FPS достал!


Автор: NewDima 1.6.2008, 16:31
У меня плейер на DirectShow. Проблема вот в чем: я не могу определить правильно fps для любого видео (обязательно для avi).  Воспроизводятся субтитры, которые начинают отставать к концу длительного фильма на несколько секунд (около 5). Я не могу смириться с мыслью, что fps  надо ставить дробный. Как точно определить его? Пользуюсь автоматическим графом фильтров. А субтитры мне нужно синхронизировать с видео, но выводить их не в окно видео. Из-за неправильного fps у меня длительность фильма получается не 2:01:01, а 2:00:54 (в частном случае). В общем SoS, помогите пожалуйста.

Автор: NewDima 2.6.2008, 15:13
Да... помогли, познавательно. Форум вымерает, или уже вымер? Хотя, кто мне ответит, здесь же никого нет

Автор: Qu1nt 2.6.2008, 16:36
Примерно так можно опередить FPS avi`шки:
Код

function ReadAviFPS(const FileName: string): Double;
var
  FileHandle : Integer;
  Microsec   : Integer;
  FileExt    : string[5];
begin
  Result := - 1;
  if not FileExists(FileName) then
    Exit;
  FileHandle := FileOpen(FileName, fmOpenRead);
  FileSeek(FileHandle, 32, 0);
  FileRead(FileHandle, Microsec, 4);
  FileClose(FileHandle);
  Result := 1000000 / Microsec;
end;

procedure TForm1.Button1Click(Sender: TObject);
const
  FileName = 'c:\super.avi';
begin
  ShowMessage(FloatToStrF(ReadAviFPS(FileName), ffGeneral, 5, 2));
end;

Автор: mdsoul 3.6.2008, 17:33
Дмитрий, не подскажите как вы определяете длительность видео-файлов? неважно с какой точностью. у меня тот же вопрос стоит

Автор: NewDima 4.6.2008, 07:24
Qu1nt, спасибо за вариант, попробую, отпишусь.
mdsoul, длительность в секундах равна общему числу фреймов видео деленому на fps

Автор: mdsoul 4.6.2008, 15:45
Да, эта незамысловатая формула наврядли вызовет затруднения.. вопрос в том - откуда взять количество фреймов?

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)