RTSP в Flex - PullRequest
       68

RTSP в Flex

2 голосов
/ 20 апреля 2009

В настоящее время мы работаем над приложением Flex, которое должно подключаться к множеству камер обнаружения трафика через RTSP. Будучи совершенно новым для мира потокового видео в целом, мне было интересно, возможно ли это.

AFAIK невозможно использовать фид RTSP во Flash Player, поэтому я думаю, что нам понадобится какой-то конвертер на сервере, который принимает поток RTSP и преобразует его в RTMP, чтобы мы могли использовать кормить в нашем приложении Flex. Мы надеялись, что Red5 поможет нам в этом.

Я прав в своем предположении, и кто-нибудь сделал это?

Ответы [ 7 ]

2 голосов
/ 05 мая 2009

Wowza Media поддерживает преобразование RTSP в RTMF: http://www.wowzamedia.com/comparison.html

А также есть общий транскодер видеопотока Xuggle http://www.xuggle.com/ на основе Red5 и FFMPEG.

1 голос
/ 24 марта 2011

На основании этой работы Я пытался преобразовать сигнал H264 в поток SWF, который может быть легко отображаться во Flash. Вот рецепт. (Этот рецепт для Linux.)

  1. Загрузка потокового мультимедиа Live555 от http://www.live555.com/liveMedia/ Ваш файл src обычно называется live555-latest.tar.gz

  2. Распаковываем и компилируем:

    • Распаковка: tar xzvf live555-latest.tar.gz. Это создаст каталог с именем live.
    • cd live
    • ./genMakefiles linux (если у вас 32-битная система) или ./genMakefiles linux-64bit, если ваша система 64-битная)
    • make, и через некоторое время вы получите новый скомпилированный код
  3. В Live55 есть много хороших вещей, но нас интересуют только «testProgs» каталог, в котором находится openRTSP. OpenRTSP позволит нам получить сигнал и отправить его ffmpeg - программа, которая кормит ffserver. Ffserver - это сервер, который получает сигнал от ffmpeg и преобразует его в SWF (и другие форматы).

  4. Скачать, распаковать, настроить и установить 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.
  5. Теперь мы почти готовы транслировать весь мир. Прежде всего, давайте попробуем заставить openRTSP работать.
  6. Перейдите в ваш «живой» каталог (помните 3.2) и выполните: cd testProgs

  7. Попробуйте это: ./openRTSP -v -c -t rtsp://<hostname>:<port>/<cam_path> Первый из все, вы увидите журналы, которые говорят что-то вроде:

    - opening conection blah blah.
    - sending DESCRIBE blah blah.
    - receiving streamed data.
    

    Если все пойдет хорошо, ваша консоль начнет очень быстро печатать множество странных символов. Эти символы являются байтами видео, но вы не можете видеть это (сейчас). Если вы не видите свой экран печать символов, что-то не так с вашей конфигурацией. Проверьте шаги вверх до сих пор.

  8. Мы получили сигнал! Теперь давайте отправим его полезному компоненту: ffmpeg, который связан с ffserver. Нам нужно создать файл конфигурации для ffserver.
  9. Используйте ваш любимый редактор для создания этого текстового файла:

    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), который покажет вам состояние сервера.

  10. Пуск ffserver: ./ffserver -f ffserver.conf (или где бы вы не оставили файл конфигурации). Указанный параметр -f что вы загрузите конфигурацию из пользовательского файла.

  11. Откройте навигатор и перейдите к http://localhost:8090/stat.html. Появится страница состояния сервера, и мы увидим строку информации о нашем потоке testFlash.swf. Сейчас это кажется очень тихим, поэтому давайте подадим этот поток на выход openRTSP (из шага 7).

  12. Сделайте это:

    <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.

  13. Все сделано. Вы можете посмотреть видео в http://localhost:8090/testFlash.swf. Вы можете использовать этот URL для встраивания Flash-фильма или, как в моем случае, приложения Flex.

1 голос
/ 01 мая 2009

Вы можете попробовать перезаписать его через Red5 и подключить приложение Flex к серверу Red5.

Подробнее на: http://red5wiki.com/wiki/SteamStream

0 голосов
/ 03 сентября 2010

Хотя его версия с открытым / открытым исходным кодом немного устарела, вы можете взглянуть на этот проект, в котором RTSP и камера на основе изображений транскодировались в потоки RTMP с Xuggler и Red5. http://sourceforge.net/projects/imux/
(отказ от ответственности: я работал в компании, которая создала первоисточник)

0 голосов
/ 03 января 2010

Я только что проверил это с Wowza. На вход поступил поток RTSP от Etrovision H264 DVS. Взгляните на этот шаг и используйте файл Application.xml, если вы хотите попробовать его: http://96.30.11.104/forums/showthread.php?p=24806

Видео воспроизводится во Flash плеере, но цена составляет 5 секунд для одного потока, все оборудование в офисной локальной сети, сервер работает на Core2Duo / 2,8 ГГц / 3 ГБ ОЗУ. Не уверен, может ли он пойти быстрее или это ожидаемый ущерб от перекодировки для этой установки ...

0 голосов
/ 02 июня 2009

Если вы знакомы с программированием на flex или чем-то, что требуется для преобразования его в swf, тогда вы можете попробовать реализовать rtsp-over-tcp, AFAIK udp недоступен во flash.

0 голосов
/ 15 мая 2009

Red5 - это хорошо, особенно теперь с поддержкой xuggle (допускает встроенную интеграцию FFMPEG), которая обеспечивает отличную интеграцию с red5 (т. Е. Отличный учебник по конвертации живого потока и т. Д.).

...