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


0

这是我用“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在合并时不重新编码,更快地完成并保留原始比特率?

Answers:


2

-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则会丢失它们。


谢谢。这个答案有一个关于aac中时间戳间隙的非常重要的信息,以及为什么使用m4a容器更好。难怪,没有任何工具能够将音频片段的持续时间告知为.aac!
icarus74

0

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

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

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

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.