首先了解下FFmpeg由几个组件组成:
FFmpeg可使用众多参数,参数内容会根据ffmpeg版本而有差异 这里不再赘述,使用前建议先参考参数及编解码器的叙述。此外参数明细可用ffmpeg -h显示;编解码器名称等明细可用ffmpeg -formats显示。一些常用的参数也可以通过网上查找相关资料获取。
1. 直播推流:将本地mp4文件推流到直播域名
ffmpeg -re -i out.mp4 -c copy -f flv rtmp://livepush.domain/live/streamName
2. 拉流转推:将一路在线直播流转推到另外一个推流地址上
ffmpeg -i '拉流地址' -acodec copy -vcodec copy -f flv '推流地址'
3. 拉直播流保存本地文件
ffmpeg -i rtmp://liveplay.domain/live/streamName -c copy dump.flv
4. 文件格式转换
ffmpeg -i in.mov -vcodec copy -acodec copyout.mp4 // mov --> mp4
ffmpeg -i in.flv -vcodec copy -acodec copyout.mp4 // flv --> mp4
ffmpeg -i in.gif -vf scale=420:-2,format=yuv420p out.mp4 // gif --> mp4
ffmpeg -i son_origine.avi -vn -ar 44100 -ac 2 -ab 192 -f mp3 son_final.mp3 // wav --> mp3
5. 旋转视频,例如将视频顺时针旋转90度:
ffmpeg -i in.mp4 -vf rotate=PI/2 out.mp4
6. 视频剪辑,当需要截取一个长视频的其中某一段内容,比如从一个视频的第10秒开始,截取6秒的内容,也就是10~16秒的内容,输入一个out.mp4文件:
ffmpeg -i in.mp4 -ss 00:00:10 -t 00:00:06 -acodec aac -vcodec h264 -strict -2 out.mp4
//• -ss 指定裁剪的开始时间,精确到秒 • -t 被裁剪后的时长
7. 视频缩放,当需要把一个高分辨率的视频处理成一个低分辨率的视频,以达到减小视频体积的目的。举个例子:把一个源视频为1080*1920的视频缩小到720*960 :
ffmpeg -i in.mp4 -vf scale=720:960 -acodec aac -vcodec h264 out.mp4 // 1080*1920-->720*960
8. 调节视频帧率,比如将源视频25fps调整到15fps :
ffmpeg -i in.mp4 -r 15 out.mp4
9. 视频添加水印
ffmpeg -i out.mp4 -vf "movie=logo.png,scale=64:48[watermask];[in][watermask] overlay=30:10 [out]" watermask.mp4
// -vf中的 movie 指定logo位置。scale 指定 logo 大小。overlay 指定 logo 摆放的位置
10. 提取音频流
ffmpeg -i input.mp4 -acodec copy -vn out.aac
11. 提取视频流
ffmpeg -i input.mp4 -vcodec copy -an out.h264
12. 音视频合并
ffmpeg -i out.h264 -i out.aac -vcodec copy -acodec copy out.mp4
ffmpeg相当强大,以上只是介绍了部分比较常见实用的命令供大家借鉴,在音视频处理上使用ffmpeg可以实现很多功能,一些常见参数说明放在下面附录,完全的说明可以查询ffmpeg的官方资料:http://ffmpeg.org/ffmpeg-filters.html 。
附录:
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。