Как реализовать HTTP Live Streaming server на Unix?
Я только что понял, что Apple требуется HTTP Live Streaming для просмотра видео в приложениях iPhone. Я не знал об этом раньше... Теперь я пытаюсь понять, что это означает, чтобы я мог решить, хочу ли я сделать работу и сделать видео доступным в 3G или ограничить воспроизведение видео для пользователей, подключенных к wi-fi.
прочитал обзор предоставлено Apple, и теперь понимаю, что мой сервер должен сегментировать и индексировать мои медиа-файлы. Я тоже поймите, что мне не нужно размещать контент, чтобы иметь возможность транслировать его (я могу указать на видео, размещенное где-то еще, верно?).
на данный момент мне непонятно, что реализовать на моем сервере (Ubuntu Харди) для сегментация и индексирование на лету (еще раз, я не размещаю видео, которые я хочу обслуживать).
нашел ссылке объясняя, как установить FFmpeg и X264, но я не знаю, является ли это лучшее решение (так как у меня есть сервер Ubuntu, я не могу использовать Apple Live Streaming tools, это правильно?). Кроме того, я не понимаю, в какой момент мой сервер знает, что видео нужно преобразовать и начать работу...
любая обратная связь, которая может помочь мне понять, что именно делать на стороне сервера, чтобы иметь возможность передавать видео на моем iPhone приложение в 3G будет очень признателен! (О, и просто это имеет значение, мое приложение back-end находится в Rails)
3 ответов
Если вы хотите транслировать живой контент с веб-камеры : FMLE (flash media live encoder )
Если вы хотите транслировать статический контент (фильм): ffmpeg & xuggle
red5:
вы медиа-сервер может быть red5 (с открытым исходным кодом и бесплатно) или FMS или wowza. Но я использовал только red5, я не знаю о других. Вы можете найти red5 здесь.
вы сервер может быть где угодно, но вам нужно будет открыть какой-то порт (1935 для rtmp на минимум), 5080 для "админ панели", вы можете увидеть 9999 в списке. (Проверьте документ ) Red5-это медиа-сервер на java, поэтому вам понадобится java jdk >= 1.6.
Red5 1.0 RC можно найти здесь. Вы можете найти версию для windows, osx или linux. Я использовал версию tarball. Извлеките его и бегите .red5.sh". Вы должны иметь доступ к администратору по адресу http://localhost:5080/ и вы также должны увидеть отображение видео. Если нет, что-то не так, и ты не можешь уйти. дальше, пока это работает.
поток с ffmpeg:
вы можете найти xuggle здесь и вы можете найти более подробную информацию об этом здесь
ffmpeg -i your_file.flv -re -acodec copy -vcodec copy -f flv rtmp://localhost_or_yourred5serverip/live/livestream
имейте в виду, что если вы хотите транслировать его в интернете, только flv и mp4 могут играть в flash player ( я думаю ). После его потоковой передачи вы сможете увидеть его в" панели администратора"здесь. Подключение к серверу (rtmp: / / localhost / live/) и перейдите на вкладку view и поставьте "livestream". Вы можете использовать mplayer rtmp://localhost / live / livestream, чтобы увидеть свое видео.
поток в Flash player:
вы можете использовать flowplayer (с плагином rtmp) или jwplayer.
существует несколько конкурирующих технологий, но сегодня, если вы хотите, чтобы любые файлы были совместимы для потоковой передачи на устройствах Apple (iPhones, iPads и т. д.), то HLS-это путь. Кстати, он также поддерживается большинством браузеров и Android, поэтому не плохое место для начала. Обратите внимание, однако он не подходит для потокового видео-контента, несмотря на название.
Если вы не хотите жить видео, вам действительно не нужно red5 или wowza или fms или что-то в этом роде. HLS-это в основном набор коротких сегменты видео (например, 5 минут каждый), закодированные с разной скоростью, и список воспроизведения m3u, который вы даете Flash или HTML5-плееру в браузере. Это зависит от вас, чтобы решить длину сегмента или как вы его кодируете.
Это лучшая статья, которую я видел о том, как выбирать разрешения, битрейты, размеры сегментов и т. д.: http://www.streamingmedia.com/Articles/Editorial/Featured-Articles/Adaptive-Streaming-in-the-Field-73017.aspx
оттуда вы просто например, создайте структуру каталогов, например
/data/video/video_id/original.mp4 /data/video/video_id/quality1/chunk1.mp4 /data/video/video_id/quality1/chunk2.mp4 /data/video/video_id/quality2/chunk1.mp4 etc..
затем вам нужно создать плейлист m3u для всех кусков и качеств, и это до самого игрока, чтобы реализовать переключение между качествами и воспроизведением следующего файла (который уже есть у большинства современных игроков).
Я также настоятельно рекомендую проверить:https://developer.apple.com/resources/http-streaming/ - Apple предоставляет кучу бесплатных инструментов для подготовки видео и плейлистов для HTTP прямая трансляция.
самый простой способ потоковой передачи HLS-использовать что-то вроде Wowza или FMIS (ни то, ни другое не дешево). Wowza будет принимать входные данные (либо живой поток, либо сохраненный контент VOD и выполнять сегментацию на лету.