Как заставить Android воспроизводить высококачественный RTSP-поток без сбоев? - PullRequest
4 голосов
/ 23 июня 2011

Кому-нибудь повезло с потоковой передачей видео высокого качества (более 1000 кбит / с) на Android через RTSP?

В настоящее время у нас есть видеопотоки низкого качества (около 200 кбит / с), которые прекрасно работают через 3G.Сейчас мы пытаемся обслуживать высококачественный поток, когда у пользователя более быстрое соединение.Высококачественное видео воспроизводится в VLC плавно, но при воспроизведении на Android кадры пропадают и блокируются даже при 4-мегабитном соединении.

Похоже, что приложение YouTube использует простую загрузку HTTP для своих высококачественных видео.Это работает хорошо и воспроизводится гладко, но не будет работать для потокового видео.Кому-нибудь повезло с потоковой передачей видео высокого качества на Android через RTSP?

Видео кодируется с использованием разрешения H.264, 1500 кбит / с, 24 кадра в секунду и разрешения 720x480.В приложении мы используем VideoView для воспроизведения видео.Мы используем Darwin Streaming Server, но мы открыты для других вариантов, если это необходимо.

Обновление 6/23 / 2011

Рассмотрим еще немного Дарвина сегодня.Пока что я просто регистрирую информацию о запросах и сеансах в модуле Дарвина.

Оригинальный Droid пытается использовать эти настройки: 3GPP-Adaptation:...size=131072;target-time=4000.Хотя это означает, что требуется 4 секунды буфера, 131 Кбайт удерживает около секунды воспроизведения при 1200 кбит / с.Я понимаю, что 1200 кбит / с - это большое, но это необходимо для видео высокого качества (минимальное сжатие 720x480).

Я пытаюсь заставить клиента буферизовать больше, но я не понял, как это сделать.это еще.Я просто просматриваю исходники Darwin Streaming Server и пытаюсь понять, как они работают.Есть какие-нибудь эксперты по Дарвину?

Обновление от 6/24/2011

Оказывается, использование старого доброго HTTP для просмотра видео по запросу работает хорошо без потери качества.Когда мы доберемся до потокового вещания, нам придется больше смотреть на RTSP.

1 Ответ

2 голосов
/ 23 июня 2011

Ну, даже если сеть способна передавать с такой скоростью, вам все равно нужно ее декодировать.Что вы используете для декодирования?Вам, вероятно, понадобится использовать ускоренный видеодекодер NEON, чтобы вы могли иметь правильную частоту кадров и буфер приличного размера ... графический процессор так же хорош, как и шина, в которой он находится ... Также каковы ваши настройки кодированияи разрешение?

Редактировать: Вы кодируете их с битрейтом от большого до высокого, половина из них будет работать нормально.Также вам необходимо убедиться, в чем проблема.Если MediaPlayer получает данные и не может передавать их с приемлемой частотой кадров, в этом случае вам придется заменить код MediaPlayer на свой собственный проигрыватель.Если это проблема с сетью, то единственное решение - снизить битрейт, 600 Кбит / с было бы просто замечательно (или 500 Кбит / с видео, 128 Кбит / с аудио), это в 3 раза больше, чем ваш поток 200 КБ, и на таком маленьком экране разница не заметна.

...