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

FFmpeg推RTSP流缺失sprop-parameter-sets:来源与添加方法问询

H.265 RTSP流缺失sprop-parameter-sets的解决办法

一、sprop-parameter-sets的来源

sprop-vps、sprop-sps、sprop-pps说白了就是H.265码流里**VPS(视频参数集)、SPS(序列参数集)、PPS(图像参数集)**的Base64编码结果——这些是解码器解码H.265视频必须的前置配置信息,Android播放器对SDP里的这个字段要求比VLC严格,缺了就会无法播放。

获取这些值有两种常用途径:

  • 从原始MP4文件提取:用FFmpeg的trace日志抓取参数集的十六进制数据,再转成Base64。
    执行这条命令:
    ffmpeg -i input.mp4 -v trace 2>&1 | grep -E "VPS|SPS|PPS"
    
    输出里会有类似VPS: 0x40010c01ffff0160000003004000000300000000000000000000000000000的十六进制串,去掉开头的0x后转成Base64,就是对应的sprop值。
  • 编码时实时获取:用FFmpeg编码H.265的过程中,编码器会输出这些参数集,你可以在推流前直接捕获处理。

二、给RTSP流添加sprop-parameter-sets的三种方法

1. 让FFmpeg推流时主动写入

修改推流命令,强制FFmpeg把参数集写入RTSP的SDP中:

ffmpeg -re -i input.mp4 -c:v libx265 -x265-params "profile=main" -an -f rtsp -rtsp_transport tcp rtsp://你的rtsp-simple-server地址/流名

如果上面的命令未生效,添加比特流过滤器强制注入:

ffmpeg -re -i input.mp4 -c:v libx265 -x265-params "profile=main" -bsf:v h265_metadata=sprop_present=1 -an -f rtsp -rtsp_transport tcp rtsp://你的rtsp-simple-server地址/流名

2. 配置rtsp-simple-server自动补全

打开rtsp-simple-server的rtsp-simple-server.yml配置文件,找到对应流的paths配置块,加上自动插入sprop的开关:

paths:
  你的流名:
    source: rtsp://你的推流源地址
    h265SpropAutoInsert: true

开启这个选项后,服务器会自动从H.265码流中提取VPS/SPS/PPS,转成sprop字段插入到SDP里,Android端就能正常解析了。

3. 用restreamer配置处理

在aler9的restreamer配置里,也能开启参数集自动注入。如果使用配置文件,给H.265流添加对应的处理规则,强制转推时带上sprop信息即可。

三、验证配置是否生效

推流后用ffprobe查看RTSP流的SDP信息,确认是否包含sprop字段:

ffprobe -v quiet -print_format json -show_streams rtsp://你的rtsp-server地址/流名

如果输出的streams->codec_parameters里有extradata,或者直接查看SDP文本里存在sprop-vps、sprop-sps、sprop-pps字段,就说明配置生效。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.20 00:45:51