Darwin Streaming Server
Материал из Gentoo Linux Wiki
Содержание |
[править] Вступление
Взято отсюда.
Первоначально, эта статья планировалась, как мануал по установке Darwin Streaming Server, но, в последствии, переросла в руководство по установке полноценного сервера потокового видео, с привлечением таких средств, как mpeg4ip и ffmpeg.
Итак, среди имеющихся на данный моменг open-source-средств вещания потокового видео по сети можно выделить несколько продуктов - live555server, vlc и Darwin streaming server. Сравнения этих программ, а также их недостатки и преимущества лучше всего посмотреть в сети, в двух словах скажу лишь вот что: live555 - прост до безобразияb(играет, всё, что ему подсовывают в текущую директорию), практически не настраиваем, правильным образом (с возможностью перемотки) играет только MPEG1,2 - не самый маленький, так скажем формат. VLC не устраивает меня по некоторым личным предубеждениям, хотя в некотором он, вероятно, превосходит Darwin Streaming Server. Ну, и собственно, то, чему посвящена эта статья - Darwin Streaming Server (далее - DSS)b- open-source-проект от Apple, насколько я понимаю, все самое лучшее из него попадает в Quick Time Streaming Server, с которого Apple имеет профит. Итак, приступим.
[править] Установка
На оффициальном сайте имеется установщик DSS на дистрибутив Fedora Core, что естественное, нам не подходит. Спасибо добрым людям, на bugs.gentoo.org есть ебилд, взять который можно тут. На данный момент нас интересуют ебилды версии 6.0.3. Качаем тарбол, делаем себя рутом, далее:
# mkdir /usr/local/portage/media-video/darwin-streaming-server # tar -xvjpf darwin-streaming-server_ebuilds.tar.bz2 -C /usr/local/portage/media-video
Опять заходим на bugs.gentoo.org и скачиваем два файлика: rss-admin.rc и rss.rc. По замыслу автора, это должны были быть rc-скрипты для DSS и DSS-admin.
# mv rss.rc /usr/local/portage/media-video/darwin-streaming-server/files/dss.rc # mv rss-admin.rc /usr/local/portage/media-video/darwin-streaming-server/files/dss-admin.rc # cd /usr/local/portage/media-video/darwin-streaming-server # ebuild darwin-streaming-server-6.0.3.ebuild digest
Смотрим, не ругается ли кто:
# emerge -vp media-video/darwin-streaming-server > Calculating dependencies... done! > [ebuild N ] media-video/darwin-streaming-server-6.0.3 USE="ssl" 0 kB [1] > Total: 1 package (1 new), Size of downloads: 0 kB
Все ОК. Как мы видим, нам доступен только USE-флаг "ssl". Если у вас нет подписанного сертификата ssl, USE-флаг можно отключить. Кто как хочет, я включаю. Далее, собираем пакет:
# emerge -v media-video/darwin-streaming-server
Собирается пакет недолго, на AthlonXP 2600+ 1G с PORTAGE_NICENESS=7 получается минут за 10-15. Ошибок во время сборки у меня не было, собирал два раза на двух разных машинах, всегда все проходило гладко (как совет - если какие-то ошибки все-таки выползли, попробуйте поставить бинарный пакет).
Как только закончится сборка, читаем:
# * If you intend on using the web-based admin interface you # * need to run 'qtpasswd -A admin <username>' before # * starting up the admin server. If you do not plan on # * using the admin interface you can just start the Darwin # * Streaming Server.
Думаем головой и принимаем решение. Как подсказыает логика, в большинстве случаев веб-админка нужна, поэтому:
# qtpasswd -A admin admin > Adding userName admin > New password: > Re-type new password: > Adding user admin to group admin
Если хотим, чтобы при перезагрузке DSS стартовал автоматически:
# rc-update add dss default # rc-update add dss-admin default
[править] Настройка
# cd /etc/dss/ # ls -l
В этой директории лежат конфигурационные файлы, рекуомендую всех их просмотреть на предмет того, что же вы ожидаете. Обязательно посмотрите файлы qtusers и qtgroups - там должны быть юзеры, которых вы добавили командой qtpasswd, и хэши паролей. Кроме того, у этих файлов должны быть права на чтение пользователем nobody. Мной этот вопрос решился так:
# chmod +r /etc/dss/qtusers # chmod +r /etc/dss/qtgroups
В директории /var/log/dss лежат логи программы - если что-то идет не так, первым делом рекомендуется посмотреть туда.
Проверяем, что же получилось.
# /etc/init.d/dss restart # /etc/init.d/dss-admin restart
Заходим на 127.0.0.1:1220 и попадаем на страницу первоначальной настройки dss. Веб-интерфейс админки описывать не будем, там все просто и понятно описано английским языком.
[править] Проверка работоспособности
В директории /var/lib/dss/media/ лежат сэмплы видео файлов (в форматах mov и mp4). Эта директория является корневой для работы программы.
# cd /var/lib/dss/media/ # ls > ./ http/ sample_100kbit.mov sample_300kbit.mov sample_50kbit.3gp sample_h264_1mbit.mp4 sample.mp3 > ../ playlists/ sample_100kbit.mp4 sample_300kbit.mp4 sample_h264_100kbit.mp4 sample_h264_300kbit.mp4
Соответственно, чтобы проверить, как же у нас все работает, делаем следующее:
# mplayer rtsp://127.0.0.1/sample_h264_1mbit.mp4
У вас должен открыться сэмпл с логотипом QuickTime.
Я иcпользую mplayer. Вообще, мною проверено, что протокол rtsp понимают mplayer, vlc и Apple QuickTime. Windows Media Player начинает играть mp4 только после установки K-Lite Mega Codec Pack. Остальные плееры мною не проверялись. Напомню, что видео-проигрыватель будь то mplayer или vlc, должен быть собран с USE-флагами rtsp и stream.
[править] Использование ffmpeg и MP4Box
[править] Установка необходимых пакетов
Для того, чтобы DSS мог играть нужное вам видео, над этим самым видео необходимо провернуть некоторые манипуляции с помощью двух софтин - ffmpeg и MP4Box из состава GPAC: Ставим нужные пакеты:
# USE="aac ffmpeg mpeg2" emerge -v gpac ffmpeg
Например, у нас есть некоторый файл somefile.mkv, и мы хотим, чтобы он проигрывался с помощью DSS. Для этого видеопоток нужно пережать с использованием подходящего кодека (например, MPEG-4), звук пережать в aac, и все это запаковать в контейнер mp4 (для DSS надо сделать ИМЕННО ТАК).
[править] Обработка аудиопотока
# ffmpeg -i somefile.mkv -vn somefile.aac
в результате мы получаем raw-аудиофайл в формате aac (опция -vn отключает обработку видеопотока, также можно попробовать опции -acodec и -ab). Аудиопоток готов.
[править] Обработка видеопотока
Конвертируем видеопоток в исходном файле в m4v:
# ffmpeg -i somefile.mkv -an -f m4v outvideo.m4v
[править] Создание файла .mp4
Мы имеем в текущей директории два файла - звукового потока outaudio.aac (так как DSS не любит mp3) и видеопотока - outvideo.m4v. С помощью утилиты MP4Box, входящей в пакет gpac, запакуем эти два потока в контейнер mp4:
Засовываем в контейнер звук:
# MP4Box -add outaudio.aac test.mp4
Засовываем видео:
# MP4Box -add outvideo.m4v test.mp4
Добавляем хинты:
# MP4Box -hint test.mp4
Смотрим, что получилось. Можно так:
# MP4Box -info test.mp4
Но, на мой вкус, гораздо удобнее для глаза утилита mp4creator из пакета mpeg4ip:
# mp4creator -list test.mp4 Track Type Info > 201 video MPEG-4 Simple @ L1, 140.200 secs, 237 kbps, 640x272 @ 25.000000 fps > 101 audio MPEG-4 AAC LC, 146.146 secs, 62 kbps, 44100 Hz > 2 od Object Descriptors > 1 scene BIFS > 65736 hint Payload (null) for track 201 > 65636 hint Payload (null) for track 101
Звук, видео, хинты на месте, проверяем:
# mplayer test.mp4
Если звук и видео играют, то всё ОК.
[править] Воспроизведение через DSS
# cp ./test.mp4 /var/lib/dss/media/ # mplayer rtsp://127.0.0.1/test.mp4
Если файл открывается и играет, значит, это руководство было написано не зря.
[править] Поддерживаемые медиаплейеры
Воспроизводить поток от DSS в данный момент могут практически все цивилизованные медиаплееры, за исключением, наверное, Windows Media Player (который не дружит ни с rtsp, ни с mp4. Печально). Единственный камень преткновения в данный момент - это перемотка (поиск).
- Mplayer не умеет перематывать поток в произвольное место СОВСЕМ, если прервались где-то в середине, придется смотреть заново (подозреваем, что это связано с тем, что mplayer использует для воспроизведения через rtsp библиотеку live555).
- VLC при перемотке повисает, но если в этом случае нажать паузу, затем кнопку "play", продолжит играть с требуемого момента(криво, но играет)
- mp4player, входящий в пакет mpeg4ip (не забыть USE-флаг "player"), перематывает без проблем, но практически неюзабелен в силу скудности графического интерфейса.
- QuickTime. Под Linux естественно не работает, под Windows и MacOS все прекрасно воспроизводит, перематывает с минимальными задержками, короче, красота!
[править] Доступная документация
- FAQ по DSS версии 6.0.3. на сайте разработчиков.
- Мануал от Apple по QTSS и DSS (версии 4.1). Хоть там и написаны банальности, прочитать НУЖНО от первой страницы до последней, ибо в Apple глядят на мир совершенно иными глазами, на трансляцию потокового видео в том числе.
- RFC2326, посвященное протоколу RTSP.
- Материалы по основным операциям с потоковым видео - сжатие, размещение на сервере и пр.
- Документация по использованию MP4Box. Описывается очень много опций, настоятельно рекомендую ознакомиться со всеми.