Android: Transmitir datos de la cámara y escribirlos en el servidor
Transmito los datos de la webcam a mi cliente.
Puedo ver que los datos llegan escuchando ('datos'). Sin embargo, cuando lo creo no puedo verlo y es probablemente datos de basura o faltan algunos encabezados. VLC no puede reproducirlo.
- El teléfono giratorio reinicia el video en android
- Reproducción de FLV / HTTP en la aplicación de Android
- MediaMuxer no puede hacer MP4 que son streamable
- Se ha producido un error al cargar vídeo en html5 phonegap
- Descifrar audio / video sobre la marcha a MediaPlayer
Mi siguiente paso es hacerlo en tiempo real streamable al 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);
He probado para ver si realmente capturar la salida de vídeo:
$ 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 Android de configuración de mediaRecorder
(Supongamos que 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);
- Filtro de video de Android
- WebView no reproducirá vídeo flash incorporado
- Crear video de series de imágenes android
- Android cámara2 api galaxia s7
- ¿Cómo puedo capturar una grabación de vídeo en Android?
- Imposible mezclar archivos de audio y archivos de video usando MediaMuxer?
- No se puede reproducir este video. Android videoView mp4 grabado por el dispositivo Android
- Grabación de vídeo de Android Vine / Instagram
Existen algunos proyectos de código abierto que solucionan este problema, como Spydroid (navegador / streaming VLC) y Android IP Camera (navegación por navegador). Tu implementación parece similar a Spydroid, así que tal vez puedas adaptar algo de su código.
El problema central es que MediaRecorder
está escribiendo marcos de vídeo sin procesar en el zócalo. Debe esperar hasta que el video termine de escribir los encabezados, pero deben aparecer al principio del archivo. Dado que el socket no se puede buscar, los encabezados no se pueden escribir en la ubicación correcta. Los proyectos relacionados anteriormente tratan este problema mediante la empaquetado de la secuencia en RTSP (Spydroid) o "streaming" de una serie de imágenes fijas al navegador (Android IP Camera).
- Layout_below elemento dentro del diseño incluido
- "Paquete no firmado correctamente" aparece para algunos usuarios