不改变视频、音频编码格式及参数,将字幕压制
ffmpeg –i Lantern.mp4-vf "ass=Lantern.ass" out.mp4
使用H264(AVC)重新编码视频、不改变其他参数,不改变音频编码格式
ffmpeg -i Lantern.mp4 -vcodec libx264 -preset fast -crf 20 -vf "ass=Lantern.ass" out.mp4
关于preset参数:
预设是一系列参数的集合,这个集合能够在编码速度和压缩率之间做出一个权衡。一个编码速度稍慢的预设会提供更高的压缩效率(压缩效率是以文件大小来衡量的)。这就是说,假如你想得到一个指定大小的文件或者采用恒定比特率编码模式,你可以采用一个较慢的预设来获得更好的质量。同样的,对于恒定质量编码模式,你可以通过选择一个较慢的预设轻松地节省比特率。
ultrafast, superfast, veryfast, faster, fast, medium, slow, slower, veryslow, placebo默认为medium
crf(Constant Rate Factor)
该方法在输出文件的大小不太重要的时候,可以使整个文件达到特定的视频质量。该编码模式在单遍编码模式下提供了最大的压缩效率,每一帧可以按照要求的视频质量去获取它需要的比特数。不好的一面是,你不能获取一个特定大小的视频文件,或者说将输出位率控制在特定的大小上。
crf的参数值中,其中0为无损模式,23为缺省值,51可能是最差的。该数字越小,图像质量越好。从主观上讲,18~28是一个合理的范围。18往往被认为从视觉上看是无损的,它的输出视频质量和输入视频一模一样或者说相差无几。但从技术的角度来讲,它依然是有损压缩。
以H.264、Lame自定义参数重新编码、压制
ffmpeg -i Lantern.mp4 -vcodec libx264 -preset fast -crf 20 -vf "ass=Lantern.ass" -acodec libmp3lame -ab 128k lame.mp4
如果想压制AAC的音频,就在最后把acodec libmp3lame改成acodec aac
其中-ab 128k指的是平均码率为128k
以H.264自定义分辨率、AAC自定义参数缩放压制视频
ffmpeg -i Lantern.mp4 -vcodec libx264 -preset fast -crf 20 -vf "ass=Lantern.ass,scale=800:-1" -acodec aac -ab 128k aac.mp4
其中的scale=800:-1指的是输出800:对应比例的视频。假如你要压制720P的,那就把800改成1280;假如你要1080的,那就改成1920。通常来说,分辨率高的压分辨率低的好办,低的压高的就麻烦了……
两遍模式
如果你的目标是一个确定大小的文件而且帧与帧之间的视频质量并不重要,这个方法很适用。这通过一个例子可以得到很好地解释。你的视频有10分钟(600秒)的时长同时要求输出为50MB,因为比特率=文件大小/时长,
50MB*8192(MB转kilobits)/600秒=683 kbps(全局比特率)
683kbps-128kbps(音频比特率)=555kbps(视频比特率),
两遍编码的例子:
ffmpeg -y -i input -c:v libx264 -preset medium -b:v 555k -pass 1 -an -f mp4 /dev/null && ffmpeg -i input -c:v libx264 -preset medium -b:v 555k -pass 2 -c:a libfdkaac -b:a 128k mp4 output.mp4
分割视频(拷贝视频和音频流,速度比较快)
ffmpeg -ss 01:00:00 -i input_file_h264.mp4 -vcodec copy -acodec copy -t 00:06:00 output_file.mp4
总结
我这上面这几个小标题写的乱乱糟糟的,在这里统一做一个总结吧:
需要原封不动的把字幕压进去
ffmpeg –i Lantern.mp4-vf "ass=Lantern.ass" out.mp4
需要快速的压制质量较好的H264视频
ffmpeg -i Lantern.mp4 -vcodec libx264 -preset fast -crf 20 -vf "ass=Lantern.ass" out.mp4
需要快速压制质量较好的H264、720P视频
ffmpeg -i Lantern.mp4 -vcodec libx264 -preset fast -crf 23 -vf "ass=Lantern.ass,scale=1280:-1" out.mp4
需要压制超高质量的、缓慢的压制H264视频
ffmpeg -i Lantern.mp4 -vcodec libx264 -preset veryslow -crf 18 -vf "ass=Lantern.ass" out.mp4
preset也看着办
ultrafast, superfast, veryfast, faster, fast, medium, slow, slower, veryslow, placebo
越慢,压缩率越高。
后记
视频编码这是个长久的技术活啊,而且需要很多的经验!自己多编码多玩玩,自然就有懂啦!
下一页是给懒虫们留着的哦~~