欢迎大家访问我的博客:blog.54newpower.top
1.下载安装配置过程省略
windows平台直接下载,添加环境变量即可;Linux平台根据官网说明,结合使用的发行版本自行安装;manjaro Linux自带ffmpeg,免除安装
2.编码转换-编码\音频转换
ffmpeg -i input.mov output.mp4
ffmpeg -codecs 查看编解码器
视频封装方案:
mp4封装:h264视频编码+aac音频编码 最常见,最成熟
webM封装:vp8视频编码+vorbis音频编码 谷歌的方案,YouTube使用
ogg封装:theora视频编码+vorbis音频编码 完全开源
ffmpeg -i in.flac -acodec libmp3lame -ar 44100 -ab 320k -ac 2 output.mp3
-acodec 指定音频编解码器;不指定,会根据输出文件的拓展名自动匹配
-ar 指定音频采样率;比较常见的有44100kHz和48000kHz;不输入默认使用原音频的采样率
-ab 指定音频的比特率;不输入默认128kbps
-ac 设置音频的声道数量;1单声道,2立体声默认与原音频一致
3.编码转换-视频压制
ffmpeg -i input.webm -s 1920x1080 -pix_fmt yuv420p -vcodec libx264 -preset medium -profile:v high -level:v 4.2 -crf 23 -acodec aac -ar 44100 -ac 2 -b:a 128k output.mp4
-s 视频分辨率
-pix_fmt 设置视频颜色空间;具体参数可以使用ffmpeg -pix_fmts查看
-vcodec 设置视频编解码器
-preset 编码器预设;共有10各参数可以选择(ultrafast superfast veryfast fast medium slow slower veryslow placebo);设置越快,编码越快,cpu占用就越少,但视频体积就会越大;默认medium,视频录制选择veryfast
-profile:v 视频编码器配置;(baseline extended main high high10 high 4:2:2 high 4:4:4 predictIve);实时通信采用baseline,流媒体采用main,高清视频设置为high即可
-level:v 视频编码器的限制设置,高清视频设置为4.1即可;(1-5.2)
-crf 码率控制模式;恒定速率控制;生成的文件大小不可预测;(0-51,数值越大,画质越烂);一般在18-28之间选择,18为视觉无损;
-r 设置视频帧率
-b:a 设置音频的比特率,推荐此方式
4.编码转换-码率控制
-qp 恒定量化(0-20);画质最好;视频体积巨大;不推荐使用
特殊需求:无损压缩视频
快速编码:ffmpeg -i input -vcodec libx264 -preset ultrafast -qp 0 out.mkv 高压缩比:ffmpeg -i input -vcodec libx264 -preset veryslow -qp 0 out.mkv
-crf 恒定速率因子;-crf 码率控制模式;恒定速率控制;生成的文件大小不可预测;(0-51,数值越大,画质越烂);一般在18-28之间选择,18为视觉无损;
-b 固定目标码率
vbr 动态码率:
ffmpeg -i input -vcodec libx264 -preset veryslow output
ABR 平均码率:(不适合码率变化太大的场景)
ffmpeg -i input -vcodec libx264 -preset veryslow -b:v 3000k output
cbr: 恒定码率
... -b:v 4000k -minrate 4000k -maxrate 4000k -bufsize 1835k ...
5.音视频合并\提取
提取视频画面:
ffmpeg -i input.mp4 -vcodec copy -an out.mp4
-an 消除声音
提取音频画面:
ffmpeg -i input.mp4 -acodec copy -vn out.m4a
有多个音频的,需要指定 -map 0:3
合并:
ffmpeg -i out.m4a -i out.mp4 -c copy output.mp4
6.音视频截取\连接
音频的截取:
ffmpeg -i a.mp3 -ss 00:01:00 -to 00:01:10 -acodec copy out.mp3
-ss 开始时间
-to 结束时间
-t 持续时间
-sseof 截取末尾多少秒
视屏的截取:
ffmpeg -i a.mp4 -ss 00:01:00 -to 00:01:10 -c copy output.mp4 ffmpeg -ss 00:01:00 -i a.mp4 -to 00:01:10 -c copy output.mp4 ffmpeg -ss 00:01:00 -i a.mp4 -to 00:01:10 -c copy -copyts output.mp4
第二个指令:关键帧技术,但播放器显示的时间不一定准确,打三个命令添加了-copyts 保留时间戳
视频的连接:
ffmpeg -i "concat:01.mp4|02.mp4|03.mp4" -c copy out.mp4
前提是视频属性相同
7.视频截图\水印\动图
截图:
ffmpeg -i in.mp4 -ss 5 -vframes 1 img.jpg
截图第5秒的第一帧画面
添加水印:
ffmpeg -i input.mp4 -i img.jpg -filter_complex "overlay=20:20" output.mp4
-filter_complex 滤镜
“20:20” 距离视频左边20个像素,顶部20个像素
动图制作:
ffmpeg -i input.mp4 -ss 7.5 to 8.5 -s 640X320 -r 15 output.gif
8.直播\录屏
ffmpeg 不太好实现
推荐OBS
欢迎大家访问我的博客:blog.54newpower.top