gpt4 book ai didi

video - 解码H264所需的SDP参数是sprop-parameter-sets还是profile-level-id?

转载 作者:行者123 更新时间:2023-11-28 21:41:11 34 4
gpt4 key购买 nike

我试图了解 SDP 中能够从 RTP 数据包解码 H264 所需的参数是什么。

这与 this question 相关,因为该问题的答案仅适用于少数情况。

示例

我正在使用以下命令从 VLC 流式传输。

vlc -vvv sample_video/big_buck_bunny_480p_h264.mov --sout '#transcode{vcodec=h264,vb=700,fps=20,scale=0.25,acodec=none}:rtp{dst=10.5.110.117,port=5004,ttl=1}'

这会将视频转码为:

  • 码率:700kbps
  • 帧速率:每秒 20
  • 分辨率:原始分辨率的 25%

接收方正确接受并解释具有以下 SDP 文件的流(删除第一行,它只是一个名称)。

//test.sdp
c=IN IP4 10.5.110.117
m=video 5004 RTP/AVP 96
a=rtpmap:96 H264/90000
a=fmtp:96 profile-level-id=640014;sprop-parameter-sets=Z2QAFKzZQ0R+f/zBfMMAQAAAAwBAAAAKI8UKZYA=,aOvssiw=;

要运行的命令:vlc test.sdp

文档可用here ,在第 7.2 章中针对 profile-level-id 状态命名为 SIP Video Profile Best Practices:

profile-level-id

While specified as optional (as are all parameters) in RFC 6184, the 'profile-level-id' parameter is fundamental to the setup of the codec, and is also required for any further parameters to be specified. Hence all implementations should include this parameter in their SDPs, and should interpret it when receiving it. If not included, the default value is 420010, as specified in RFC 6184.

同一文档对 sprop-parameter-sets 的陈述如下:

sprop-parameter-sets

H.264 allows sequence and picture information to be sent both in-band, and out-of-band. SIP video implementations should signal this information in-band, conforming to the model prevalent in H.323 and in the overwhelming majority of existing SIP video implementations, and hence this parameter should not be included.

问题一

即使删除了 profile-level-id,视频也能在接收器上正确解释。

//test.sdp
c=IN IP4 10.5.110.117
m=video 5004 RTP/AVP 96
a=rtpmap:96 H264/90000
a=fmtp:96 sprop-parameter-sets=Z2QAFKzZQ0R+f/zBfMMAQAAAAwBAAAAKI8UKZYA=,aOvssiw=;

如果没有 sprop-parameter-sets,它不会工作。

问题2

我一直在窃听不同的 RTCP、SIP 和 SAP,而且 SDP 通常包含sprop-parameter-sets.

问题

  • 请解释这两个参数的含义和区别
  • 根据上述问题的答案,说明问题中出现的反差

最佳答案

含义和主要区别:

正如您在 profile-level-id 的定义中所见,它有一个默认值,因此在信令协商中可以省略。该参数包含的字符串在hexadecimal format and it has 3 bytes中通知解码器有关 profile 的信息,约束和 level将用于发送数据。此设置定义了几个参数,如比特率、分辨率、数据包类型......

参数 sprop-parameter-sets 可以被视为解码您将要发送的数据的关键。它包含一些将用于编码数据的字节,因此您与接收器共享它以便它可以解码视频数据包。它也可以从信令中省略,但它们对于解码器是强制性的,因此它们也可以带内发送。因此,如果您在 sdp 中省略它们,则需要在数据包中发送它们。接收方只能在收到此信息后才能对数据进行解码。

问题 1:

如前所述,profile-level-id 可以省略,但它仍然有效,因为将使用默认的 420010。唯一的区别是设置会有所不同,并且可能会影响视频质量。例如,默认值中的 42 是指 Constrained Baseline Profile (CBP),而 SDP 初始值中的 64 是指 High Profile (HiP)。

当缺少 sprop-parameter-sets 时,视频不工作可能是因为 vlc 不支持带内发送该数据,正如我上面所解释的,这是强制性的。

问题 2:

许多 SIP 实现都支持在带内发送 sprop-parameter-sets,这就是您要捕获的内容。在Wireshark中查看h264数据包,你会在一些数据包中看到这个值的描述。

关于video - 解码H264所需的SDP参数是sprop-parameter-sets还是profile-level-id?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20634476/

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