В настоящее время я пытаюсь объединить несколько видеофайлов с помощью скрипта Python, используя ffmpeg и ffmpy.
Имена файлов записываются в список файлов, как предложено вики ffmpeg concatenate .
В моем примере я использую только два файла, но на практике будет несколько файлов hundert, поэтому я выбираю подход списка файлов.
Мой текущий код выглядит так:
import os
import ffmpy
base_dir = "/path/to/the/files"
# where to seek the files
file_list = open("video_list.txt", "x")
# scan for the video files
for root, dirs, files in os.walk(base_dir):
for video_file in files:
if video_file.endswith(".avi"):
file_list.write("file './%s'\n" % video_file)
# merge the video files
ff = ffmpy.FFmpeg(
global_options={"-f",
"concat ",
"-safe",
"0"},
inputs={file_list: None},
outputs={"-c",
"copy",
"output.avi"},
)
ff.run()
Итак, код, который я хочу запустить с помощью ffmpy:
ffmpeg -f concat -safe 0 -i video_list.txt -c copy output.avi
Но, к сожалению, мой скрипт не работает, и в результате появляется ошибка
Traceback (most recent call last):
File "concat.py", line 20, in <module>
"output.avi", }
File "/usr/lib/python3.7/site-packages/ffmpy.py", line 54, in __init__
self._cmd += _merge_args_opts(outputs)
File "/usr/lib/python3.7/site-packages/ffmpy.py", line 187, in _merge_args_opts
for arg, opt in args_opts_dict.items():
AttributeError: 'set' object has no attribute 'items'
Есть какие-нибудь подсказки, почему команда работает не так, как должна? Я что-то упустил из-за форматирования команды для ffmpy?
Спасибо.