树莓派4 编译ffmpeg (带硬件加速)
验证把树莓派接上usb摄像头做个向B站推送直播的设备
总的来说是按照别人的经验再做一遍而已
应不限于pi4 ,流水账备忘。
用默认参数编译及安装推流数十秒后报错退出
主要是跟随 csdn 的那篇blog操作
执行 ./configure 的时候有诸多参数出现问题
提示错误 “Error. OMX_Core.h not found”
解决方法是,执行
sudo apt-get install libomxil-bellagio-dev
最终实验出来编译正常的是以下的配置
./configure --arch=armv7l --target-os=linux \
--enable-gpl --enable-libx264 \
--enable-nonfree \
--enable-omx \
--enable-omx-rpi \
--enable-encoder=h264_omx \
--enable-mmal \
--enable-hwaccel=h264_mmal \
--enable-decoder=h264_mmal
主要想要的是 h264_omx 实现硬件编码加速,这个可以大幅保证编码效率降低负载和功耗。
之后就是普通的 make && make install
推流B站
经测试(用逻辑 C920), 用以下命令
ffmpeg -f v4l2 -s 1280x720 -i /dev/video0 -b:v 3600k -c:v h264_omx -bufsize 6000k -f flv "rtmp://js.live-send.acg.tv/live-js/{直播码,直播中心开播获取}"
由于连接的是wifi 所以码率没设置太高,用 -s 1280x720 设为 720p 输出(C920应该支持 FullHD 1080p的)。
帧率也没有指定,试过 -r 30 指定为30fps 到了B站上变快动作,可能是我参数还是不对
以上没有设置音频参数,所以输出视频为静音,以后可能会补充更新(挖坑)
看看系统负载
48°C, ffmpeg 负载占 17%左右,说明 硬件编码工作良好。
总的来说Pi4做直播有点大材小用,因为内存还剩 3G 多,换句话说,用 3B+ 完全可以胜任。
参考文
《树莓派 FFmpeg 支持GPU硬解码》 https://blog.csdn.net/aphero/article/details/78316747
《部署编译FFmpeg》https://www.jianshu.com/p/dec9bf9cffc9
《HLS实现视频流直播》https://www.jianshu.com/p/78c888acdc70
《Compile FFMPEG for Raspberry Pi 3》https://potluru.wordpress.com/2016/06/26/compile-ffmpeg-for-raspberry-pi-3/
