Solución de reproducción de navegador de streaming rtsp
Las transmisiones RTSP no admiten la reproducción directa en los navegadores convencionales. Por ejemplo, la transmisión de video de Dahua: rtsp://admin:123456@
192.168.10.129/cam/realmonitor?channel=1amp; subtype=0, que se puede reproducir directamente con vlc. Pero el navegador informará ERR_UNKNOWN_URL_SCHEME. Entonces, cómo reproducirlo en el navegador.
A continuación se enumeran varias opciones.
1. Instalar complementos (básicamente no es compatible con la última versión de Chrome)
Ejemplos: kurento, complemento vlc (Google Chrome versión 41 o inferior), complemento vgx -in (no se admiten versiones superiores, la versión chrome72.0 está disponible), etc.
2. Instalar software (middleware, básicamente pago)
Como: Appemit (llamando al complemento vlc para reproducir rtsp), que se puede instalar sin ninguna instalación. solo está disponible para Windows, versión gratuita Habrá indicaciones.
Middleware Ape Master (la capa inferior llama al control ActiveX de VLC para realizar la reproducción integrada de múltiples transmisiones de video RTSP en tiempo real en las páginas web del navegador principal).
Middleware PluginOK. La capa inferior llama al control ActiveX VlcOcx.dll. (El uso comercial requiere pago)
3. Reenvío de extracción del servidor y conversión de protocolo
El diagrama esquemático es el siguiente:
Flujo de inserción ------ --------Reenvío de servidor--------------Transmisión de extracción
Lista de métodos:
a, el software vlc transmite a /post/6844904024072798216
Utilice FFMPEG para convertir rstp a /post/6908641550046068744
Pasos: cree websocket en el servicio de nodo; utilice la transcodificación fluent-ffmpeg para convertir la secuencia RTSP al formato flv; Conéctese a websocket a través de flv.js y renderice y reproduzca los datos de video en formato flv obtenidos.
importar WebSocket desde 'ws' importar webSocketStream desde 'websocket-stream/stream' importar ffmpeg desde 'fluent-ffmpeg'// Crear servicio WebSocket const wss = new WebSocket.Server({ puerto: 8888, perMessageDeflate : false })//Escuche la conexión wss.on('connection', handleConnection)//Active la función de evento handleConnection (ws, req) { // Obtenga la dirección de transmisión solicitada por el front-end (el front-end) ¿La conexión final del websocket va seguida de la dirección de la transmisión)? ¿Const url = req.url.slice(1)? // ¿El cliente ws entrante crea una instancia de una transmisión? Transmisión en vivo a través del comando ffmpeg ¿Realizar la conversión de formato al formato flv de salida? const ffmpegCommand = ffmpeg(url) .addInputOption('-analyzeduration', '100000', '-max_delay', '1000000') .on('start', function ( ) { console.log('Transmisión iniciada.') }) .on('codecData', function () { console.log('Transmisión codecData.') }) .on('error', function (err) { ? console.log('Se produce un error: ', err.message) ? stream.end() }) .on('end', function () { ? console.log('¡Fin de la transmisión!') ? stream.end( ) }) .outputFormat( 'flv').videoCodec('copy').noAudio()? stream.on('close', function () { ffmpegCommand.kill('SIGKILL')? })? Ejecute el comando en la secuencia de la instancia. Regrese al cliente ffmpegCommand.pipe(stream)? } catch (error) { console.log(error)}
Todas las ventajas se basan en js. La parte delantera se puede hacer.
Referencia:/pregunta/29973696