香橙派Orange Pi 5 Max通过FFmpeg+mediamtx(rtsp-simple-server)实现USB摄像头RTSP推流
一、安装流媒体服务器Media MTX
介绍:MediaMTX(原 rtsp-simple-server)是一款轻量级、零依赖、跨平台的开源流媒体服务器,用 Go 编写,可看作“协议万能转换器 + 低延迟转发器”。核心定位是:任何协议进、任何协议出,一条命令拉起服务,单机即可承载 50+ 路 720p 并发,内存占用 < 100 MB
官网链接:安装 |MediaMTX
https://mediamtx.org/docs/kickoff/install

下载对应版本安装包,进行解压安装,并运行:
tar -xvzf mediamtx-linux-amd64.tar.gz
cd mediamtx-linux-amd64
./mediamtx

启动成功。
二、安装FFmpeg
介绍:FFmpeg 是一个开源的多媒体框架,它包括了一套可以用来记录、转换数字音频、视频,并能将其转换成流的命令行工具,支持多种音视频格式的解码和编码,以及音视频的转换、处理和播放。
使用apt快速安装。
sudo apt update #更新软件包列表
sudo apt install ffmpeg #安装FFmpeg
ffmpeg -version #验证安装,如果显示出版本信息,则安装成功
三、USB免驱摄像头连接
usb摄像头默认地址:/dev/video0,/dev/video1
通过指令查看所有设备:ls /dev/video*
使用 v4l2-ctl --list-devices 命令确认摄像头设备节点(如 /dev/video0)
四、启动运行FFmpeg进行RTSP推流
软件编码命令:
ffmpeg -f v4l2 -input_format mjpeg -video_size 1280x720 -framerate 30 -i /dev/video0 \
-vcodec libx264 -preset ultrafast -tune zerolatency -b:v 2000k \
-f rtsp rtsp://localhost:8554/mystream
优化推流参数1:
ffmpeg -f v4l2 -input_format mjpeg -video_size 848x480 -framerate 20 -i /dev/video0 \
-vcodec libx264 \
-preset superfast \
-tune zerolatency \
-x264-params "keyint=20:min-keyint=20:no-scenecut" \
-b:v 1000k -maxrate 1000k -bufsize 500k \
-f rtsp -rtsp_transport tcp -muxdelay 0.1 \
rtsp://localhost:8554/mystream
优化推流参数2:
ffmpeg -fflags nobuffer -flags low_delay -f v4l2 -input_format mjpeg -video_size 640x480 -framerate 15 -i /dev/video0 \
-vcodec libx264 -preset superfast -tune zerolatency \
-x264-params "keyint=30:min-keyint=30:no-scenecut" \
-crf 30 -maxrate 800k -bufsize 400k \
-f rtsp -rtsp_transport tcp -muxdelay 0 rtsp://localhost:8554/mystream
针对于yolo识别优化参数(实时、低延迟、低算力消耗):
ffmpeg -f v4l2 -input_format mjpeg -video_size 640x480 -framerate 20 -i /dev/video0 \
-vcodec libx264 -pix_fmt yuv420p -preset superfast -tune zerolatency \
-x264-params "keyint=10:min-keyint=10:no-scenecut" \
-crf 28 -maxrate 1000k \
-f rtsp -rtsp_transport tcp -muxdelay 0 rtsp://localhost:8554/mystream
【画质与码率:如果觉得画质不够,可以降低 -crf 值(如 23),或提高 -maxrate(如 1500k)。反之,如果想进一步减负,则提高 -crf 值(如 32)。延迟与流畅度:如果觉得延迟仍高,可以尝试将 -rtsp_transport tcp 改为 udp(前提是网络好),或将 -preset superfast 改为 ultrafast(画质会更差)。如果觉得20fps不跟手,可以尝试 -framerate 25,htop观察CPU占用】
终端运行后输出:

五、验证测试
VLC:开源、跨平台、免费且无广告的多媒体播放与流媒体工具
官方下载:VLC media player,最棒的开源播放器 - VideoLAN
局域网内客户端(如电脑或手机)用VLC拉流观看:
在VLC中打开:网络串流 -> 输入地址:rtsp://IP地址:8554/mystream


效果如图:

额外例子,通过yolov5调用边缘设备香橙派的RTSP视频流进行识别检测:
修改detect.py文件对应位置:
parser.add_argument("--source", type=str, default='rtsp://192.168.43.36:8554/mystream', help="file/dir/URL/glob/screen/0(webcam)")

更多推荐


所有评论(0)