阅读量:0
使用 ffmpeg
推送RTSP流涉及将媒体源(如本地文件、摄像头、屏幕捕获等)编码并发送至RTSP服务器。以下是一些常见的应用场景及其相应的 ffmpeg
命令示例:
1. 推送本地视频文件到RTSP服务器
sh
ffmpeg \ -re -i input_video.mp4 \ -c:v libx264 -preset veryfast -tune zerolatency \ -c:a aac -ar 48000 -ac 2 -ab 128k \ -f rtsp \ -rtsp_transport tcp \ rtsp://server_address:server_port/stream_name
参数解释:
-re
: 使输入文件以实时速度读取,模拟直播行为。-i input_video.mp4
: 指定输入视频文件路径。-c:v libx264 -preset veryfast -tune zerolatency
: 使用H.264编码视频,选择快速预设以降低延迟,并针对低延迟优化。-c:a aac -ar 48000 -ac 2 -ab 128k
: 使用AAC编码音频,设定采样率、声道数和比特率。-f rtsp
: 指定输出格式为RTSP。-rtsp_transport tcp
: 使用TCP作为RTSP传输协议(也可以选择udp
或udp_multicast
)。rtsp://server_address:server_port/stream_name
: RTSP服务器的地址、端口和流名。
2. 推送DirectShow设备(如摄像头)到RTSP服务器
sh
ffmpeg \ -f dshow -video_device_number N -i video="Video Capture Device Name" \ -c:v libx264 -preset veryfast -tune zerolatency \ -c:a aac -ar 48000 -ac 2 -ab 128k \ -f rtsp \ -rtsp_transport tcp \ rtsp://server_address:server_port/stream_name
参数解释:
-f dshow
: 使用DirectShow框架捕获视频。-video_device_number N
: 如果有多个摄像头,指定设备编号(从0开始)。-i video="Video Capture Device Name"
: 指定摄像头的名称(可通过ffmpeg -list_devices true -f dshow -i dummy
列出可用设备)。- 其他编码、格式和RTSP服务器参数同上。
3. 屏幕捕获并推送至RTSP服务器(Windows平台)
sh
ffmpeg \ -f gdigrab -i desktop \ -c:v libx264 -preset veryfast -tune zerolatency \ -c:a aac -ar 48000 -ac 2 -ab 128k \ -f rtsp \ -rtsp_transport tcp \ rtsp://server_address:server_port/stream_name
参数解释:
-f gdigrab -i desktop
: 使用GDI捕获整个桌面作为输入。- 其他编码、格式和RTSP服务器参数同上。
确保在运行这些命令之前,RTSP服务器(如EasyDarwin、VLC、Wowza等)已经在目标地址和端口上正确配置并运行。根据实际需求调整编码参数、RTSP服务器地址、端口和流名。如果服务器支持其它传输协议(如HTTP、HLS等),还可以利用ffmpeg
进一步转推至这些协议。