跳到主要内容

RTSP 推流

需求

  1. 兼容的摄像头
  2. 如果使用 ROCK 5B,也可使用 HDMI RX 作为视频源

服务端配置

提示

使用 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_rkmpphevc_rkmppmjpeg_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

客户端配置

使用 VLC 播放器

以下以 Windows 下运行 VLC 为例,介绍如何收看 RTSP 视频推流。

  1. 下载并安装 VLC VLC-Main

  2. 点击 媒体 - 打开网络串流 来输入 RTSP 推流地址

提示

需替换为服务端命令行中指定的 URL 与 IP 地址。

VLC-Open-RTSP

  1. 点击播放后即可查看 RTSP 远程推流内容 VLC-View-RTSP

在开发板上使用 ffplay 播放器

也可直接使用上面提到的 FFmpeg 的 ffplay 工具进行播放

提示

需替换为服务端命令行中指定的 URL 与 IP 地址。
-vcodec 选项为指定的解码器,请根据 RTSP 流的编码进行调整,目前 ffmpeg-rockchip 支持的硬件解码器有 av1_rkmpph263_rkmpph264_rkmpphevc_rkmppmpeg1_rkmppmpeg2_rkmppmpeg4_rkmppvp8_rkmppvp9_rkmpp

ffmpeg-rockchip/ffplay -vcodec h264_rkmpp rtsp://192.168.10.9:8554/stream

参考链接