有一个mp4文件,播放5分钟,文件有120M,可否获得一个画质差一点,但是体积仅仅30M这样的mp4?
ffmpeg -i input.mp4 -vcodec libx264 -crf 28 -preset veryslow -acodec aac -b:a 128k -maxrate 500k -bufsize 1000k -vf "scale=-2:480" output.mp4
解释一下各个参数:
-vcodec libx264:使用H.264视频编码器。
-crf 28:控制视频质量,数值越高质量越低,文件越小。可以尝试调整这个值来达到30M的目标。
-preset veryslow:编码速度,veryslow会提供更好的压缩效果。
-acodec aac:使用AAC音频编码器。
-b:a 128k:设置音频比特率为128kbps。
-maxrate 500k 和 -bufsize 1000k:控制视频的最大比特率和缓冲区大小。
-vf "scale=-2:480":调整视频分辨率,高度设置为480像素,宽度自动调整以保持比例。
可以根据需要调整这些参数来达到理想的文件大小和画质。如果不熟悉命令行工具,也可以使用一些图形界面的压缩软件,如HandBrake或Any Video Converter。
去装个HandBrake,免费软件。装好以后打开,把视频拖进去,然后找到“预设”下拉框,我自己的习惯是选择那个“Web”分类下的“Creator 720p60”,选择之后好处就是——我能少打不少字。。。然后第一个选项页“摘要”里的格式啊网页优化啊保留元数据什么的就不用动了,直接切到第二个选项页“尺寸”。
尺寸这页其实也没什么可改的,但你原视频如果超过了720p,那么要把“分辨率限制”从“720p”改成“无”,不让它改分辨率就行了。第三个选项页“滤镜”,都不用动。第四页“视频”,这个是大头,首先要改下视频编码器,默认的是“H.264(x264)”,点开下拉选项卡,如果显卡是AMD的,那可以选“H.264(AMD VCE)”或者“H.264(Intel QSV)”(主要我显卡是AMD的所以我不知道NV的应该显示什么……但肯定会在括号里带上NV字样。选这个主要就是加快编码速度),然后质量这里建议是用固定质量,21-22的可以自己试,反正编码器带上硬件加速之后会特别快……帧率可以选“Same as source”用原始帧率,或者根据上边“源”那一条信息里的FPS手动改成30什么的也行,或者就保持60不改也行(狗头),一般可变帧率就行。另外就是“编码器预设”拉到最右,配置文件和级别都Auto就行。
然后“音频”页,编码下拉里有个“AAC Passthru”,就是直通,意思就是直接用原始视频里的音轨(如果也是AAC的话)。建议是用原始,或者改成Bitrate160也行(其实默认320也行,这个影响不大)。后边“字幕”点一下“清除”不要字幕,“章节”页可以取消“创建章节标记”前边的勾(这个创建也行,也是影响不大),然后把最底下“保存为”的保存路径确定一下,点工具栏里绿色的“开始编码”按钮就可以开始跑了。跑出来不理想还可以再调“固定质量”的值然后再跑。
使用ffmpeg神器
下载 链接
解压到任意目录(例如 C:\ffmpeg)
scale=640:360
:将分辨率降至640x360(原视频的1/4)-crf 28
:质量系数(18-28为常用范围,数值越大画质越低)-b:a 64k
:将音频码率压缩到64kbps