检测 RTP 流中使用的编解码器(用于动态 PT)

Posted

技术标签:

【中文标题】检测 RTP 流中使用的编解码器(用于动态 PT)【英文标题】:Detecting codec used in RTP stream (for dynamic PTs) 【发布时间】:2010-12-12 18:25:05 【问题描述】:

是否可以仅通过分析 RTP 流来检测 RTP 流中使用的编解码器?我知道 RTP 标头中的有效负载类型 (PT) 字段——可用于识别具有静态分配 PT 编号的编解码器。其他使用动态 PT 编号范围的编解码器呢?是否有任何启发式方法来检测有效载荷的类型?我对各种解决方案都感兴趣,即使检测仅适用于一种编解码器。

【问题讨论】:

【参考方案1】:

当然,您可以嗅探数据包以查看它是否是 RFC XXX 或 YYY 等。长度检查(对于固定长度的编解码器,但要注意每个数据包有多个帧);时间戳率(告诉您窄/宽/超宽带音频或视频);然后您可以查看前 N 个字节是否与其中一个可能匹配项的有效模式匹配。

除非您只对子集感兴趣,否则工作量不会小。

【讨论】:

这听起来就像我想的那样:这可能是可能的(在某些情况下),但它可能不值得,至少对我的应用程序来说不是。

以上是关于检测 RTP 流中使用的编解码器(用于动态 PT)的主要内容,如果未能解决你的问题,请参考以下文章

FFMPEG 流式传输 RTP:未设置时基

NAudio - 从 RTP 数据包播放音频有效负载

HTML5 MediaSource 适用于某些 mp4 文件,而不适用于其他文件(相同的编解码器)

Media Player 无法播放该文件。可能是播放机不支持该文件类型,或者不支持用于压缩该文件的编解码器

如何在 Grails 3 中更改每个插件的编解码器?

Windows Media Player 无法播放该文件。可能是播放机不支持该文件类型,或者不支持用于压缩该文件的编...