Python 3.x 如何使用python从具有相同属性的多个视频文件的两个音频流中删除一个特定流?

Python 3.x 如何使用python从具有相同属性的多个视频文件的两个音频流中删除一个特定流?,python-3.x,audio,video,ffmpeg,automation,Python 3.x,Audio,Video,Ffmpeg,Automation,我有一个包含200个(或更多)视频文件的文件夹,每个文件大小约为70MB(这无关紧要),包含一个视频、一个文本和两个音频流,音频流属于两种不同的语言。所有文件都有相同的两种语言音频流。因此,如何从每个文件中删除用户选择的语言的一个特定音频流,并保持其他所有内容的完整性。对于单个文件,我可以使用mkvclaver或其他一些GUI工具。甚至是ffmpeg。但由于它的重复性,就像python中的Zen一样,我认为它可以自动化。在Python3.4中如何实现这一点 我找到了答案。 我使用mkvtooln

我有一个包含200个(或更多)视频文件的文件夹,每个文件大小约为70MB(这无关紧要),包含一个视频、一个文本和两个音频流,音频流属于两种不同的语言。所有文件都有相同的两种语言音频流。因此,如何从每个文件中删除用户选择的语言的一个特定音频流,并保持其他所有内容的完整性。对于单个文件,我可以使用mkvclaver或其他一些GUI工具。甚至是ffmpeg。但由于它的重复性,就像python中的Zen一样,我认为它可以自动化。在Python3.4中如何实现这一点

我找到了答案。 我使用mkvtoolnix命令删除ID为1的音频。 使用os.listdir()创建列表 然后对于给定的格式文件,使用subprocess.call()函数循环它,只需替换listdir()中的文件名。成功了。谢谢你的支持。欢迎编辑,这是我第一次来这里

import os

from subprocess import call

files = os.listdir("D:\\Media\\TV Shows\\Naruto")

frmt = input('Enter the file format:')

files = [i for i in files if i[-3:]==frmt ]

print(files)
for filegoeshere in files:
    fun = '''"C:\Program Files\MKVToolNix\mkvmerge.exe" -o "D:\\Media\\TV Shows\\Naruto\\'''+filegoeshere[:-4]+'''_jp.mkv"  "--default-track" "0:yes" "--forced-track" "0:no" "--display-dimensions" "0:640x480" "--language" "2:jpn" "--track-name" "2:Japanese" "--default-track" "2:no" "--forced-track" "2:no" "--track-name" "3:English" "--default-track" "3:yes" "--forced-track" "3:no" "-a" "2" "-d" "0" "-s" "3" "-T" "--no-global-tags" "D:\\Media\\TV Shows\\Naruto\\'''+filegoeshere+'''" "--track-order" "0:0,0:2,0:3"'''
    call(fun)

这感觉像是两个独立的问题:(1)如何使用像
ffmpeg
这样的命令行工具将音频流从视频文件中剥离出来(顺便说一句,是什么格式?),以及(2)如何为在特定位置找到的文件(它们都在一个目录下吗?子目录下?)自动执行此操作,但也许可以添加一些细节和/或拆分问题。我只需要(2)来循环(1),然后你需要解释这个问题:输入是什么,预期的输出是什么,你已经在用什么命令行来做(1),除非你真的建议直接用Python来做视频处理,我不推荐用这个快速工具。