понедельник, 18 января 2016 г.

Live трансляции и Windows Phone

Так повелось, что под платформу Windows Phone отсутствует множество популярных приложений. Среди них критически популярные: VSCO, Periscope, Snapchat. Microsoft вбахивает кучи денег, чтобы перенести самые крутые приложения, но находятся ребята вроде Snapchat, которые так ненавидят Microsoft, что судятся с разработчиками сумевшими разобрать snapchat приложения на api и сделать приложение под WP. Копии под iOS и Android адвокаты успешно игнорируют.

Но сегодня я расскажу о том, как обстоят дела с live видео трансляциями с телефона под Windows. Сейчас начало 2016-го, и нет ни одного приложения, позволяющего делать live видео трансляции с вашего windows телефона, как это делают миллионы школьников с помощью Periscope под другие мобильные платформы.

Неделю я гуглил и вникал в эту тему и мне импонирует следующий подход: стримить с телефона на сервер, там конвертировать во все возможные форматы и транлировать на любые устройства. Альтернативный способ - писать voip p2p клиенты, как это делает Skype для онлайн конференций.


Эта картинка взята с https://wmspanel.com/nimble. Nimble просто шикарный стример - принимает ваш поток и раздает в любом популярном формате. Я провел небольшой тест: установил Nimble, запустил стримминг изображения вебкамеры с помощью Adobe Media Encoder и сразу поднял простенькую html страницу с видео фреймом из Nimble. Задержка таким способом у меня получилась ~16 секунд.

Как сделать live стримминг с Windows Phone? Вот такие инструменты хотел использовать я:

RTMP (ffmpeg на телефоне) -> WebORB For .Net (Server) -> Nimble (optional) -> любые клиенты

RTMP - старенький простой стримминг протокол. Его поддерживает очень известная видео библиотека ffmpeg. Microsoft сделала отличный пример-обертку FFmpegInterop, но только под клиентскую часть. Т.е. в этом примере можно только принимать стрим на телефон/десктоп (поддерживается UWP под Windows 10). Чтобы сделать трансляцию с телефона, всего-то нужно дописать эту C++ обертку, добавить к вызову ffmpeg опции конвертации видеопотока и отправкой на сервер вместо приема.

WebOrb - единственный найденный мной .net фреймворк, способный работать с rtmp форматом. Дальше поток можно сразу подключаться к потоку rtmp понимающими плеерами или отдать потом на Nimble, чтобы любое устройство смогло подключиться

Аналоги для серверной части - ffmpegServer, nginx (с rtmp модулем), wowza server, nimble.

Когда-то у microsoft существовал silverlight компонент (поддерживался и на WP), способный транслировать видео в IIS Smooth Streaming формате. Эту штуку использовали на Олимпийских играх, чтобы обеспечивать видео трансляцию с минимальной задержкой. Но увы, silverlight умер и унес с собой эту технологию.

Вывод:
Нужно доковырять FFmpegInterop пакет и наконец подарить пользователям WP возможность показать себя красивых всему миру в реальном времени. Если кто-то сделает, дайте знать ;)

Комментариев нет:

Отправить комментарий