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