使用 python-ffmpeg 为具有多个流的 mov 文件保存帧

问题描述 投票:0回答:1

我有一个包含多个视频流的 mov 文件,我正在尝试使用 ffmpeg python 绑定来读取每个流并保存其所有帧。

为此,我编写了类似于此的代码:

import numpy as np
from PIL import Image
import ffmpeg

# Explore streams using probe
probe = ffmpeg.probe(file)
video_streams = [stream for stream in probe['streams'] if stream['codec_type'] == 'video']

for stream in video_streams:
    out, _ = (
        ffmpeg
        .input(file,stream_index=int(stream["index"]))
        .output('pipe:', format='rawvideo', pix_fmt='rgb24')
        .run(capture_stdout=True)
    )
    video = (
        np
        .frombuffer(out, np.uint8)
        .reshape([-1, height, width, 3])
    )
    stream_dir = video_streams_dir / int(stream["index"])
    stream_dir.mkdir(exist_ok=True)
    for i in range(video.shape[0]):
        Image.fromarray(video[i,...]).save(stream_dir / f"{video_name}__{i:04d}.jpeg")

但是

stream_index=int(stream["index"])
似乎是一个无效参数,所以我的问题是,如何为输入节点指定输入流?

注意:它可以在没有该参数的情况下使用第一个(我相信)视频流。

更新:找到这个线程,看来 ffmpeg 确实允许它,仍然没有尝试基于它实现我自己的解决方案。

python ffmpeg video-processing
1个回答
0
投票

无法帮助您

python-ffmpeg
,但您可以在
ffmpegio
中尝试我的实现。您可以查看此讨论主题:

https://github.com/python-ffmpegio/python-ffmpegio/discussions/17

如果您需要帮助,请随时在那里开始一个新线程。

© www.soinside.com 2019 - 2024. All rights reserved.