studio from fragments con comunicar change activity android node.js video tcp mpeg-4

android - from - fragment interaction listener



Android: transmita los datos de la cámara y escríbalos en el servidor (1)

Hay algunos proyectos de código abierto que resuelven este problema, como Spydroid (navegación por navegador / VLC) y la cámara IP de Android (transmisión de navegador). Su implementación parece similar a Spydroid, así que tal vez pueda adaptar parte de su código.

El problema central es que MediaRecorder está escribiendo marcos de video en bruto en el zócalo. Debe esperar hasta que finalice el video para escribir los encabezados, pero deben aparecer al principio del archivo. Como el socket no es buscable, los encabezados no se pueden escribir en la ubicación correcta. Los proyectos vinculados anteriormente se ocupan de este problema al empaquetar el flujo en RTSP (Spydroid) o "transmitir" una serie de imágenes fijas al navegador (Cámara IP Android).

Transmitir datos de cámara web a mi cliente.

Puedo ver que los datos están llegando escuchando (''datos''). Sin embargo, cuando lo creo, no puedo verlo y probablemente sea basura o falten algunos encabezados. VLC no puede jugarlo.

Mi siguiente paso es hacerlo en tiempo real para el navegador.

¿Qué estoy haciendo mal?

net = require(''net''); fs = require(''fs''); // Start a TCP Server net.createServer(function (socket) { console.log("client connected"); var file = fs.createWriteStream("temp.mp4"); socket.pipe(file, {end: false}); socket.on(''end'', function(){ console.log("ended"); }); }).listen(5000);

Probé para ver si realmente capturaba la salida de video:

$ mediainfo temp.mp4 General Complete name : temp.mp4 Format : H.263 Format version : H.263 File size : 126 KiB Video Format : H.263 Width : pixel0 Height : pixel0 Color space : YUV Chroma subsampling : 4:2:0 Bit depth : 8 bits Compression mode : Lossy

Y este es el siguiente código de Android para configurar mediaRecorder (supongamos que el socket está conectado, no hay problema)

mediaRecorder.setAudioSource(MediaRecorder.AudioSource.CAMCORDER); mediaRecorder.setVideoSource(MediaRecorder.VideoSource.CAMERA); mediaRecorder.setOutputFormat(MediaRecorder.OutputFormat.DEFAULT); mediaRecorder.setVideoSize(320, 240); mediaRecorder.setVideoEncoder(MediaRecorder.VideoEncoder.DEFAULT); mediaRecorder.setAudioEncoder(MediaRecorder.AudioEncoder.DEFAULT); ParcelFileDescriptor pfd = ParcelFileDescriptor.fromSocket(socket); mediaRecorder.setOutputFile(pfd.getFileDescriptor()); mediaRecorder.setMaxDuration(5000); mediaRecorder.setMaxFileSize(5000000);