Проблема Android RTP SDP X264 (есть аудио, но нет видео) - PullRequest
2 голосов
/ 22 апреля 2011

Android будет воспроизводить как аудио, так и видео (AAC, h263), которые я отправляю на сервер с моего rtp-сервера, но когда я обслуживаю поток AAC / H264, я получаю только аудио и без видео.

В рабочем сценарии Android выдает команду SETUP для обоих идентификаторов дорожек, но H264, android никогда не выдает команду SETUP для второй дорожки видео.

Мой файл SDP правильный? Идентификатор профиля и sprops, которые я считаю правильными, копируются непосредственно из sps и pps NAL из кодера H264. Видео является базовым@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=

Файл SDP, созданный live555 для того же видеофайла, который отображается на 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

Ответы [ 2 ]

1 голос
/ 26 апреля 2011

Спасибо за вашу помощь, Jesup, это очень ценилось.

Проблема была в параметрах sprop, я заметил, когда копирую и вставляю второй файл SDP для вас.

КодировщикЯ использовал для вычисления base64 мои тестовые данные, а не двоичные данные.Таким образом, 65 интерпретировался как символ 6, а символ 5 и кодировался, а не как одно число (я полагаю, A в ascii).Имеет ли это смысл?Глупая ошибка с моей стороны.Еще раз спасибо, Ян

1 голос
/ 25 апреля 2011

наборы параметров sprop не должны содержать вкладки или пробела (это может быть ошибка копирования / вставки).

Android (или используемый там проигрыватель) может не поддерживать режим пакетирования 10 требуется;1 необязательно.

a = framesize и a = cliprect - они не являются стандартными H.264, но могут не быть проблемой.

Я предполагаю, что порт 0 является нормальным для вашего использования (так как аудио работает)?В предложении-ответе порт 0 будет отклоненным потоком (в ответе; в предложении это означает отключенный поток).

Я видел реализации (я смотрю на ВАС, Grandstream!), Которыенастаивайте на пробелах после точки с запятой для H264 fmtp (они не правы) - у вас есть смесь.

Является ли "C0" в идентификаторе уровня профиля правильным?это добавляет ограничения;попробуйте это без ограничений и посмотрите, каков ответ.(Вы все еще можете отправить более ограниченный поток, чем указанный SDP.)

...