Перенаправление вывода ffmpeg в подпроцесс - PullRequest
0 голосов
/ 12 октября 2018

У меня есть папка с именем 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 голосов
/ 12 октября 2018

Вы можете добавить вызов после завершения функции, чтобы переместить все выходные файлы.

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)
...