使用子进程根据 python 中的 ffmpeg 列表运行多个命令

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

我正在尝试使用子进程向 ffmpeg 发送一些命令。但是我需要根据列表中的项目数量发送不同的命令。

subs = ['https://example1.vtt', 'https://example2.vtt']
link = 'https://example.m3u8'

我试过这样做:

sub_list = []
for sub in subs:
    subtitles = "'-i' " + sub + " "
    sub_list.append(subtitles)
    result_subs = "".join(sub_list)

这使得 result_subs 成为

'-i' example1.vtt '-i' example2.vtt 

然后我跑:

subprocess.run([ffmpeg, '-i', link, result_subs, '-vcodec', 'copy', '-acodec', 'copy',  "test.mkv"])

但它给了我一个错误

python ffmpeg subprocess
1个回答
0
投票

每个

-i
和每个输入文件名,应该是你的参数向量中的一个单独条目(
subprocess.run()
的输入列表)。

sub_list = []
for sub in subs:
    sub_list.append('-i')
    sub_list.append(sub)

subprocess.run(['ffmpeg', '-i', link] \
               + sub_list \
               + ['-vcodec', 'copy', '-acodec', 'copy', "test.mkv"])
© www.soinside.com 2019 - 2024. All rights reserved.