使用FFmpeg实时转流(RTSP摄像头到服务器)
确保已安装FFmpeg并拥有摄像头RTSP地址及目标服务器推流地址(如RTMP)。
ffmpeg -i "rtsp://摄像头地址" -c:v libx264 -preset ultrafast -tune zerolatency -c:a aac -f flv "rtmp://服务器地址/stream_key"
参数说明:
-i "rtsp://摄像头地址"
:输入源为RTSP流。-c:v libx264
:视频编码为H.264。-preset ultrafast
:加快编码速度以适应实时性。-tune zerolatency
:降低延迟。-c:a aac
:音频编码为AAC(若需保留音频)。-f flv
:输出格式为FLV(兼容RTMP)。
优化与调试
降低延迟:添加-rtsp_transport tcp
强制使用TCP传输(避免UDP丢包导致问题)。
ffmpeg -rtsp_transport tcp -i "rtsp://摄像头地址" -c:v libx264 -preset ultrafast -tune zerolatency -c:a aac -f flv "rtmp://服务器地址/stream_key"
视频参数调整:通过-b:v
控制码率,-g
设置关键帧间隔(如2秒)。
ffmpeg -i "rtsp://摄像头地址" -c:v libx264 -b:v 2000k -g 50 -preset ultrafast -tune zerolatency -f flv "rtmp://服务器地址/stream_key"
纯视频推流:若无需音频,添加-an
关闭音频。
ffmpeg -i "rtsp://摄像头地址" -c:v libx264 -preset ultrafast -an -f flv "rtmp://服务器地址/stream_key"
后台运行与日志
后台运行:使用nohup
或screen
保持进程长期运行。
nohup ffmpeg -i "rtsp://摄像头地址" -c:v libx264 -preset ultrafast -f flv "rtmp://服务器地址/stream_key" > ffmpeg.log 2>&1 &
日志监控:通过tail -f
实时查看日志。
tail -f ffmpeg.log
故障排查
检查RTSP可用性:先用ffplay
测试摄像头流是否正常。
ffplay -rtsp_transport tcp "rtsp://摄像头地址"
服务器验证:使用推流工具(如OBS)测试服务器地址是否有效。
网络延迟:若出现卡顿,尝试降低分辨率或码率。
ffmpeg -i "rtsp://摄像头地址" -vf scale=640:360 -c:v libx264 -b:v 1000k -preset ultrafast -f flv "rtmp://服务器地址/stream_key"