Можно ли использовать WebRTC для потоковой передачи видео с сервера на клиент?
В WebRTC я всегда вижу реализацию однорангового обмена и как получать потоковое видео от одного клиента к другому клиенту. Как насчет сервера для клиента?
Возможно ли, чтобы WebRTC транслировал видеофайл с сервера на клиент?
(Я думаю об использовании API-интерфейса WebRTC Native С++ для создания моего собственного серверного приложения для подключения к текущей версии на клиентском приложении Chrome или браузера Firefox).
Хорошо, если это возможно, будет ли оно быстрее, чем многие текущие службы потоковой передачи видео?
Ответы
Ответ 1
Да, возможно, поскольку сервер может быть одним из сверстников в этом одноранговом сеансе.
Если вы уважаете протоколы и отправляете видео в SRTP-пакетах с использованием VP8, браузер будет воспроизводить его. Чтобы помочь вам собрать эти компоненты на других приложениях или серверах, вы можете проверить эту страницу и этот проект как руководство.
Теперь, сравнивая WebRTC с другими потоковыми службами... Это будет зависеть от нескольких переменных, таких как кодек или протокол. Но, например, сравнение WebRTC (SRTP через UDP с кодеком VP8) против Flash (RTMP через TCP с кодеком H264), я бы сказал, что выигрывает WebRTC.
- Игрок будет Flash Player против тэга
<video>
.
- Транспорт будет TCP против UDP.
Но, конечно, все зависит от того, что вы отправляете клиенту.
Ответ 2
Я написал несколько приложений и плагинов, используя собственный API WebRTC, и пока еще не так много информации, но вот несколько полезных ресурсов, которые помогут вам начать:
Пример QT: http://research.edm.uhasselt.be/jori/qtwebrtc
Пример Native to Browser: http://sourcey.com/webrtc-native-to-browser-video-streaming-example/
Ответ 3
Я начал с WebRTC Native С++ для примера потокового видео браузера, но он больше не строится с фактическим Собственный код WebRTC.
Затем я вносил изменения в единый процесс:
- управление peerConnection (
peerconnection_server
)
- доступ к захвату Video4Linux (
peerconnection_client
).
Удаление потока из браузера на клиентский интерфейс WebRTC Native С++ дает простое решение для доступа через браузер WebRTC к устройству Video4Linux, доступному из GitHub webrtc-streamer.
Live Demo
Ответ 4
Мы пытаемся заменить MJPEG на Webrtc для нашего серверного программного обеспечения и иметь прототип модуля для этого, используя небольшое количество компонентов, связанных с проектом Openwebrtc. Это был абсолютный медведь, и у нас есть частые ошибки согласования ICE (даже в простой локальной сети), но в основном это работает.
Мы также создали прототип с модулем Google Webrtc, но у него было много зависимостей. Мне легче работать с модулями Openwebrtc, потому что материал Google настолько тесно связан с общими одноранговыми сценариями в браузере.
Я скомпилировал следующее:
libnice 0.1.14
gstreamer-sctp-1.0
usrsctp
Затем мне нужно напрямую взаимодействовать с libnice, чтобы собрать кандидатов. Также необходимо записывать файлы SDP вручную. Но количество контроля - возможность контролировать источник трубопровода - делает его целесообразным. Полученный конвейер (с двумя клиентами с одного сервера) ниже:
![результат webrtc конвейер]()
Ответ 5
Конечно. Я пишу программу, использующую собственный WebRTC api, который может присоединиться к конференции как одноранговый узел и записывать как видео, так и аудио.
см.: Как передать аудио из браузера в собственное приложение С++ для WebRTC
и вы можете определенно передавать потоковое мультимедиа из собственного приложения.
Я уверен, что вы можете использовать dummy_audio_file
для потоковой передачи звука из локального файла, и вы можете найти способ получить доступ к потоку передачи видео по своему усмотрению.
Ответ 6
Да, это. Мы разработали инструмент нагрузочного тестирования для публикации и воспроизведения для Ant Media Server. Этот инструмент может транслировать медиа файл. Мы использовали ту же нативную библиотеку WebRTC, что и Ant Media Server.