gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-12-02 18:46:06 33 4
gpt4 key购买 nike

我有两个视频流单元能够流式传输实时视频输入:

  • AXIS Q7424-R 视频编码器
  • EPIPHAN VGADVI 广播器 99460 -

我正在使用 gstreamer 在运行 Linux 的客户端终端上查看这些流。我对 h264、rtp 多播流(两个单元都支持)感兴趣。

我可以使用以下 gstreamer 管道流式传输 Epiphan 视频:
gst-launch-0.10 udpsrc 多播组=地址 端口=端口 caps='application/x-rtp,媒体=(字符串)视频,时钟速率=(int)90000,编码名称=(字符串)H264'! rtph264depay ! ffdec_h254!自动视频接收器

但是,此管道不适用于 Axis 单元,因为我反复收到以下错误:

ffmpeg:0:: non-existing PPS referenced
ffmpeg:0:: non-existing PPS 0 referenced
ffmpeg:0:: decode_slice_header error
ffmpeg:0:: no frame!
ffdec_h264: decoding error (len:-1, have_data: 0)

我读到此错误意味着 ffmpeg 解码器缺少关键帧提供的 SPS/PPS 信息。轴单元有一个GOV参数,是发送i帧的时间间隔;它设置为 32。

请注意,我可以使用以下命令以单播方式查看两个设备的 rtp 流:
gst-launch-0.10 rtspsrc location=rtsp://ADDRESS:PORT/... 延迟=100! rtph264depay ! ffdec_h264!自动视频接收器

由于单播有效并且单播和多播管道相同(源除外),我的猜测是:

  • 我的 udpsrc 上限对于轴流来说根本不正确(而且我真的不知道在哪里/如何验证它)

  • 或者,轴多播格式/编码不同,需要修改管道(我发现这不太可能,因为单播正在工作,而且我不明白为什么编码会在单播/多播之间改变)。

任何建议都值得赞赏,因为我对 gstreamer 和媒体格式的了解有限,不知道接下来要尝试什么。

最佳答案

正如 szatmary 的评论中所述,轴硬件似乎没有传输 SPS/PPS 信息。我已就此问题联系了 AXIS 的支持人员,我收到的答复是我的问题“超出了支持人员的范围”。

我找到的解决方案是在接收管道中包含“sprop-parameter-sets”。此参数似乎每个流都是唯一的,可以通过以下任一方式获取:

  • 使用 rtsp 启动单播接收器(上面问题中提供的示例)这将提供可以复制的一组上限,或者
  • 从硬件访问 .sdp 文件,通常可通过 http 访问(例如 http://<USERNAME:PASSWORD>@<ADDRESS:PORT>/axis-cgi/alwaysmulti.sdp?camera=1 )

请注意,访问 sdp 文件是按流进行的(因此是 camera=1 ),因此如果您的硬件有多个输入,请务必获取正确的输入。

关于ffmpeg - gstreamer h264 多播缺少 SPS/PPS 信息,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28439910/

33 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com