tutorial - ¿Es posible usar WebRTC para transmitir video de Servidor a Cliente?
webrtc streaming (5)
Empecé con http://sourcey.com/webrtc-native-to-browser-video-streaming-example/ pero ya no se compila con el código nativo de WebRTC .
Luego hice modificaciones fusionándome en un proceso independiente:
- gestión de peerConnection (
peerconnection_server
) - acceso a la captura de Video4Linux (el
peerconnection_client
).
La eliminación de la secuencia del navegador al cliente WebRTC Native C ++ proporciona una solución simple para acceder a través de un navegador WebRTC a un dispositivo Video4Linux que está disponible desde GitHub webrtc-streamer .
En WebRTC, siempre veo la implementación sobre peer-to-peer y cómo obtener la transmisión de video de un cliente a otro. ¿Qué hay de servidor a cliente?
¿Es posible que WebRTC transmita archivos de video de servidor a cliente? (Estoy pensando en usar WebRTC Native C ++ API para crear mi propia aplicación de servidor para conectarme a la implementación actual en la aplicación de cliente de navegador chrome o firefox).
De acuerdo, si es posible, ¿será más rápido que muchos servicios actuales de transmisión de video?
Estamos tratando de reemplazar los MJPEG con Webrtc para nuestro software de servidor y tenemos un módulo prototipo para hacerlo utilizando un puñado de componentes vinculados al proyecto Openwebrtc. Ha sido un absoluto deber que hacer, y tenemos frecuentes errores de negociación de ICE (incluso en una LAN simple), pero en general funciona.
También creamos un prototipo con el módulo Google Webrtc, pero tenía muchas dependencias. Me resulta más fácil trabajar con los módulos de Openwebrtc porque las cosas de Google están tan estrechamente ligadas a los escenarios generales de igual a igual en el navegador.
Recopilé lo siguiente desde cero:
libnice 0.1.14 gstreamer-sctp-1.0 usrsctp
Luego tengo que interactuar con libnice un poco directamente para reunir candidatos. También tiene que escribir los archivos SDP a mano. Pero la cantidad de control, al poder controlar la fuente de la tubería, hace que valga la pena. La canalización resultante (con dos clientes fuera de una fuente de servidor) está a continuación:
He escrito algunas aplicaciones y complementos usando la API nativa de WebRTC, y todavía no hay mucha información disponible, pero aquí hay algunos recursos útiles para que comiences:
Ejemplo de QT: http://research.edm.uhasselt.be/jori/qtwebrtc
Ejemplo nativo de navegador: http://sourcey.com/webrtc-native-to-browser-video-streaming-example/
Por supuesto. Estoy escribiendo un programa usando la API nativa de WebRTC que puede unirse a la conferencia como un par y grabar video y audio.
ver: Cómo transmitir audio desde el navegador a la aplicación C ++ nativa de WebRTC
y definitivamente puedes transmitir contenido multimedia desde la aplicación nativa.
Estoy seguro de que puede usar dummy_audio_file
para transmitir audio desde un archivo local, y puede encontrar la manera de acceder al progreso de la transmisión de video por su cuenta.
Sí, es posible ya que el servidor puede ser uno de los pares en esa sesión punto a punto. Si respetas los protocolos y envías el video en paquetes SRTP usando VP8, el navegador lo reproducirá. Para ayudarlo a construir estos componentes en otras aplicaciones o servidores, puede consultar this página y this proyecto como una guía.
Ahora, comparando WebRTC con otros servicios de transmisión ... Dependerá de varias variables como el Codec o el protocolo. Pero, por ejemplo, comparando WebRTC (SRTP sobre UDP con códec VP8) contra Flash (RTMP sobre TCP con códec H264), diría que WebRTC gana.
- El reproductor será Flash Player contra la etiqueta nativa de
<video>
. - El transporte sería TCP contra UDP.
Pero, por supuesto, todo depende de lo que le envíe al cliente.