在子进程中重定向ffmpeg的输出

时间:2018-10-12 10:07:31

标签: python ffmpeg python-3.6

我有一个名为video_files的文件夹,其中存储了一堆视频文件,例如100.mp4, 101.mp4...。我已经编写了一个python脚本,该脚本在每个视频文件上进行迭代。使用subprocess调用ffmpeg提取帧,然后将帧保存到名为frames的输出目录中。这是我的示例代码:

def frame_extractor(video_files_path):
        video_files = sorted(glob.glob(video_files_path + "**/*.mp4", recursive=True))
        print("Number of video files found: ", len(video_files))
        for i, video in enumerate(video_files):
            subprocess.call(["ffmpeg", "-i", video, "%04d.png"]
        print("Extracted frames from all the videos") 

问题是它从我运行此脚本的位置提取当前目录中的帧,但我希望将这些帧提取到frames文件夹中。

PS:frames/%04d.png不起作用。

有人可以告诉我该怎么做吗?

1 个答案:

答案 0 :(得分:0)

您可以在函数完成后添加一个调用以移动所有输出文件。

import os
import glob

for img in glob.glob(video_files_path + '**/*.png', recursive=True):
    img_out = os.path.join('frames', os.path.split(img)[-1])
    os.rename(img, img_out)