来源: - https://www.nxrte.com/jishu/7383.html - https://cloud.tencent.com/developer/article/1972715
1. 删除音频
ffmpeg -i videoWithAudio.mp4 -c:v copy -an videoWithoutAudio.mp4
-c:v copy
将视频轨道复制到videoWithoutAudio.mp4-an
告诉 FFmpeg不要复制音频
2. 删除特定音轨
要使用 FFmpeg 删除特定音轨,您始终可以使用该map命令。
命令的一般语法map是 -map input_file_index:stream_type_specifier:stream_index
因为编号从 0 开始,选择视频的第二个音轨 -map 0:a:1
如果文件有 1 个视频轨道和两个音轨,那么可以使用-map 0:a:1
仅选择第二个音轨并复制它到你的最终输出。
ffmpeg.exe -i videoWithAudio.mp4 -map 0 -map 0:a:1 -copy videoOutput.mp4
如果有 5 个音轨并且想选择除第一个以外的所有音轨,那么你可以使用否定map命令。通过说-map -0:a:0
你告诉 FFmpeg 忽略第一个音轨。
删除视频中的音频-an
选项如果使用负map,则映射为如下方式
ffmpeg -i videoWithAudio.mp4 -map 0 -map -0:a videoWithoutAudio.mp4
3. 使用 FFmpeg 添加音轨
ffmpeg \
-i video.mp4 \
-i audio.mp3 \
-c copy \
-map 0:v:0 \
-map 1:a:0 \
videoWithAudio.mp4
-map 0:v:0
选择第 0 个输入文件(我们的视频输入)的第 0 个轨道。
-map 1:a:0
选择第一个输入文件(我们的音频输入)的第 0 个音轨。
-c copy
将两个音轨(音频和视频)复制到输出而无需重新编码。如果您想重新编码,您可以使用适当的音频/视频编解码器和您选择的质量设置。
4. 使用 FFMpeg 从视频中提取音频
参考:https://stackoverflow.com/questions/9913032/how-can-i-extract-audio-from-video-with-ffmpeg
-vn
使用删除视频的命令。-vn
命令类似于-an
删除音轨的命令。
-acodec copy
告诉 FFmpeg 只复制音频而不是重新编码的命令来完成的。
ffmpeg -i videoWithAudio.mp4 -vn -acodec copy onlyAudio.aac
举例
使用 FFmpeg 从视频中提取音频,然后使用libmp3lameMP3 文件将其编码为不同的质量级别并将其存储。
ffmpeg.exe -i videoWithAudio.mp4 -vn -c:a libmp3lame -q:a 1 onlyAudio.mp3
-q:a
使用LAME 文档中定义的质量呈现,范围从 0-6,其中 0 是高质量音频,6 是低端。
5. 替换视频中的音频
ffmpeg -i video_with_audio.mp4 -i newAudio.wav \
-map 0:0 \
-map 1:0 \
-c:v copy \
-c:a libmp3lame -q:a 1 \
-shortest \
video_with_newAudio.mp4
如果您不想重新编码音频,您可以简单地说-a:c copy,音轨将被复制而不是重新编码。
-shortest
命令用于确保在达到两个输入中较短输入的长度时停止转换。如果它在您的用例中无关紧要,您可以丢弃它。