RTSP 推流
需求
- 兼容的摄像头
- 如果使用 ROCK 5B,也可使用 HDMI RX 作为视频源
服务端配置
- 基于 FFmpeg
- 基于 Gstreamer + mediamtx
- 基于 Gstreamer + gst-rtsp-server
提示
使用 HDMI RX 时,低于 720P 分辨率的输入源可能会导致编码失败。
经测试,ffmpeg-rockchip 与我们发布的 Debian 11 系统的 rkmpp 和 librga 版本不兼容,Debian 12 系统不受影响。
如果你使用的是我们发布的 Debian 11 系统请移步 ffmpeg-rockchip 官方编译教程,构建 rkmpp 和 librga 后构建 ffmpeg-rockchip,
并运行 sudo apt-get update && sudo apt-get install librga2=2.2.0-1
。
安装编译依赖
sudo apt-get update
sudo apt-get install build-essential cmake git libdrm-dev librga-dev librockchip-mpp-dev libsdl2*-dev libx264-dev libx265-dev pkg-config
编译并安装 ffmpeg-rockchip
git clone https://github.com/nyanmisaka/ffmpeg-rockchip
pushd ffmpeg-rockchip/
./configure --prefix=/usr --enable-gpl --enable-version3 --enable-libdrm --enable-rkmpp --enable-rkrga --enable-libx264 --enable-libx265 --enable-ffplay
make -j$(nproc)
sudo make install
popd
运行 mediamtx 与 ffmpeg-rockchip
信息
此处我们假定 /dev/video-camera0
是你想要使用的视频源。如果你的摄像头被分配到了其他的名称下,请替换以下命令行中对应的设备名。
-vf "fps=30"
与 -s 3840x2160
分别对应帧率与分辨率,需根据命令 sudo v4l2-ctl -d /dev/video-camera0 --all
的输出进行调整,否则可能会因为无法自动读取到摄像头信息而影响编码性能甚至启动推流失败。
-c:v
选项可以指定使用的编码器,目前 ffmpeg-rockchip 支持的硬件编码器有 h264_rkmpp
、hevc_rkmpp
和 mjpeg_rkmpp
。
wget https://github.com/bluenviron/mediamtx/releases/download/v1.9.0/mediamtx_v1.9.0_linux_arm64v8.tar.gz
tar -xzvf mediamtx_v1.9.0_linux_arm64v8.tar.gz
nohup ./mediamtx &
ffmpeg-rockchip/ffmpeg -f v4l2 -i /dev/video-camera0 -vf "fps=30" -s 3840x2160 -c:v h264_rkmpp -rc_mode AVBR -b:v 20M -minrate 10M -maxrate 40M -profile:v main -level 5.1 -f rtsp rtsp://0.0.0.0:8554/stream
# 如果仅想将摄像头录制成文件,请使用以下命令
# ffmpeg-rockchip/ffmpeg -f v4l2 -i /dev/video-camera0 -vf "fps=30" -s 3840x2160 -c:v h264_rkmpp -rc_mode AVBR -b:v 20M -minrate 10M -maxrate 40M -profile:v main -level 5.1 /tmp/tmp.mp4