ffmpeg 的简单使用
ffmpeg 是一个视频处理工具,它功能强大、参数众多,大部分我都不知道是干什么用的(^_^)
,我只是了解我用过的那些而已。
查看视频信息:
视频压制(libx264 是 h264 编码的 encoder):
默认使用 crf 的方式压制视频,还有一种是 2pass 的方式
- crf 指定视频的品质,程序会生成尽可能小的文件
- 2pass 指定文件的大小(通过比特率),程序会生成尽可能高的视频品质
通过 crf 指定视频的品质,默认值为 23,取值范围为 0-51,值越小品质越高,0 为无损,取值为 18 时几乎是肉眼无损压制。
2pass 的介绍可以参考 wiki:Encode/H.264,通过文件大小算出比特率,减去音频的比特率得到视频的比特率,指定比特率进行 2pass 压制,可以得到预期大小的文件。
视频压制并缩放成 720p(-1 会自动计算):
将视频尺寸缩小一倍(iw 表示 input_width,相应的 ih 表示 input_high):
指定 crf 和 preset:
preset 是指压缩比率,可选值由快到慢:ultrafast, superfast, veryfast, faster, fast, medium, slow, slower, veryslow, placedo,默认为 medium
速度越快,压缩比率越低,文件越大,相同文件大小的视频比特率越低。
视频合并 concat demuxer,视频必须是相同格式:
可以边合并边压制:
input_video_list.txt
格式:
file 'input_video1'
file 'input_video2'
文件内待合并的 video_file
相对路径是相对于于此 input_video_list.txt
文件的,而不是相对于执行 ffmpeg
命令的目录
不同格式的视频合并可以:
也可以参考这篇文章:FFMpeg无损合并视频的多种方法
视频分割,取前10秒:
取 10-20 秒:
修改音频的比特率(audio bitrate):
增大音量:
从 mp4 中抽取 aac 音频(-vn 表示不处理视频,相应的 -an 表示不处理音频):
抽取音频并转换成 mp3:
这是我写的一个用于合并、压制视频的脚本 videojoin,使用 concat demuxer 方式进行合并
压制单个视频:
压制并合并多个视频:
合并多个视频但不进行压制: