envuelva el flujo h.264 en el contenedor mp.4 y transmítalo con nodejs

Tengo un flujo de datos h.264 desde una cámara web remota. Si lo guardo en un archivo, puedo reproducirlo en VLC (lo que significa que los datos llegan intactos).

El objective final es convertir este flujo en una webcam virtual. Después de mirar a mi alrededor, encontré muchas cámaras como una posible solución, por lo que quiero servir los datos h.264 en una IP local en formato MP4.

Dos preguntas:

primero , estoy tratando de envolver el h.264 con el contenedor mp4 usando ffmpeg (usando la biblioteca nuq fluent-ffmpeg que expone la API ffmpeg a Nodejs).

Todo funciona bien cuando manejo archivos estáticos (no de secuencias). por ejemplo

var ffmpeg = rquire('fluent-ffmpeg') var readH264 = fs.createReadStream('./vid.h264') var proc = ffmpeg(readH264).clone().toFormat('mp4').output('./vid.mp4').run() 

`

Pero cuando bash alimentar una secuencia, se produce un error “ffmpeg salió con el código 1: no se pudo escribir el encabezado para el archivo de salida …”

 var wrtieMp4 = fs.createWriteStream('./vid.mp4') var proc = ffmpeg(readH264).clone().toFormat('mp4').output(wrtieMp4).run()` 

¿Cómo puedo agregar un encabezado ..?

En segundo lugar , estoy un poco confundido acerca de la capa de transporte (rtp, rtsp, etc.). Después de crear el flujo de mp4, ¿no sería suficiente servir el flujo con video de tipo MIME / mp4? Parece que funciona bien con archivos estáticos. `

 let read = fs.createReadStream('./vid.mp4') let server = http.createServer(function (req, res) { res.writeHead(200, {'Content-type': "video/mp4"}) read.pipe(res) }).listen(9000) 

`

No puedes usar MP4 para este propósito. MP4 debe escribir el encabezado al principio del archivo después de que se cierre la secuencia. Aparece el error “no se puede escribir el encabezado”, porque ffmpeg sabe que no podrá rebobinar la secuencia y escribir el encabezado más tarde. No, no puedes usar rtsp eaither. El navegador solo puede hacer http. Utilice un formato como DASH que fue diseñado para este propósito.