我正在尝试将实时视频从我的 android 手机流式传输到我 PC 上的桌面 RTSP 服务器。流式视频可以在另一台设备上播放。我正在使用 H.264 视频编码器,因此服务器返回的 SDP(作为 DESCRIBE
请求的回复)应该包含 profile-level-id
和 sprop-parameter-sets
字段。
Spydroid项目展示了如何通过解析从记录到 SD 卡的虚拟文件中提取这些信息(来自 avcC
block )。但我不能那样做。在 Spydroid 中,媒体记录器和 RTSP 服务器位于同一设备上,因此服务器始终可以在流式传输之前记录具有与记录器相同配置的测试文件。但我将视频作为 RTP 流直接从手机流式传输到远程服务器。
所以我的问题是:
编辑:
我正在使用 android 手机生成流,但服务器可以从任何来源接收 RTP 流。那么,是否有任何通用的方法来获取这些值?
最佳答案
您可以提取 profile-level-id
从序列参数集 NAL 单元(实际上,如果参数集甚至在流中发送),它是 NAL header 之后的前 3 个字节。即,来自 3.0 级基线配置文件流的 SPS NAL 单元的前四个字节如下所示:67
42
00
1E
忽略第一个字节,这只是表明它是一个 SPS NAL 单元(0x67 & 0x1F == 0x7
SPS 是 NAL 类型 7,PPS 是 NAL 类型 8)。其他 3 个字节为您提供配置文件、约束标志和级别(实际上,它只是第 3 个字节中的级别乘以 10)。sprop-parameter-sets
是Base64编码的Sequence Parameter Sets和Picture Parameter Sets,用逗号隔开。所以只需 Base64 编码 SPS 和 PPS NAL 单元(Nal 类型 7 和 NAL 类型 8)并用逗号分隔,你应该很高兴。
关于video-streaming - 可以从 RTP 流中提取 profile-level-id 和 sprop-parameter-sets 吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12338594/