- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我试图了解 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}'
这会将视频转码为:
接收方正确接受并解释具有以下 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/
我有以下 json: {"results": [{"columns":["room_id","player_name","player_ip"], "types":["integer","text
我在 go 中获取格式不一致的 JSON 文件。例如,我可以有以下内容: {"email": "\"blah.blah@blah.com\""} {"email": "robert@gmail.com
JavaScript中有JSON编码/解码base64编码/解码函数吗? 最佳答案 是的,btoa() 和 atob() 在某些浏览器中可以工作: var enc = btoa("this is so
我在其中一个项目中使用了 Encog,但在解码 One-Of Class 时卡住了。该字段的规范化操作之一是 NormalizationAction.OneOf,它具有三个输出。当我评估时,我想解码预
在我的 previous question关于使用 serialize() 创建对象的 CSV 我从 jmoy 那里得到了一个很好的答案,他推荐了我的序列化文本的 base64 编码。这正是我要找的。
有些事情让我感到困惑 - 为什么 this image在每个浏览器中显示不同? IE9(和 Windows 照片查看器)中的图像: Firefox(和 Photoshop)中的图像: Chrome(和
是否可以在不知道它的类型( JAXBContext.newInstance(clazz) )的情况下解码一个类,或者什么是测试即将到来的正确方法? 我确实收到了从纯文本中解码的消息 - 字符串 传入的
我正在尝试使用 openSSL 库进行 Base64 解码,然后使用 CMS 来验证签名。 下面的代码总是将缓冲区打印为 NULL。 char signed_data[] = "MIIO"; int
我有一个带有 SEL 类型实例变量的类,它是对选择器的引用。在encodeWithCoder/initWithCoder中,如何编码/解码这种类型的变量? 最佳答案 您可以使用 NSStringFro
var url = 'http://www.googleapis.com/customsearch/v1?q=foo&searchType=image'; window.fetch(url) .t
我想知道Android 2.2、2.3和3,4支持的音频/视频格式列表。我也想知道哪些Android版本支持视频编码和解码。我经历了this link,但是关于编码和解码我并不清楚。 任何人的回答都是
我在其中一个项目中使用 Encog,但在解码 One-Of 类时遇到了困难。该字段的规范化操作之一是 NormalizationAction.OneOf,它具有三个输出。当我评估时,我想解码预测值。如
我正在尝试解码现有的 xml 文件,以便我可以正确处理数据,但 XML 结构看起来很奇怪。下面是 xml 示例以及我创建的对象。 11 266 AA1001 1
对 unicode 字符进行 URL 编码的常用方法是将其拆分为 2 %HH 代码。 (\u4161 => %41%61) 但是,unicode在解码时是如何区分的呢?您如何知道 %41%61 是 \
我正在尝试将 json 字符串解码为 Map。 我知道有很多这样的问题,但我需要非常具体的格式。例如,我有 json 字符串: { "map": { "a": "b",
我有一个查询,我认为需要像这样(解码会更大) SELECT firstName, lastName, decode(mathMrk, 80, 'A', mathMrk) as decodeMat
我知道PHP函数encode()和decode(),它们对我来说工作得很好,但我想在url中传递编码字符串,但encode确实返回特殊字符,如“=”、“”' “等等...... 这显然会破坏我的脚本,
我必须解码 Basic bW9uTG9naW46bW9uTW90RGVQYXNz 形式的 http 请求的授权 header 当我解码它时online ,我得到了正确的结果 monLogin:monM
这个问题已经有答案了: Decode Base64 data in Java (21 个回答) 已关闭 8 年前。 我想知道使用哪个库进行 Base64 编码/解码?我需要此功能足够稳定以供生产使用。
我正在尝试从 Arduino BT 解码 []byte,我的连接完美,问题是当我尝试解码数组时。我得到的只是这个字符�(发送的字节数相同)我认为问题出在解码上。我尝试使用 ASCII 字符集,但仍然存
我是一名优秀的程序员,十分优秀!