You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何从Python变量存储的视频数据中提取元数据?

从内存二进制视频数据提取元数据的Python方案

如果你需要直接处理Python变量中的二进制视频数据(无需写入磁盘)来提取元数据,以下是两种实用方案:

方案一:使用PyAV(推荐)

PyAV是FFmpeg的Python绑定库,原生支持内存中的媒体流处理,API更面向对象,适合后续还要操作视频内容的场景。

import av
from io import BytesIO

# 假设x是存储视频二进制数据的变量
video_bytes = x

# 用BytesIO包装二进制数据,打开为AV容器
container = av.open(BytesIO(video_bytes))

# 获取视频流(默认取第一个视频流)
video_stream = container.streams.video[0]

# 提取关键元数据
metadata = {
    "编解码器": video_stream.codec.name,
    "分辨率": f"{video_stream.width}x{video_stream.height}",
    "宽高比": video_stream.aspect_ratio,
    "平均帧率": float(video_stream.average_rate),
    "比特率": video_stream.bit_rate // 1000 if video_stream.bit_rate else None  # 转换为kbps
}

print(metadata)
container.close()

方案二:直接调用ffprobe(轻量)

如果你只需要提取元数据,直接用subprocess调用ffprobe并通过stdin传入数据,比ffmpeg-python的管道方式更简洁。

import subprocess
import json

# 假设x是存储视频二进制数据的变量
video_bytes = x

# 调用ffprobe,从标准输入读取数据,输出JSON格式元数据
proc = subprocess.run(
    [
        "ffprobe",
        "-v", "quiet",
        "-print_format", "json",
        "-show_format",
        "-show_streams",
        "-i", "pipe:0"  # 指定从stdin读取输入
    ],
    input=video_bytes,
    capture_output=True,
    text=True
)

# 解析JSON结果
metadata = json.loads(proc.stdout)
# 按需提取视频流的具体字段
video_info = next(s for s in metadata["streams"] if s["codec_type"] == "video")
print("视频编解码器:", video_info["codec_name"])
print("分辨率:", f"{video_info['width']}x{video_info['height']}")

关于ffmpeg-python的补充

ffmpeg-python确实没有直接支持传入内存对象的API,若要使用它,需要通过管道手动传递数据,步骤相对繁琐,示例如下(仅供参考):

import ffmpeg
import json
import subprocess

video_bytes = x

# 构造ffprobe命令,通过stdin读取数据
process = subprocess.run(
    ["ffprobe"] + ffmpeg.probe.get_args("pipe:0", v="quiet", print_format="json", show_format=None, show_streams=None),
    input=video_bytes,
    capture_output=True,
    text=True
)
metadata = json.loads(process.stdout)

内容的提问来源于stack exchange,提问作者Adam J. Kessel

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.24 16:12:38