7 способов получить длину видео с помощью Python: подробное руководство

При работе с видеофайлами в Python часто необходимо извлечь различные метаданные, включая продолжительность или продолжительность видео. В этой статье мы рассмотрим семь различных методов выполнения этой задачи с помощью Python. Каждый метод будет сопровождаться примером кода, который поможет вам понять и реализовать его в своих проектах.

Метод 1: использование OpenCV
OpenCV — это популярная библиотека компьютерного зрения, которую также можно использовать для задач обработки видео. Он обеспечивает простой способ извлечения продолжительности видео.

import cv2
def get_video_length_opencv(video_path):
    video = cv2.VideoCapture(video_path)
    fps = video.get(cv2.CAP_PROP_FPS)
    frame_count = video.get(cv2.CAP_PROP_FRAME_COUNT)
    duration = frame_count / fps
    video.release()
    return duration
# Usage
video_path = 'path/to/video.mp4'
length = get_video_length_opencv(video_path)
print(f"Video duration: {length} seconds")

Метод 2: использование MoviePy
MoviePy — это библиотека Python, специально разработанная для задач редактирования и обработки видео. Он обеспечивает удобный способ извлечения продолжительности видео.

from moviepy.editor import VideoFileClip
def get_video_length_moviepy(video_path):
    video = VideoFileClip(video_path)
    duration = video.duration
    video.close()
    return duration
# Usage
video_path = 'path/to/video.mp4'
length = get_video_length_moviepy(video_path)
print(f"Video duration: {length} seconds")

Метод 3: использование FFmpeg
FFmpeg — это мощная мультимедийная платформа, поддерживающая широкий спектр видеоопераций. Используя модуль подпроцесса в Python, вы можете вызывать команды FFmpeg для извлечения продолжительности видео.

import subprocess
def get_video_length_ffmpeg(video_path):
    command = ['ffprobe', '-v', 'error', '-show_entries', 'format=duration', '-of', 'default=noprint_wrappers=1:nokey=1', video_path]
    result = subprocess.run(command, capture_output=True, text=True)
    duration = float(result.stdout)
    return duration
# Usage
video_path = 'path/to/video.mp4'
length = get_video_length_ffmpeg(video_path)
print(f"Video duration: {length} seconds")

Метод 4: использование PyAV
PyAV — это привязка Pythonic для мультимедийной библиотеки FFmpeg. Он предоставляет высокоуровневый интерфейс для работы с мультимедийными файлами, включая извлечение продолжительности видео.

import av
def get_video_length_pyav(video_path):
    container = av.open(video_path)
    duration = container.duration / av.time_base
    container.close()
    return duration
# Usage
video_path = 'path/to/video.mp4'
length = get_video_length_pyav(video_path)
print(f"Video duration: {length} seconds")

Метод 5: использование MediaInfo
MediaInfo — это удобный инструмент командной строки для извлечения метаданных из мультимедийных файлов. Вы можете вызвать его из Python, используя модуль подпроцесса, чтобы получить продолжительность видео.

import subprocess
def get_video_length_mediainfo(video_path):
    command = ['mediainfo', '--Output=JSON', video_path]
    result = subprocess.run(command, capture_output=True, text=True)
    output = result.stdout
    duration = float(output.split('"duration": "')[1].split('"')[0])
    return duration
# Usage
video_path = 'path/to/video.mp4'
length = get_video_length_mediainfo(video_path)
print(f"Video duration: {length} seconds")

Метод 6: использование PyMediaInfo
PyMediaInfo — это оболочка Python для библиотеки MediaInfo, обеспечивающая легкий доступ к мультимедийным метаданным. Его можно использовать для извлечения продолжительности видео.

from pymediainfo import MediaInfo
def get_video_length_pymediainfo(video_path):
    media_info = MediaInfo.parse(video_path)
    duration = media_info.tracks[0].duration / 1000
    return duration
# Usage
video_path = 'path/to/video.mp4'
length = get_video_length_pymediainfo(video_path)
print(f"Video duration: {length} seconds")

Метод 7: использование Python-ffmpeg
Python-ffmpeg — это оболочка Python для FFmpeg, предоставляющая высокоуровневый интерфейс для работы с мультимедийными файлами. Его можно использовать для извлечения продолжительности видео.


from ffmpeg import FFProbe

def get_video_length_python_ffmpeg(video_path):
    probe = FFProbe(video_path)
    video_info = probe.video[0]
    duration = video_info.duration_seconds
    return duration

# Usage
video_path = 'path/to/video.mp4'
length = get_video_length_python_ffmpeg(video_path)
print(f"Video duration: {length} seconds")


In this article, we explored seven different methods to extract video duration using Python. We covered various libraries and tools such as OpenCV, MoviePy, FFmpeg, PyAV, MediaInfo, PyMediaInfo, and Python-ffmpeg. Each method provides a unique approach to achieve the desired result. Depending on your specific requirements and the availability of these libraries or tools in your environment, you can choose the most suitable method for your project.

Remember to install the necessary dependencies and ensure that your video files are accessible in the specified paths. By leveraging these methods, you can effortlessly retrieve video duration information to enhance your video processing applications.