我有一部旧的“立体声”电影,是 mp4 文件。
只有左声道有声音,右声道无声。
我想使用 ffmpeg 复制视频流:
ffmpeg -hide_banner -i video.mp4 -c:v copy ...
并通过仅选择左声道将音频转换为单声道:
-map_channel 0.1.0 -map_channel -1
但这并没有改变什么:-(
正确的 ffmpeg 命令行是什么?
不重新编码也能做到这一点吗?
答案1
至少有两种方法可以选择左音频通道并以单声道输出。
使用-map_channel
假设输入仅包含音频:
ffmpeg -i input -map_channel 0.0.0 output
第一个数字是输入文件 ID:您只有一个输入,因此将是
0
。第二个数字是流说明符:如果音频是第二个流(在典型的视频文件中通常如此),则可以使用1
。第三个数字是频道号码:在立体声输入中,第一个通道通常是左前,第二个通道通常是右前。如果您想要正确的频道,请使用
-map_channel 0.0.1
。如果输入包含视频,那么音频可能会(但并非总是)被列为第二个流,因此您需要使用
0.1.0
。
使用平移音频过滤器
ffmpeg -i input -af "pan=mono|c0=FL" output
- 或者,您也可以使用
pan=mono|c0=c0
。 - 如果您想要正确的频道,请使用
pan=mono|c0=FR
(或pan=mono|c0=c1
)。
另请参阅
答案2
@LordNeckbeard:找到了为什么我的结果文件像源文件一样只有左声道音频的原因。
这是因为我使用了:
-map_channel 0.1.0 -map_channel -1
它将第二个音频通道静音,而不仅仅是使用:
-map_channel 0.1.0
感谢您的帮助 :)