ffmpeg 用于提取音频轨道、视频轨道然后合并它们,生成更小的 mp4

ffmpeg 用于提取音频轨道、视频轨道然后合并它们,生成更小的 mp4

以下是我对“original.mp4” (00:15:22 时长,~80MB 文件大小) 所做的操作:

  1. 从 mp4 中提取视频流

    ffmpeg -i original.mp4 -c copy -an vid_only.mp4

  2. 从 mp4 中提取音频流

    ffmpeg -i original.mp4 -vn -acodec copy aud_only.aac

  3. 合并提取的音频和视频流,形成新的mp4

    ffmpeg -i aud_only.aac -i vid_only.mp4 new_mix.mp4

发现“new_mix.mp4”混合准确,时长与之前相同,但是文件大小已降至 36MB(从~80MB 开始)。使用ffprobe“original.mp4”和“new_mix.mp4”时,我发现音频和视频流的比特率存在差异。

步骤 1 和步骤 2,提取音频和视频流而不进行任何重新编码。步骤 3,据说合并了音频和视频流,但花了很长时间,所以可能进行了重新编码。是这样的吗?如果是这样,有没有办法告诉 ffmpeg 在合并时不要重新编码,以便更快地完成并保留原始比特率?

答案1

-c copy告诉 ffmpeg 对所有正在处理的流进行流复制。缺少该功能。

ffmpeg -i aud_only.aac -i vid_only.mp4 -c copy new_mix.mp4

另外,对于第 2 步,最好提取到 M4A 之类的容器中

ffmpeg -i original.mp4 -vn -acodec copy aud_only.m4a

如果您的音频有时间戳间隙,.aac将会丢失它们。

答案2

好吧,我的错。看来答案只需搜索一下即可。版主可能会将问题标记为重复。以下是我需要做的事情,以实现原始文件大小,并保留原始(更高)比特率,即合并音频 + 视频流而无需重新编码(因此速度更快):

`ffmpeg -i aud_only.aac -i vid_only.mp4 -acodec copy -vcodec copy mixed_copy.mp4`

以下是本网站上的原始问答:如何在ffmpeg中合并音频和视频文件

相关内容