Задача воспроизведения потокового видео на мобильном устройстве

nikola1956

Никогда не сталкивался с этой узкой темой, поэтому прошу помочь оценить сложность задачи.
Имеется какой-нибудь видео-канал. Например, этот:
http://ftp.barstv.ru:4080
(взял его, так как доступен мне без ввода логина-пароля). На компе такое потоковое видео несложно воспроизвести, например, с помощью VLC-плеера. Возникает аналогичная задачка для мобильного устройства (Android или iOS). Насколько сложно ее решить, есть ли готовый функционал в соответствующих фреймворках?
Беглое гугление говорит о трех технологиях воспроизведения потокового видео:
(1) Progressive Streaming — самая простая и примитивная
(2) Live Streaming (m3u8-файлы, создана Apple)
(3) RTSP (Real Time Streaming Protocol)
Есть ли для этих технологий готовый код, открытые проекты и т.п.?

YUAL

Rtsp - отстой. А ещё он весьма чуствителен к плохим каналам.
Мы по итогам от него отказались и перешли на hls.
Но вообще я не очень понял твою задачу. Любой из этих протоколов на андройде играет vlc.
iOS из коробки браузером умеет hls. В андройде вроде есть несколько библиотек под это.
Основная проблема в вещающем софте.
Тебе нужен софт, который будет брать твой Progressive Streaming и вещать его в какой-то другой формат или ты можешь выбрать любой входной формат?

Dimon89

Уточни постановку задачи. Не все мобильные устройства поддерживают все форматы потокового видео. Стриминг тоже бывает разный - ты можешь стримить конечный файл заранее известной длины, а можешь транслировать видео с камеры. Везде есть нюансы =) Тебе надо написать клиента, сервер, или же просто проиграть какое-то видео?

apl13

Уточни постановку задачи.
Требуется организовать мобильную трансляцию праздничной проповеди, с тем чтобы не потерять при этом ни грамма благодати.

nikola1956

Rtsp - отстой. А ещё он весьма чуствителен к плохим каналам.
Мы по итогам от него отказались и перешли на hls.
Очень благодарен за ценный комментарий! Немного поизучал тему, также склоняюсь к варианту HLS (HTTP Live Streaming).
Но вообще я не очень понял твою задачу. Любой из этих протоколов на андройде играет vlc.

Нужно добавить функциональность воспроизведения потокового видео в мобильное приложение.
Основная проблема в вещающем софте.
Тебе нужен софт, который будет брать твой Progressive Streaming и вещать его в какой-то другой формат или ты можешь выбрать любой входной формат?

Сервер свой. Пока только начал изучать тему. Еще раз спасибо за подробный ответ! :)

nikola1956

Уточни постановку задачи. Не все мобильные устройства поддерживают все форматы потокового видео. Стриминг тоже бывает разный - ты можешь стримить конечный файл заранее известной длины, а можешь транслировать видео с камеры.
Файла конечной длины нет. Может идти неограниченный по времени видео-поток как, например, с удаленной видеокамеры или как телевизионный канал.
Тебе надо написать клиента, сервер, или же просто проиграть какое-то видео?

Нужно написать (спроектировать) клиента. Ну и в общих чертах понять, как может быть организована работа на стороне сервера.

Dimon89

Немного поизучал тему, также склоняюсь к варианту HLS (HTTP Live Streaming).
...
Файла конечной длины нет. Может идти неограниченный по времени видео-поток как, например, с удаленной видеокамеры или как телевизионный канал.
Ну тогда про поддержку андроида ниже 4-го можешь забыть. Там только rtsp, и то на сервере надо писать довольно много кода для совместимости с разными девайсами. Если очень надо, придётся подключать какую-нибудь стороннюю либу через NDK - тоже геморрой тот ещё.

psm-home

Попробуй задать вопрос в streaming-ru. Там есть люди, которые такими вещами зарабатывают на жизнь и собаку съели на этом, как автор стримингового сервера erlyvideo Макс Лапшин.

nikola1956

Ну тогда про поддержку андроида ниже 4-го можешь забыть.
С помощью плагина vitamio можно. Только что попробовал — все работает! Правда требуется дополнительно устанавливать этот плагин при первом запуске приложения. :( Но плагин легкий, поэтому установка занимает около 10-20 секунд при обычном интернете.
Есть другие подходы к решению этой проблемы. На StackOverflow программист рассказывает, что они сами все успешно написали с использованием библиотек ffmpeg.

nikola1956

Попробуй задать вопрос в streaming-ru.
Спасибо за ссылку! На уровне прототипа задача уже более-менее решена, в дальнейшем, конечно, придется копать детали.

Kent1331

vlc открыт и все что нужно поддерживает.
можно его использовать и сделать нужно будет по сути только оболочку)

YUAL

Для потокового видео на уровне протипа всё просто по сравнению с огромным кол-вом деталей. У нас сервер для стриминга в ртсп и hls целый отдел пилит и допиливает уже не первый год. Хотя вопрос конечно на сколько массовое будет использование.

Dimon89

Есть другие подходы к решению этой проблемы. На StackOverflow программист рассказывает, что они сами все успешно написали с использованием библиотек ffmpeg.
Это и есть "через NDK"

Dimon89

С помощью плагина vitamio можно. Только что попробовал — все работает!
У этого плагина ещё не так давно был замечательный баг - он удалял видеофайлы с sd-карточки. Как сейчас, не в курсе.
upd:
Что нового
* Fix bugs of deleting video files randomly from sdcard. Sorry for this ugly bug.

Dimon89

vlc открыт и все что нужно поддерживает.
можно его использовать и сделать нужно будет по сути только оболочку)
он через ffmpeg играет, один фиг NDK использовать

Dimon89

Для потокового видео на уровне протипа всё просто по сравнению с огромным кол-вом деталей.
О да. И главная деталь - аппаратное ускорение, которое недоступно из ffmpeg

Hastya

как уже заметили, на Андроиде HLS не работает. RTSP можно настроить, но это адский гемор.
Оставить комментарий
Имя или ник:
Комментарий: