Android 2.3, 4.0 RTSP ошибка потокового видео: нет видео, но аудио - PullRequest
0 голосов
/ 27 февраля 2012

У меня проблема с воспроизведением потокового видео.

На HTC Desire 2.2 видео воспроизводится хорошо, проблем нет но на Nexus One 2.3.4 и Nexus S 4.0.3 у меня есть только аудио, но не отображается видео

Вот журнал блоков, которые имеют одинаковые проблемы на N1 и NS

02-27 11:42:30.914: W/MyHandler(116): Unsupported format. Ignoring track #2.
02-27 11:42:30.914: I/MyHandler(116): SETUP(2) completed with result -1010 (Unknown error: 1010)

полный журнал:

02-27 11:42:20.634: I/MyHandler(116): connection request completed with result 0 (Unknown error: 0)
02-27 11:42:20.664: I/ARTSPConnection(116): status: RTSP/1.0 200 OK
02-27 11:42:20.674: I/MyHandler(116): DESCRIBE completed with result 0 (Unknown error: 0)
02-27 11:42:20.674: I/ASessionDescription(116): v=0
02-27 11:42:20.674: I/ASessionDescription(116): o=- 952000 952000 IN IP4 178.124.133.2
02-27 11:42:20.674: I/ASessionDescription(116): s=WowzaMediaServer
02-27 11:42:20.674: I/ASessionDescription(116): i=<No author> <No copyright>
02-27 11:42:20.674: I/ASessionDescription(116): c=IN IP4 0.0.0.0
02-27 11:42:20.674: I/ASessionDescription(116): t=0 0
02-27 11:42:20.674: I/ASessionDescription(116): a=SdpplinVersion:1610641560
02-27 11:42:20.674: I/ASessionDescription(116): a=StreamCount:integer;2
02-27 11:42:20.674: I/ASessionDescription(116): a=control:*
02-27 11:42:20.674: I/ASessionDescription(116): a=LiveStream:integer;1
02-27 11:42:20.674: I/ASessionDescription(116): a=Title:buffer;"V293emFNZWRpYVNlcnZlcg=="
02-27 11:42:20.674: I/ASessionDescription(116): a=range:npt=0-
02-27 11:42:20.674: I/ASessionDescription(116): a=tool:libavformat 53.5.0
02-27 11:42:20.674: I/ASessionDescription(116): m=audio 7234 RTP/AVP 97
02-27 11:42:20.674: I/ASessionDescription(116): b=AS:72
02-27 11:42:20.674: I/ASessionDescription(116): b=TIAS:64000
02-27 11:42:20.674: I/ASessionDescription(116): b=RR:1280
02-27 11:42:20.674: I/ASessionDescription(116): b=RS:640
02-27 11:42:20.674: I/ASessionDescription(116): a=maxprate:16.000000
02-27 11:42:20.674: I/ASessionDescription(116): a=control:streamid=1
02-27 11:42:20.674: I/ASessionDescription(116): a=range:npt=0-
02-27 11:42:20.674: I/ASessionDescription(116): a=length:npt=0
02-27 11:42:20.674: I/ASessionDescription(116): a=rtpmap:97 MP4A-LATM/44100/2
02-27 11:42:20.684: I/ASessionDescription(116): a=fmtp:97 profile-level-id=41;cpresent=0;config=400024203fc0
02-27 11:42:20.684: I/ASessionDescription(116): a=mimetype:string;"audio/MP4A-LATM"
02-27 11:42:20.684: I/ASessionDescription(116): a=ASMRuleBook:string;"Marker=0,AverageBandwidth=64000,TimestampDelivery=TRUE,InterDepend=1;Marker=1,AverageBandwidth=0,TimestampDelivery=TRUE,InterDepend=0;"
02-27 11:42:20.684: I/ASessionDescription(116): a=3GPP-Adaptation-Support:1
02-27 11:42:20.684: I/ASessionDescription(116): a=Helix-Adaptation-Support:1
02-27 11:42:20.684: I/ASessionDescription(116): a=AvgBitRate:integer;64000
02-27 11:42:20.684: I/ASessionDescription(116): a=ForceRTP:integer;1
02-27 11:42:20.684: I/ASessionDescription(116): m=video 7232 RTP/AVP 96
02-27 11:42:20.684: I/ASessionDescription(116): b=AS:208
02-27 11:42:20.684: I/ASessionDescription(116): b=TIAS:200000
02-27 11:42:20.684: I/ASessionDescription(116): b=RR:4000
02-27 11:42:20.684: I/ASessionDescription(116): b=RS:2000
02-27 11:42:20.684: I/ASessionDescription(116): a=maxprate:16.000000
02-27 11:42:20.684: I/ASessionDescription(116): a=control:streamid=2
02-27 11:42:20.684: I/ASessionDescription(116): a=range:npt=0-
02-27 11:42:20.684: I/ASessionDescription(116): a=length:npt=0
02-27 11:42:20.684: I/ASessionDescription(116): a=rtpmap:96 H264/90000
02-27 11:42:20.684: I/ASessionDescription(116): a=fmtp:96 packetization-mode=1; sprop-parameter-sets=Z0LAFdoCMK/r/wDTAMcQAAADABAAAAMB4PFi6g==,aM48gA==
02-27 11:42:20.684: I/ASessionDescription(116): a=mimetype:string;"video/H264"
02-27 11:42:20.684: I/ASessionDescription(116): a=ASMRuleBook:string;"Marker=0,AverageBandwidth=200000,TimestampDelivery=TRUE,InterDepend=1;Marker=1,AverageBandwidth=0,TimestampDelivery=TRUE,InterDepend=0;"
02-27 11:42:20.684: I/ASessionDescription(116): a=3GPP-Adaptation-Support:1
02-27 11:42:20.684: I/ASessionDescription(116): a=Helix-Adaptation-Support:1
02-27 11:42:20.694: I/ASessionDescription(116): a=AvgBitRate:integer;200000
02-27 11:42:20.694: I/ASessionDescription(116): a=ForceRTP:integer;1
02-27 11:42:20.704: I/ARTSPConnection(116): status: RTSP/1.0 200 OK
02-27 11:42:20.704: I/MyHandler(116): SETUP(1) completed with result 0 (Unknown error: 0)
02-27 11:42:20.704: W/MyHandler(116): Missing 'source' field in Transport response. Using RTSP endpoint address.
02-27 11:42:20.704: W/MyHandler(116): Unsupported format. Ignoring track #2.
02-27 11:42:20.714: I/MyHandler(116): SETUP(2) completed with result -1010 (Unknown error: 1010)
02-27 11:42:20.754: I/ActivityManager(163): Displayed by.tut.android/.tv.channelselector.VideoViewActivity: +338ms
02-27 11:42:20.804: I/ARTSPConnection(116): status: RTSP/1.0 200 OK
02-27 11:42:20.814: I/MyHandler(116): PLAY completed with result 0 (Unknown error: 0)
02-27 11:42:30.824: W/MyHandler(116): Never received any data, switching transports.
02-27 11:42:30.824: I/ARTSPConnection(116): status: RTSP/1.0 200 OK
02-27 11:42:30.834: I/MyHandler(116): TEARDOWN completed with result 0 (Unknown error: 0)
02-27 11:42:30.844: I/MyHandler(116): connection request completed with result 0 (Unknown error: 0)
02-27 11:42:30.864: I/ARTSPConnection(116): status: RTSP/1.0 200 OK
02-27 11:42:30.874: I/MyHandler(116): DESCRIBE completed with result 0 (Unknown error: 0)
02-27 11:42:30.874: I/ASessionDescription(116): v=0
02-27 11:42:30.874: I/ASessionDescription(116): o=- 139000 139000 IN IP4 178.124.133.2
02-27 11:42:30.874: I/ASessionDescription(116): s=WowzaMediaServer
02-27 11:42:30.874: I/ASessionDescription(116): i=<No author> <No copyright>
02-27 11:42:30.874: I/ASessionDescription(116): c=IN IP4 0.0.0.0
02-27 11:42:30.874: I/ASessionDescription(116): t=0 0
02-27 11:42:30.884: I/ASessionDescription(116): a=SdpplinVersion:1610641560
02-27 11:42:30.884: I/ASessionDescription(116): a=StreamCount:integer;2
02-27 11:42:30.884: I/ASessionDescription(116): a=control:*
02-27 11:42:30.884: I/ASessionDescription(116): a=LiveStream:integer;1
02-27 11:42:30.884: I/ASessionDescription(116): a=Title:buffer;"V293emFNZWRpYVNlcnZlcg=="
02-27 11:42:30.884: I/ASessionDescription(116): a=range:npt=0-
02-27 11:42:30.884: I/ASessionDescription(116): a=tool:libavformat 53.5.0
02-27 11:42:30.884: I/ASessionDescription(116): m=audio 7234 RTP/AVP 97
02-27 11:42:30.884: I/ASessionDescription(116): b=AS:72
02-27 11:42:30.894: I/ASessionDescription(116): b=TIAS:64000
02-27 11:42:30.894: I/ASessionDescription(116): b=RR:1280
02-27 11:42:30.894: I/ASessionDescription(116): b=RS:640
02-27 11:42:30.894: I/ASessionDescription(116): a=maxprate:16.000000
02-27 11:42:30.894: I/ASessionDescription(116): a=control:streamid=1
02-27 11:42:30.894: I/ASessionDescription(116): a=range:npt=0-
02-27 11:42:30.894: I/ASessionDescription(116): a=length:npt=0
02-27 11:42:30.894: I/ASessionDescription(116): a=rtpmap:97 MP4A-LATM/44100/2
02-27 11:42:30.894: I/ASessionDescription(116): a=fmtp:97 profile-level-id=41;cpresent=0;config=400024203fc0
02-27 11:42:30.904: I/ASessionDescription(116): a=mimetype:string;"audio/MP4A-LATM"
02-27 11:42:30.904: I/ASessionDescription(116): a=ASMRuleBook:string;"Marker=0,AverageBandwidth=64000,TimestampDelivery=TRUE,InterDepend=1;Marker=1,AverageBandwidth=0,TimestampDelivery=TRUE,InterDepend=0;"
02-27 11:42:30.904: I/ASessionDescription(116): a=3GPP-Adaptation-Support:1
02-27 11:42:30.904: I/ASessionDescription(116): a=Helix-Adaptation-Support:1
02-27 11:42:30.904: I/ASessionDescription(116): a=AvgBitRate:integer;64000
02-27 11:42:30.904: I/ASessionDescription(116): a=ForceRTP:integer;1
02-27 11:42:30.904: I/ASessionDescription(116): m=video 7232 RTP/AVP 96
02-27 11:42:30.904: I/ASessionDescription(116): b=AS:208
02-27 11:42:30.904: I/ASessionDescription(116): b=TIAS:200000
02-27 11:42:30.904: I/ASessionDescription(116): b=RR:4000
02-27 11:42:30.904: I/ASessionDescription(116): b=RS:2000
02-27 11:42:30.904: I/ASessionDescription(116): a=maxprate:16.000000
02-27 11:42:30.904: I/ASessionDescription(116): a=control:streamid=2
02-27 11:42:30.904: I/ASessionDescription(116): a=range:npt=0-
02-27 11:42:30.904: I/ASessionDescription(116): a=length:npt=0
02-27 11:42:30.904: I/ASessionDescription(116): a=rtpmap:96 H264/90000
02-27 11:42:30.904: I/ASessionDescription(116): a=fmtp:96 packetization-mode=1; sprop-parameter-sets=Z0LAFdoCMK/r/wDTAMcQAAADABAAAAMB4PFi6g==,aM48gA==
02-27 11:42:30.904: I/ASessionDescription(116): a=mimetype:string;"video/H264"
02-27 11:42:30.904: I/ASessionDescription(116): a=ASMRuleBook:string;"Marker=0,AverageBandwidth=200000,TimestampDelivery=TRUE,InterDepend=1;Marker=1,AverageBandwidth=0,TimestampDelivery=TRUE,InterDepend=0;"
02-27 11:42:30.904: I/ASessionDescription(116): a=3GPP-Adaptation-Support:1
02-27 11:42:30.904: I/ASessionDescription(116): a=Helix-Adaptation-Support:1
02-27 11:42:30.904: I/ASessionDescription(116): a=AvgBitRate:integer;200000
02-27 11:42:30.904: I/ASessionDescription(116): a=ForceRTP:integer;1
02-27 11:42:30.914: I/ARTSPConnection(116): status: RTSP/1.0 200 OK
02-27 11:42:30.914: I/MyHandler(116): SETUP(1) completed with result 0 (Unknown error: 0)
02-27 11:42:30.914: W/MyHandler(116): Unsupported format. Ignoring track #2.
02-27 11:42:30.914: I/MyHandler(116): SETUP(2) completed with result -1010 (Unknown error: 1010)
02-27 11:42:31.254: I/ARTSPConnection(116): status: RTSP/1.0 200 OK
02-27 11:42:31.254: I/MyHandler(116): PLAY completed with result 0 (Unknown error: 0)
02-27 11:42:32.866: I/AwesomePlayer(116): ARTSPController::connect returned 0

1 Ответ

0 голосов
/ 21 марта 2012

С какого это сервера? Изменить - я только что видел WowzaMediaServer

Действительно, вероятно, не достаточно информации, журналы сервера также были бы очень полезны.

Прежде всего, Android изменил медиа-серверы в этих версиях, перейдя с OpenCore на StageFright.

Ошибка: «02-27 11: 42: 20.704: W / MyHandler (116): неподдерживаемый формат. Игнорирование дорожки № 2»

Rtp-клиент android возвратил ошибку при «настройке» видеодорожки. Очевидное первое: Ваш файл SDP указывает порт 7232 "m = видео 7232 RTP / AVP 96". Этот порт уже используется?

Согласно APacketSource.cpp от libstagefright медиаплеера, Причины установки могут быть неудачными из-за этой ошибки:
1) Нет допустимых размеров изображения в SDP или закодированных спропах (попробуйте вручную их декодировать) с помощью инструмента base64 (и того, который поддерживает двоичные данные, а не только текст ascii),
2) если используется AMR и частота дискретизации! = 8000 и имеется более 1 канала (вы не)
3) если используется AMR WB и частота дискретизации! = 16000 и существует более 1 канала (вы не)
4) У вас есть строковое описание, которое НЕ удовлетворяет одному из следующих условий: "H264 /", "H263-2000 /", "H263-1998 /", "MP4A-LATM /", "AMR /", "AMR-WB /", "MP4V-ES /", "mpeg4-generic / / «

У вас есть "H264 / 90000" И "video / H264"

Я бы потерял строку "a = mimetype: string;" video / H264 "" в файле SDP и посмотрел, как она работает ?? Хотя это длинный снимок (но это не объясняет, почему звук работает, так как он одинаков)

Хотя с этим * не должно быть никаких проблем, в моем опыте с android и RTP / RTSP / SDP пока что сценический страх НЕ очень хорош при работе с расширенными типами, только с минимальным значением.

Если вы хотите посмотреть на то, что я объяснил выше, вы можете проверить исходный код Android, файлы находятся в "/ media / libstagefrigt / rtsp /". Соответствующими файлами являются MyHandler.h и APacketSource.cpp

ОБНОВЛЕНИЕ: у вас есть другая / хуже проблема

Я только что видел это в вашем журнале: «02-27 11: 42: 30.824: W / MyHandler (116): никогда не получал никаких данных, переключая транспорты». и я заметил, что эти две попытки идут спина к спине, а не то, что я думал, вы копировали и вставляли две попытки.

Здесь есть две проблемы: одна - сбой настройки видео, а вторая - неудача всей первой настройки сеанса.

Ошибка «Никогда не получал никаких данных, переключая транспорты» возникает после 10-секундного тайм-аута между Android, выдавшим команду PLAY, и он не получает данные в течение 10 секунд. Затем он завершает сеанс и пытается установить сеанс по TCP.

Скорее всего, некоторые порты UDP заблокированы или не открыты на вашем компьютере / брандмауэре и т. Д. Это приводит к сбою первого сеанса. Это может даже объяснить причину неудачной настройки видео. Проверьте, какие порты пытается использовать сервер для настройки видео. Убедитесь, что они выше 1024.

Кроме того, мне не нравится, как ваш SDP сначала перечисляет аудио, а затем видео, но аудио использует меньшие порты, чем последующее видео (вероятно, это нормально, просто "выглядит" странно)

...