Проблемы с рестимингом rtsp потока

Discussion in 'Web Call Server 3' started by Ramil, Sep 23, 2014.

  1. Ramil

    Ramil New Member

    Здравствуйте, делаю все по инструкции как описано тут http://habrahabr.ru/post/229243/
    Flashphoner и клиентская часть запущена на локальной машине. Локальные и внешние ip-адреса прописаны.
    В браузере открываю пример с гитхаба
    wcs_media_client/index.html?id=rtsp://media3.yburlan.ru:1935/vod/sample.mp4
    Соединение устанавливается (видно это в консоли браузера и сервера), но вместо видео появляется черный экран.
    Фаервол отключен.
    Логи прилагаю
    Last edited: Sep 24, 2014
  2. Alex

    Alex Administrator Staff Member

    Скорее всего проблемы с передачей RTP пакетов с Wowza - сервера на Flashphoner-сервер, который установлен у вас локально.
    Вот демка, которая успешно забирает видео с вашей Wowza: http://webrtc_demo.flashphoner.com/?id=rtsp://media3.yburlan.ru:1935/vod/sample.mp4
    Это билд 981. Скачать можно здесь.
    Firewall скорее всего не виноват. Скорее это NAT за которым вы находитесь.
    Попробуйте на роутере диапазон UDP портов [30000-32000] перенаправить на Flashphoner-сервер. Должно заработать.
  3. Ramil

    Ramil New Member

    Спасибо! Все получилось. Только почему-то звука нет (в вашем примере тоже), хотя в исходном файле со звуком все нормально.
    Для проверки можно в vlc плере открыть rtsp://media3.yburlan.ru:1935/vod/sample.mp4
  4. Ramil

    Ramil New Member

    1. Так же хотелось бы иметь возможность не палить адрес огиниального стрима в клиенте (id=rtsp://...)
    Понятно, что это можно засунуть посредственно в js, но при желании все равно может быть обнаружено.
    Я вижу следующее решение. Через server-side API я регистрирую мой rtsp поток во Flashphoner, в ответ получаю некий идентификатор. И уже этот идентификатор использую в клиенте.

    2. Интересует передача с клиента дополнительных параметров (id сессии или логин) на сервер Flashphoner. С него через java-модуль дергать наш сервис для проверка прав доступа на просмотр. Сейчас такой механизм у нас реализован в Wowza.
  5. Alex

    Alex Administrator Staff Member

    Звука нет потому что аудио кодек в этом файле скорее всего mp3 или какой-то другой не поддерживаемый в настоящий момент кодек. Для WebRTC нужны кодеки: Opus, G.711.
    WCS может так же транскодировать Speex в WebRTC кодеки.
    Т.е. если бы вы этот поток запустили с веб-камеры с аудио кодеком g.711 или Speex, то звук бы был. Если же это файл с mp3 или другим несовместимым кодеком, то звука не будет.
    Если все же планируете работать именно с файлом, можете попробовать транскодировать звук средствами Wowza в G.711.
    Пока в планах поддержки mp3 кодека у нас нет.
  6. Alex

    Alex Administrator Staff Member

    Для работы с клиентом используется класс MediaHandler.java (в аттаче)
    В методах prepareRtspSession и subscribe вы можете подменить rtspUri и замапить его на обычные идентификаторы.

    Для работы с клиентом используется класс MediaHandler.java (в аттаче)
    В server.properties конфиге его можно прописать как
    client_handler =com.mypackage.MediaHandler
    В этом случае все вызовы с клиента пойдут через этот handler.
    Здесь в методе connect можно произвести аутентификацию и авторизацию клиента.

    В настоящий момент мы работаем над версией Web Call Server 4 с новым API. Там чтобы сделать эти две вещи не потребуется писать Java код.
    Наш handler будет дублировать все обращения по HTTP/REST.
    Хотя вариант с изменением Java кода так же должен работать.

    Attached Files:

Share This Page