You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

单个FFmpeg会话中,能否为转码后的流输出多个SDP文件?

在单个FFmpeg会话中输出多个SDP文件的实现方案

当然可以!在同一个FFmpeg进程里同时生成多路带对应SDP文件的RTP流完全没问题,正好适配你想要输出不同分辨率流的需求。

完整命令示例

结合你的需求,这里给出可以直接参考的完整命令:

ffmpeg -protocol_whitelist file,udp,rtp,tcp -i "rtsp://admin:admin@172.16.250.99/media/video1" \
  # 第一路:低分辨率流(camera1)
  -map 0:v -c:v libx264 -vf scale=540:360 -r 5 -f rtp rtp://localhost:5004 \
  -sdp_file camera1.sdp \
  # 第二路:原始分辨率流(camera2)
  -map 0:v -c:v libx264 -r 25 -f rtp rtp://localhost:5006 \
  -sdp_file camera2.sdp

关键细节说明

  • 流映射与独立性:用 -map 0:v 明确指定从输入中映射视频流,确保每一路输出都基于原始输入处理,互不干扰。你也可以根据需要添加音频流的映射(比如 -map 0:a)。
  • SDP文件绑定:-sdp_file 参数必须紧跟在对应的RTP输出命令之后,FFmpeg会自动将该路RTP流的会话信息写入指定的SDP文件中,这样两个SDP文件会分别对应两路不同分辨率的流。
  • 端口与帧率设置:两路RTP流要使用不同的UDP端口(示例中用了5004和5006),避免端口冲突;帧率参数 -r 可以根据你的需求调整,第二路如果想完全继承输入帧率,可以去掉 -r 25 这个参数。

额外注意事项

  • 如果是向远程设备推送流,需要把 localhost 替换成目标设备的IP地址,并确保网络端口是开放可达的。
  • 如果需要对音频也进行转码输出,只需要在每一路流中添加对应的音频编码参数(比如 -c:a aac -b:a 128k)和RTP音频输出地址即可,同样可以用 -sdp_file 生成包含音频信息的SDP文件。

内容的提问来源于stack exchange,提问作者mikeyb976

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.26 10:31:18