FFmpeg是一套可以用来记录、转换数字音频、视频,并能将其转化为流的开源计算机程序。它包括了目前领先的音/视频编码库libavcodec。 FFmpeg是在 Linux 下开发出来的,但它可以在包括 Windows 在内的大多数操作系统中编译。这个项目是由 Fabrice Bellard 发起的,现在由 Michael Niedermayer 主持。可以轻易地实现多种视频格式之间的相互转换,例如可以将摄录下的视频avi等转成现在视频网站所采用的flv格式。
目前接到一个需求,设备推rtmp流到srs直播服务器(此处可以是腾讯云或者阿里云的直播服务器,我们是自己搭建的srs直播服务器,因为穷哈哈哈),然后需要实时的将rtmp流进行保存成MP4或者flv,并对保存的视频进行缩略图的截取。
此处对保存成MP4需要特殊说明一下,rtmp的每一帧其实就是flv,将视频保存成flv不设计转码,也就是说在保存视频的过程中不设计视频的转码,不消耗服务器CPU,但是如果保存成MP4的话,就会设计转码,这个时候你的服务器CPU就会蹭蹭往上搞。下边我会特殊说明
ffmpeg的命令:
ffmpeg -probesize 32768 -i " rtmp://192.168.17.233/live/a1 live=1" -acodec copy -vcodec copy -f flv /home/mnt/disk/storage/111.flv
-probesize 32768 :没有查到这个参数什么意思,不过字面意思是探针的大小,可能是内存申请32768大小的内存把
-i “rtmp。。。” :后接地址
-y :覆盖输出文件,即如果1.***文件已经存在的话,不经提示就覆盖掉了
-t 0.001 :设置纪录时间 hh:mm:ss[.xxx]格式的记录时间也支持
-ss 1 :延迟1秒后开始
-f image2 :以图片格式保存
-r 1 :帧数,此处为截取一帧
-acodec copy -vcodec copy 这个表示在对rtmp流进行保存成MP4的同时防止视频进行转码。各位需注意
ffmpeg对视频进行截图:
ffmpeg -i /home/mnt/disk/storage/111.flv -y -f mjpeg -t 0.001 -s 288*162 /home/mnt/disk/storage/222.png
-s 288*162 :你的图片的宽高
ffmpeg获取视频的时长:
/usr/local/HSrs/bin/ffmpeg -i ${address}/storage/$s3/$s2.flv > ${address}/storage/$s3/$s2.txt 2>&1
time=`cat ${address}/storage/$s3/$s2.txt | grep Dura | awk '{print $2}'`
将视频时长保存到txt内
ffmpeg本人是安装在centos7环境下,可以在线安装也可以离线安装,后续上传离线安装包
ffmpeg还可以对视频进行好多操作,未完待续。。。。。。,求关注