Как узнать число кадров 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.
Однако, этот подход имеет некоторые ограничения:
Свойство Length возвращает целочисленное значение, представляющее общее количество кадров, но не предоставляет информации о частоте кадров (например, 30 FPS).
Свойство Length доступно только при воспроизведении локального файла; если вы работаете с потоком из сети или файлом, расположенным на удаленном сервере, этот подход не будет работать.
Чтобы получить оценку времени воспроизведения AVI-файла, вам нужно знать частоту кадров (FPS) и общее количество кадров. Вы можете использовать свойство Length в сочетании с частотой кадров для расчета времени воспроизведения:
Получите частоту кадров из заголовка или метаданных AVI-файла.
Умножьте общее количество кадров на частоту кадров, чтобы получить общее время воспроизведения в миллисекундах.
Вот обновленная версия кода, которая демонстрирует, как это сделать:
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
Материалы статей собраны из открытых источников, владелец сайта не претендует на авторство. Там где авторство установить не удалось, материал подаётся без имени автора. В случае если Вы считаете, что Ваши права нарушены, пожалуйста, свяжитесь с владельцем сайта.