FFMPEG以相同质量分割MP4


51

我有一个大的MP4文件。我正在尝试将其拆分为较小的文件。

ffmpeg -i largefile.mp4 -sameq -ss 00:00:00 -t 00:50:00 smallfile.mp4

我认为使用-sameq将保持相同的质量设置。但是,我一定不明白它的作用。

我希望与分割文件保持相同的质量(音频/视频)和压缩。但是,此设置使拆分文件大得多。

我需要设置哪些标志来在拆分文件中保持相同的质量和属性,同时保持相同的质量尺寸比?

例如,如果我的原始文件约为12 GB,并且为1920x1080,比特率为10617kbps,帧率为23帧/秒,而6声道音频为317kbps,我希望分割后的文件只有这个大小的三分之一(如果我将其分成三部分)。


3
仅供参考,供任何阅读此文章的人使用:不要使用-sameq,它并不表示“质量相同”
Zaz 2015年

Answers:


81

如果只想分割视频而不重新copy编码,请使用编解码器处理音频和视频。尝试这个:

ffmpeg -ss 00:00:00 -t 00:50:00 -i largefile.mp4 -acodec copy \
-vcodec copy smallfile.mp4

请注意,这只会创建第一个分割。下一个可以使用以开头的命令来完成ffmpeg -ss 00:50:00

这可以通过一个命令来完成:

ffmpeg -i largefile.mp4 -t 00:50:00 -c copy smallfile1.mp4 -ss 00:50:00 -c copy smallfile2.mp4

这将创建smallfile1.mp4(在largefile.mp4视频的50分钟之内结束)和smallfile2.mp4(在50分钟的视频中结束,直到largefile.mp4的结束)。


2
在mp4文件上使用此方法,我得到每个已创建文件的前两秒为冻结帧(音频正常播放)。任何已知的原因吗?
罗恩·哈列夫

听起来像个虫子。更新到最新的ffmpeg。
罗伯特

@Robert自2010年以来我已经更新了很多次。谢谢。
fideli

@RonHarlev这是当前预期的行为。如果不重新编码,则只能在“关键帧”处剪切视频。关键帧之间的帧无法单独携带足够的信息来构建完整的图像。参见:trac.ffmpeg.org/wiki/Seeking#Seekingwhiledoingacodeccopy
Philip Thrasher

3

一种替代方法是:

// create a 2-min clip
ffmpeg -i input.mp4 -ss 00:10:00 -to 00:12:00 -c copy output.mp4

/**
* -i  input file
* -ss start time in seconds or in hh:mm:ss
* -to end time in seconds or in hh:mm:ss
* -c codec to use 
*/

文件的质量保持不变,因为我们使用-c copy了将原始音频和视频流复制到输出的方式。

参考,常用的FFmpeg命令列表:DigitalFortress

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.