При работе с видеофайлами часто бывает необходимо программно определить их продолжительность. FFmpeg, мощная мультимедийная платформа, предоставляет различные методы для извлечения продолжительности видео. В этой статье мы рассмотрим несколько подходов к получению продолжительности видео с помощью FFmpeg, а также примеры кода для каждого метода.
Метод 1: использование FFprobe
FFmpeg поставляется в комплекте с инструментом командной строки под названием FFprobe, который может извлекать подробную информацию о мультимедийных файлах. Чтобы получить продолжительность видео с помощью FFprobe, выполните следующую команду:
ffprobe -v error -show_entries format=duration -of default=noprint_wrappers=1:nokey=1 input.mp4
Эта команда выведет продолжительность видео в секундах.
Метод 2: использование командной строки FFmpeg
Другой подход — использовать FFmpeg непосредственно из интерфейса командной строки. Выполните следующую команду, чтобы получить продолжительность видео:
ffmpeg -i input.mp4 2>&1 | grep Duration | cut -d ' ' -f 4 | sed s/,//
Эта команда извлечет продолжительность из выходных данных FFmpeg и отобразит ее в формате «ЧЧ:ММ:СС.миллисекунды».
Метод 3: использование FFmpeg в Python
Если вы предпочитаете использовать Python, вы можете использовать привязки FFmpeg для программного получения продолжительности видео. Установите пакет ffmpeg-pythonи используйте следующий фрагмент кода:
import ffmpeg
def get_video_duration(filename):
probe = ffmpeg.probe(filename)
duration = float(probe['format']['duration'])
return duration
video_duration = get_video_duration('input.mp4')
print(video_duration)
Этот фрагмент кода использует библиотеку ffmpeg-pythonдля проверки видеофайла и определения продолжительности.
Метод 4: использование FFmpeg в Java
Для разработчиков Java вы можете использовать библиотеку FFmpeg через оболочку Java, такую как Xuggler или JavaCV. Вот пример использования JavaCV:
import org.bytedeco.javacv.FFmpegFrameGrabber;
import org.bytedeco.javacv.FrameGrabber;
public class VideoDurationExtractor {
public static void main(String[] args) {
FFmpegFrameGrabber grabber = new FFmpegFrameGrabber("input.mp4");
try {
grabber.start();
int duration = grabber.getLengthInTime() / 1000000; // Convert to seconds
System.out.println(duration);
} catch (FrameGrabber.Exception e) {
e.printStackTrace();
}
}
}
Этот фрагмент кода Java использует библиотеку JavaCV для захвата видеокадров и определения их продолжительности.
В этой статье мы рассмотрели несколько методов извлечения продолжительности видео с помощью FFmpeg. Мы рассмотрели подходы командной строки с FFprobe и FFmpeg, а также использование привязок FFmpeg в Python и Java. В зависимости от предпочитаемого вами языка программирования или варианта использования вы можете выбрать наиболее подходящий метод программного получения продолжительности видео.