Python调用FFmpeg解析视频信息,以帧率为例

首先需要安装FFmpeg处理媒体文件、ffmpy调用FFmpeg
sudo apt install ffmpeg
pip install ffmpy

FFmpeg的ffprobe命令用于解析媒体文件信息,比如:

ffprobe -show_streams -select_streams v -i /home/root/example.mp4

其中-i表示媒体文件路径,-show_streams用于选择媒体流的整体信息,-select_streams v用于筛选视频信息,过滤音频信息
详细参数可以参考ffprobe Documentation

在python中调用ffmpeg代码:

from ffmpy import FFmpeg, FFprobe
from subprocess import Popen, PIPE
import json

def video_info(video_path):
    """
    接受视频路径, 读取视频信息
    :param video_path: 视频路径
    :return: 视频帧率
    """
    # 构建FFmpeg命令行
    ff = FFprobe(
        global_options='-of json -show_streams -select_streams v',
        inputs={video_path: None},
    )

    # ffmpeg默认输出到终端, 但我们需要在进程中获取媒体文件的信息
    # 所以将命令行的输出重定向到管道, 传递给当前进程
    res = ff.run(stdout=PIPE, stderr=PIPE)
	video_stream = res[0]

    # 解析视频流信息
    video_detail = json.loads(video_stream).get('streams')[0]

	# 获取视频实际帧率, 计算取整
    frame_rate = round(eval(video_detail.get('r_frame_rate')))

    # 返回码率
    return frame_rate

此外还可以根据需要获取平均帧率/avg_frame_rate, 码率/bit_rate, 最大码率/max_bit_rate, 帧数/nb_frames等信息

猜你喜欢

转载自blog.csdn.net/JosephThatwho/article/details/105116397