Так повелось, что под платформу 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 возможность показать себя красивых всему миру в реальном времени. Если кто-то сделает, дайте знать ;)