RTSP 推流
需求
- 兼容的摄像头
- 如果使用 ROCK 5B,也可使用 HDMI RX 作为视频源
服务端配置
- 基于 FFmpeg
- 基于 Gstreamer
提示
使用 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 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
提示
因为 mpph264enc 在 Rockchip 6.1 Linux 内核的 Radxa OS 编解码效率很差,推荐优 先使用 mpph265enc。
使用 HDMI RX 时,目前 gst-mppenc 暂不支持 NV24(YCbCr444) 与 RGB 输入,需要 HDMI 输入端切换颜色格式为 NV12(YCbCr420) 或 NV16(YCbCr422),或者使用 FFmpeg 进行推流。
安装编译依赖
sudo apt update
sudo apt install build-essential gobject-introspection libcgroup-dev libgirepository1.0-dev libgstreamer-plugins-bad1.0-dev libgstreamer-plugins-base1.0-dev meson
获取 gst-rtsp-server 源码
wget https://gstreamer.freedesktop.org/src/gst-rtsp-server/gst-rtsp-server-1.18.6.tar.xz
tar -xvf gst-rtsp-server-1.18.6.tar.xz