我有一堆 Xvid 文件,每个文件都有我不想要的音频流。如何使用 Linux 命令行删除我不想要的音轨?
我不需要整个脚本(循环),只需要使用命令来单独处理每个 avi 文件(除非 cmd 本身内置了批量修改功能)。
我不相信该文件位于 mkv 容器中,因为 mkvinfo 没有找到任何内容。以下是 mplayer 输出的部分内容(感谢 ~quack):
[aviheader] Video stream found, -vid 0
ID_AUDIO_ID=1
[aviheader] Audio stream found, -aid 1
ID_AUDIO_ID=2
[aviheader] Audio stream found, -aid 2
VIDEO: [XVID] 512x384 12bpp 25.000 fps 1013.4 kbps (123.7 kbyte/s)
答案1
坦白说,我认为你会更喜欢使用ffmpeg
解决方案。但我认为mencoder
(mplayer
的编码器)也可以做到这一点……而且它可以,但是只是副作用——因为它建立在播放器之上,所以它一次只能处理一个音频流。如果您要逆转这个过程(将第二个音频流添加到只有一个音频流的文件),则需要使用其他工具。
该-aid X
选项选择音频流(将 X 替换为流的 ID 号)。看起来mplayer
您引用的输出已经显示了正确的 ID 号,因此请尝试使用这些 ID 号。这将保留第一个音频流(如果您想要第二个,请使用-aid 2
它):
$ mencoder orig.avi -o new.avi -oac copy -ovc copy -aid 1
其他可能有帮助的命令行 AVI 工具包括:
avidemux
(你可以用 编写脚本-nogui
)transcode
答案2
使用ffmpeg您可以执行以下操作
ffmpeg -i 输入 -map 0:0 -map 0:1 -vcodec 复制 -acodec 复制输出
这应该会制作一部包含视频和第一个音频流的新电影。要使用第二个音频流,请将 -map 0:1 更改为 -map 0:2。使用 -vcodec 和 -acodec 的复制,您可以复制流而无需重新编码。