ffmpeg - 识别 RTSP 流是否包含 PPS 和 SPS 信息

标签 ffmpeg gstreamer

我正在使用 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/

相关文章:

ffmpeg - gstreamer h264 多播缺少 SPS/PPS 信息

rust - gstreamer rust 为 x264enc 上设置的比特率获取人类可读的输出

c++ - 用于 Windows 开发的 GStreamer 或 DirectShow?

Android ffmpeg0.8 不能用 android ndk5 和 cygwin 编译器编译

video - 连接 mkv 文件,保持原始时间戳和间隙

c# - 使用 ffmpeg.autogen,从 IP 摄像机捕获视频,但未捕获音频,代码中是否缺少任何内容?

ffmpeg - mac os catalina 10.15.3上的ffmpeg问题

video - ffmpeg - 在中心的视频中合成视频

ffmpeg - GStreamer Tee(多路复用器)

webrtc - 如何将 webRTC 内容提供商连接到 Janus-Gateway 流媒体插件