Android会同时播放我从rtp服务器提供的音频和视频(AAC,h263),但是当我提供AAC / H264流时,我只会获得音频而没有视频。
在工作方案中,Android会同时为两个轨道ID发出SETUP命令,但H264却不会为第二个Video轨道发出SETUP命令。
我的SDP文件正确吗?我认为profile-id和sprops是正确的,因为它们是直接从H264编码器的sps和pps NAL复制而来的。视频是基线@ 2.1
Android是否无法回复或识别第二首曲目?
如果我使用live555单独播放视频文件,则可以正常工作,并且已将其生成的SDP文件与自己的文件进行了比较。
有任何想法吗?
谢谢
H264 / AAC SDP文件:
v=0
o=xxx IN IP4 192.168.13.43
s=live.3gp
u=http:///
e=admin@
c=IN IP4 0.0.0.0
b=AS:187
t=0 0
a=control:rtsp://192.168.13.43:555/live.3gp
a=isma-compliance:1,1.0,1
a=range:npt=0- 2630.336000
m=audio 0 RTP/AVP 97
a=rtpmap:97 MP4A-LATM/44100/2
a=control:rtsp://192.168.13.43:555/live.3gp/trackID=1
a=fmtp:97 profile-level-id=41; cpresent=0; config=400024203fc0
m=video 0 RTP/AVP 96
a=rtpmap:96 H264/90000
a=control:rtsp://192.168.13.43:555/live.3gp/trackID=2
a=cliprect:0,0,256,432
a=framesize:96 432-256
a=fmtp:96 packetization-mode=1; profile-level-id=42C015;sprop-parameter- sets=Njc0MkMwMTVGNDBEODQzNjAyMjAwMDAwMDMwMDIwMDAwMDAzMDNDMUUzMDY1NA==,NjhDRTA0NzI=
由live555为同一视频文件生成的SDP文件,该视频文件确实显示在Android上:
v=0
o=- 1303401850159891 1 IN IP4 192.168.13.58
s=H.264 Video, streamed by the LIVE555 Media Server
i=live.3g
t=0 0
a=tool:LIVE555 Streaming Media v2011.01.19
a=type:broadcast
a=control:*
a=range:npt=0-
a=x-qt-text-nam:H.264 Video, streamed by the LIVE555 Media Server
a=x-qt-text-inf:baseCasterCap.264
m=video 0 RTP/AVP 96
c=IN IP4 0.0.0.0
b=AS:500
a=rtpmap:96 H264/90000
a=fmtp:96 packetization-mode=1;profile-level-id=42C015;sprop-parameter-sets=Z0LAFfQNhDYCIAAAAwAgAAADA8HjBlQ=,aM4Ecg==
a=control:track1
最佳答案
sprop-parameter-sets中不应包含制表符或空格(可能是复制/粘贴错误)。
Android(或那里使用的播放器)可能不支持分组模式1。 1是可选的。
a = framesize和a = cliprect-这些不是标准的H.264,但可能不是问题。
我认为端口0对于您的使用是正常的(因为音频有效)?在offer-answer中,端口0将被拒绝(在回答中;在offer中,它表示禁用的流)。
我已经看到了一些实现(我在看您,Grandstream!),这些实现在H264 fmtp的分号后面都坚持空格(它们是错误的)-您混在一起。
配置文件级别ID中的“ C0”正确吗?增加了约束;不受限制地尝试一下,看看响应是什么。 (您仍然可以发送比指定的SDP约束更多的流。)
关于android - Android RTP SDP X264问题(有音频,但没有视频),我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/5758350/