Карта сайта Kansoftware
НОВОСТИУСЛУГИРЕШЕНИЯКОНТАКТЫ
KANSoftWare

Как узнать число кадров AVI файла, и выяснить как долго будет проигрываться этот файл

Delphi , Мультимедиа , Видео

Как узнать число кадров AVI файла, и выяснить как долго будет проигрываться этот файл

Звонок в фирму:
- Сколько байтов в вашем компьютере?
- ??? Сколько надо, столько и будет!
- А сколько надо для мультивидео?


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;

Пример классического приложения Delphi!

Чтобы найти количество кадров (т.е., общее количество видеокадров) в файле AVI, можно использовать свойство Length компонента TMediaPlayer, которое возвращает длину файла в указанном формате времени.

В этом случае код устанавливает свойство TimeFormat на tfFrames, что tells Delphi выражать длину файла в кадрах. Затем он отображает сообщение с помощью функции ShowMessage.

Однако, этот подход имеет некоторые ограничения:

  1. Свойство Length возвращает целочисленное значение, представляющее общее количество кадров, но не предоставляет информации о частоте кадров (например, 30 FPS).
  2. Свойство Length доступно только при воспроизведении локального файла; если вы работаете с потоком из сети или файлом, расположенным на удаленном сервере, этот подход не будет работать.

Чтобы получить оценку времени воспроизведения AVI-файла, вам нужно знать частоту кадров (FPS) и общее количество кадров. Вы можете использовать свойство Length в сочетании с частотой кадров для расчета времени воспроизведения:

  1. Получите частоту кадров из заголовка или метаданных AVI-файла.
  2. Умножьте общее количество кадров на частоту кадров, чтобы получить общее время воспроизведения в миллисекундах.

Вот обновленная версия кода, которая демонстрирует, как это сделать:

procedure TForm1.Button1Click(Sender: TObject);
begin
  MediaPlayer1.TimeFormat := tfFrames;
  ShowMessage('Number of frames = ' + IntToStr(MediaPlayer1.Length));

  // Пусть частота кадров будет равна 30 FPS (поменяйте, если вам нужно)
  const FRAME_RATE: integer = 30;

  // Рассчитайте время воспроизведения в миллисекундах
  var playbackTime: integer := MediaPlayer1.Length * FRAME_RATE;
  ShowMessage('Playback time (ms) = ' + IntToStr(playbackTime));
end;

Обратите внимание, что это только оценка, так как фактическое время воспроизведения может варьироваться в зависимости от факторов, таких как загрузка CPU, конфигурация системы и конкретного медиаплеера.

В статье описывается способ determination количества кадров в файле AVI и вычисления времени, необходимого для его воспроизведения, с помощью программного кода на языке Delphi.


Комментарии и вопросы

Получайте свежие новости и обновления по Object Pascal, Delphi и Lazarus прямо в свой смартфон. Подпишитесь на наш Telegram-канал delphi_kansoftware и будьте в курсе последних тенденций в разработке под Linux, Windows, Android и iOS




Материалы статей собраны из открытых источников, владелец сайта не претендует на авторство. Там где авторство установить не удалось, материал подаётся без имени автора. В случае если Вы считаете, что Ваши права нарушены, пожалуйста, свяжитесь с владельцем сайта.


:: Главная :: Видео ::


реклама


©KANSoftWare (разработка программного обеспечения, создание программ, создание интерактивных сайтов), 2007
Top.Mail.Ru

Время компиляции файла: 2024-08-19 13:29:56
2024-11-21 12:06:43/0.0054500102996826/1