前言
最近想做一个安防相关的项目,所以跟着韦东山老师的视频来学习视频监控方案的相关知识,韦东山老师讲的课非常好,本章主要介绍推流端FFmpeg
一、FFmpeg介绍
FFmpeg是什么
- 一套开源软件
- 可以记录、转换音视频:可以从摄像头中记录视频,从声卡中记录音频,可以转换为各种格式,保存起来
- 还可以把各种格式的音视频,转换为流:供在线观看
- 其他功能:视频截图、加水印、裁剪等等
- Mplayer,ffplay,射手播放器,暴风影音,KMPlayer,QQ影音等视频频播放器的内核就是 FFmpeg
- 格式工厂的内核也是FFmpeg
二、FFmpeg简易理解
误区:我们以为mp4就代表了音频、视频的压缩格式,其实不是
- Mp4只是一种封装格式
- 里面有音频数据、视频数据
- 音频数据有自己的压缩格式,还不止一种
- 视频数据也有自己的压缩格式,还不止一种
参考文章
三、FFmpeg的重要概念
1.重要概念
2.FFmpeg处理音视频的过程
用Filter(过滤器)来处理
- 旋转、拉伸
- 添加LOGO、消除LOGO等等
3.FFmpeg的常用参数
四、软硬件准备
硬件:
- 100ASK_IMX6ULL开发板 (或其他Linux开发板);
- USB摄像头
软件:
- Ubuntu;
- Buildroot(Buildroot会自动下载其他软件: MJPG-streamer, ffmpeg, nginx);
五、移植、运行FFmpeg
1.移植
有两种方法:
方法一:下载源码,手工编译
方法二:使用Buildroot,配置选择ffmpeg,直接编译生成映象文件
我们使用Buildroot:
- 设置交叉编译工具链
- 在Buildroot根目录
- make menuconfig
- 如图选择ffmpeg (在buildroot 按‘/’可以搜索ffmpeg的路径)
- 执行make
- 这会在Buildroot的dl/ffmpeg目录下自动下载源码,并编译
- 结果保存在output/images目录下,有emmc.img, sdcard.img,可以直接烧写到板能的EMMC或SD卡上
六、运行FFmpeg
在开发板上安装好ffmpeg后:
执行命令:
ffmpeg -f v4l2 -framerate 10 -i /dev/video1 -q 10 my.mp4
- 它会把摄像头的数据录制为my.mp4
- 把my.mp4复制到PC机,播放
上述命令的解释:
-f(format)摄像头的格式是 v4l2
-framerate 10 1秒读10帧
-i 输入设备是哪一个: /dev/video1 -
q:质量 为10
生成名为my.mp4的文件
它会把摄像头的数据录制为my.mp4,把my.mp4复制到PC机,播放
更多用法:
- ffmpeg基础使用:https://www.jianshu.com/p/ddafe46827b7
- 给新手的 20 多个 FFmpeg 命令示例:https://zhuanlan.zhihu.com/p/67878761
建议在Windows下练习:
- 下载static版本:https://ffmpeg.zeranoe.com/builds/
- 在命令行中练习ffmpeg