从视频文件中删除音轨

从视频文件中删除音轨

我有一堆带有 2 个音轨的视频文件。它们是 avi 文件。音轨没有标签,当我尝试播放它们时,默认音轨没有音频。还有 2 个音轨,第二个是有音频的。

是否有一个命令可以运行来从每个文件中删除第 1 和第 3 个轨道?

它们位于 Ubuntu 服务器上。仅限 CLI。

avprobe version 9.18-6:9.18-0ubuntu0.14.04.1, Copyright (c) 2007-2014 the Libav developers
  built on Mar 16 2015 13:19:10 with gcc 4.8 (Ubuntu 4.8.2-19ubuntu1)
[mpeg4 @ 0xd1dac0] Invalid and inefficient vfw-avi packed B frames detected
Input #0, avi, from 'Video004.avi':
  Metadata:
    encoder         : VirtualDubMod 1.5.10.2 (build 2540/release)
  Duration: 00:49:16.99, start: 0.000000, bitrate: 1937 kb/s
    Stream #0.0: Video: mpeg4 (Advanced Simple Profile), yuv420p, 640x480 [PAR 1:1 DAR 4:3], 23.98 tbn, 23.98 tbc
    Stream #0.1: Audio: mp3, 32000 Hz, 1 channels, s16p, 96 kb/s
    Stream #0.2: Audio: mp3, 32000 Hz, 1 channels, s16p, 96 kb/s
    Stream #0.3: Audio: mp3, 32000 Hz, 1 channels, s16p, 96 kb/s
# avprobe output

答案1

avconv 似乎是解决方案

avconv -i $file -map 0:0 -map 0:2 -acodec copy -vcodec copy $outfile

我把它放入循环中

dir="*.avi"
for file in $dir
do 
 avconv -i $file -map 0:0 -map 0:2 -acodec copy -vcodec copy $outfile
done

我没有尝试保存为相同的文件名,但我认为它不会起作用。您可以轻松删除旧文件并重命名新文件。我只是输出到具有相同名称的临时目录,然后将它们全部移动并覆盖原始文件。

解释一下 map arg。告诉 avconv 要复制哪些轨道。0:0 是视频轨道,0:2 是第二个音频轨道。然后将 acodec 和 vcodec 设置为复制,这意味着它会复制音频和视频而不进行任何更改。

答案2

尝试这个关联。向下滚动直至到达将单声道音频转换为立体声,反之亦然并尝试一下。它允许您通过选择其中一个通道将立体声轨道转换为单声道轨道。

相关内容