Загрузка потокового мультимедиа Live555 от http://www.live555.com/liveMedia/
Ваш файл src обычно называется live555-latest.tar.gz
Распаковываем и компилируем:
- Распаковка:
tar xzvf live555-latest.tar.gz
. Это создаст каталог с именем live.
cd live
./genMakefiles linux
(если у вас 32-битная система) или ./genMakefiles linux-64bit
, если ваша система 64-битная)
make
, и через некоторое время вы получите новый скомпилированный код
В Live55 есть много хороших вещей, но нас интересуют только «testProgs»
каталог, в котором находится openRTSP. OpenRTSP позволит нам получить сигнал и отправить его
ffmpeg - программа, которая кормит ffserver. Ffserver - это сервер, который получает
сигнал от ffmpeg и преобразует его в SWF (и другие форматы).
Скачать, распаковать, настроить и установить ffmpeg
- Загрузите ffmpeg с http://www.ffmpeg.org/. Я протестировал версию 0.6.1: http://www.ffmpeg.org/releases/ffmpeg-0.6.1.tar.gz
- Распаковка:
tar xzvf ffmpeg-0.6.1.tar.gz
. Это создаст каталог с именем ffmpeg-0.6.1
cd ffmpeg-0.6.1
- Все забавные вещи потокового видео упакованы в VideoLan. Так что вы
Лучше установите VideoLan прямо сейчас. Перейдите к http://www.videolan.org/ и посмотрите, как легко
установить его. Вы можете быть удивлены тем, что пакетные зависимости содержат библиотеки ffmpeg.
- После установки VideoLan выполните
./configure
, а затем make
.
- Через 3 или 4 часа у вас будет скомпилирован и работает mmpeg и mmserver.
- Теперь мы почти готовы транслировать весь мир. Прежде всего, давайте попробуем
заставить openRTSP работать.
Перейдите в ваш «живой» каталог (помните 3.2) и выполните: cd testProgs
Попробуйте это: ./openRTSP -v -c -t rtsp://<hostname>:<port>/<cam_path>
Первый из
все, вы увидите журналы, которые говорят что-то вроде:
- opening conection blah blah.
- sending DESCRIBE blah blah.
- receiving streamed data.
Если все пойдет хорошо, ваша консоль начнет очень быстро печатать множество странных символов.
Эти символы являются байтами видео, но вы не можете видеть это (сейчас). Если вы не видите свой экран
печать символов, что-то не так с вашей конфигурацией. Проверьте шаги вверх
до сих пор.
- Мы получили сигнал! Теперь давайте отправим его полезному компоненту: ffmpeg, который связан с
ffserver. Нам нужно создать файл конфигурации для ffserver.
Используйте ваш любимый редактор для создания этого текстового файла:
Port 8090
BindAddress 0.0.0.0
MaxHTTPConnections 2000
MaxClients 1000
MaxBandwidth 1000
CustomLog -
NoDaemon
<Feed feed1.ffm>
File /tmp/feed1.ffm
FileMaxSize 200K
ACL allow 127.0.0.1
</Feed>
<Stream testFlash.swf>
Feed feed1.ffm
Format swf
VideoFrameRate 25
VideoSize 352x288
VideoIntraOnly
NoAudio
</Stream>
<Stream stat.html>
Format status
ACL allow localhost
ACL allow 192.168.0.0 192.168.255.255
</Stream>
Назовите файл, например, ffserver.conf. Сохраните его где угодно, например, в том же каталоге ffserver.
Таким образом, ffserver будет связан с портом 8090 для ввода и вывода. Тег <Feed>
настраивает
входной поток. Имя настроенного канала в этом случае - feed1.ffm. Запомните это для шага 14.
<Stream>
содержит конфигурацию для выходного потока. В этом случае имя будет testFlash.swf (также помните), а формат будет SWF. Частота кадров видео будет 25, а размер 352x288, и он не будет содержать аудио. Последний поток - это HTML-файл (stat.html), который покажет вам состояние сервера.
Пуск ffserver: ./ffserver -f ffserver.conf
(или где бы вы не оставили файл конфигурации). Указанный параметр -f
что вы загрузите конфигурацию из пользовательского файла.
Откройте навигатор и перейдите к http://localhost:8090/stat.html
. Появится страница состояния сервера, и мы увидим строку информации о нашем потоке testFlash.swf. Сейчас это кажется очень тихим, поэтому давайте подадим этот поток на выход openRTSP (из шага 7).
Сделайте это:
<path to openRTSP>/openRTSP -v -c -t rtsp://<hostname>:<port>/<cam_path> | <path to ffmeg>/ffmpeg -i - http://localhost:8090/feed1.ffm
Первый путь (перед «|» совпадает с шагом 9. «|» - это символ, который соединяет выход
openRTSP (последовательность видеосигнала, также называемая strage-символами) будет входом ffmpeg. "-I -" означает, что
ввод mmpeg берется из трубы "|" и http://localhost:8090/feed1.ffm
- пункт назначения (выход)
ffmpeg, который в основном является вводом ffserver.
Итак, с помощью этой команды мы подключили openRTSP -> ffmpeg -> ffserver
При вводе этой команды будет отображаться много информации. Важно отметить, что входные параметры
и выходные параметры показаны, и эти параметры должны быть «совместимыми». В моем случае это будет показано:
<code>Input #0, h264, from 'pipe: ':
Duration: N/A, bitrate: N/A
Stream #0.0: Video: h264, yuv420p, 352x288, 25 fps, 25 tbr, 1200k tbn, 50 tbc
Output #0, ffm, to 'http://localhost:8090/feed1.ffm':
Metadata:
encoder: Lavf52.64.2
Stream #0.0: Video: FLV, yuv420p, 352x288, q=2-31, 200 kb/s, 1000k tbn, 25 tbc
Stream mapping:
Stream #0.0 -> #0.0
И тогда поток начинает играть. Вы увидите в последней строке номера, постоянно меняющиеся,
говорю вам живой рейтинг кадров в каждый момент. Что-то вроде
frame= 395 fps= 37 q=31.7 Lsize = 1404kB time=15.80 bitrate = 727.9kbits/s
Если вы не видите эту строку метрик, значит, что-то не так с вашей выходной конфигурацией. Вернитесь и измените параметры testFlash.swf.
Все сделано. Вы можете посмотреть видео в http://localhost:8090/testFlash.swf
. Вы можете использовать этот URL для встраивания Flash-фильма или, как в моем случае, приложения Flex.