Как реализовать HTTP Live Streaming сервер на Unix? - PullRequest
11 голосов
/ 13 декабря 2011

Я только что понял, что Apple требуется HTTP Live Streaming для просмотра видео в приложениях iPhone. Я не знал об этом раньше ... Я сейчас пытаюсь понять, что это включает, чтобы я мог решить, хочу ли я выполнять работу и сделать видео доступными в 3G или ограничить воспроизведение видео для пользователей, которые подключены к Wi-Fi .

Я прочитал обзор , предоставленный Apple, и теперь понимаю, что мой сервер должен сегментировать и индексировать мои мультимедийные файлы. Я также понимаю, что мне не нужно размещать контент для возможности его потоковой передачи (я могу указать на видео, размещенное где-то еще, верно?).

В данный момент мне неясно, что реализовать на моем сервере ( Ubuntu Hardy ) для фактического сегментирования и индексации на лету (еще раз, я делаю не размещать видео, которые я хочу показать).

Я нашел ссылку , объясняющую, как установить FFmpeg и X264, но я не знаю, является ли это лучшим решением (так как у меня есть сервер Ubuntu, я не могу использовать Apple Live Streaming инструменты, это правильно?). Кроме того, я не понимаю, в какой момент мой сервер знает, что видео необходимо преобразовать, и запускает задание ...

Будем весьма благодарны за любые отзывы, которые могли бы помочь мне точно понять, что делать на стороне сервера, чтобы иметь возможность транслировать видео в приложении для iPhone в 3G. (Да, и это имеет какое-то значение, мой бэкэнд приложения находится в Rails)

Ответы [ 3 ]

13 голосов
/ 05 сентября 2012

Существует несколько конкурирующих технологий, но сегодня, если вы хотите, чтобы любые файлы были совместимы для потоковой передачи на устройствах Apple (iPhone, iPad и т. Д.), Тогда 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/streaming/ - Apple предоставляет набор бесплатных инструментов для подготовки видео и списков воспроизведения для HTTP Live Streaming.

8 голосов
/ 13 декабря 2011

Если вы хотите передавать потоковый контент с веб-камеры: FMLE (кодировщик Flash Media Live)

Если вы хотите передавать статический контент (фильм): 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 (я думаю). После того, как он будет транслироваться, вы сможете увидеть его в «панели администратора» здесь . Подключитесь к вашему серверу (rtmp: // localhost / live /) и перейдите на вкладку просмотра и поставьте «livestream». Вы можете использовать mplayer rtmp: // localhost / live / livestream, чтобы посмотреть ваше видео тоже.

поток во флеш-плеере:

Вы можете использовать flowplayer (с плагином rtmp) или jwplayer.

1 голос
/ 17 января 2012

Самый простой способ для потоковой передачи HLS - использовать что-то вроде Wowza или FMIS (ни один из которых не дешев).Wowza примет входные данные (прямой эфир или сохраненный контент VOD) и выполнит сегментацию на лету.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...