我正在使用 gstreamer 摄取不同类型的安全摄像头 RTSP 流。在大多数情况下,我使用与此类似的管道
gst-launch-1.0 rtspsrc location=rtsp://<username:password@$RTSPURL> protocols=4 name=rtspsrc0 rtspsrc0. ! rtph264depay ! tee name=t t.! queue ! hlssink2 name=ingest2 playlist-length=5 max-files=10 target-duration=2 playlist-location=stream.m3u8 location=segment_%d.ts
然而,Axis 相机似乎根本不发送 SPS 和 PPS NALU。为了解决这个问题,我必须使用 h264parse config-interval=-1
以便插入 SPS 和 PPS。我想确定哪些流具有 SPS PPS 信息并相应地添加 H264parse。
gstreamer、ffmpeg/ffprobe 中是否有办法识别是否在数据包中发送了 PPS、SPS,然后添加
h264parse
动态元素?
最佳答案
你可以跑ffmpeg -i INPUT -an -c copy -t 10 -bsf:v trace_headers -f null - 2>&1 | grep Parameter
这将检查 10 秒的视频流数据并记录所有 NALU 数据。如果 PS 存在,您将看到表格的行
[trace_headers @ 000002951294c4c0] Sequence Parameter Set
[trace_headers @ 000002951294c4c0] 0 forbidden_zero_bit 0 = 0
[trace_headers @ 000002951294c4c0] 1 nal_ref_idc 11 = 3
请检查 PS 部分正上方的行,如果它说[trace_headers @ 000002951294c4c0] Extradata
忽略它。这可以是带外传输,例如来自 SDP。
关于ffmpeg - 识别 RTSP 流是否包含 PPS 和 SPS 信息,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/72343926/