Guarda la grabación de vídeo en tiempo real en la tarjeta sd mediante el Socket local en Android – El vídeo no se puede reproducir
Tratando de capturar un video y guardarlo en una tarjeta sd en formatos Mp4 / 3gp usando un socket local. Ser capaz de escribir bytes por bytes a la tarjeta sd, pero el archivo de vídeo no es playable.I han pasado por muchos ejemplos:
Https://github.com/fyhertz/spydroid-ipcamera
- Metadatos de rotación de vídeo Mp4
- ¿Cómo reproducir varios vídeos en una vista de lista con MediaPlayer?
- Aplicación de falla en la fusión de videoclips MP4
- Convertir PCM a AAC o MP4 archivo sin MediaMuxer
- Cómo jugar video .mp4 en videoview en android?
Https://github.com/mconf/sipdroid
y muchos más. He notado que la gente sugiere que esto podría ser un problema de encabezado del archivo. Traté de omitir los datos "mdat" también desde el encabezado:
private void skipHeader() throws IOException { // Skip all atoms preceding mdat atom byte[] buffer = new byte[3]; while (true) { while (mReceiver.getInputStream().read() != 'm'); mReceiver.getInputStream().read(buffer,0,3); if (buffer[0] == 'd' && buffer[1] == 'a' && buffer[2] == 't') break; } }
Por fin nada funcionó para mí. ¿Qué extra tengo que hacer para hacer que esos archivos de vídeo se puedan reproducir usando el Socket local
- Decodificar mp4 / h.264 usando MediaCodec sin MediaExtractor, formato de unidad de acceso esperado
- Android descifrar y reproducir mp4 en tiempo de ejecución
- ¿Por qué mi aplicación Android dice "No se puede reproducir el vídeo" después de la reproducción?
- ¿Cómo combinar múltiples archivos de audio en un momento específico con un archivo de vídeo en android?
- Android: lee y escribe metadatos .mp4 -Tag
- Mp4 vídeo en html5 etiqueta de vídeo no se reproduce en el cromo móvil y safari móvil
- Moov átomo en android MeidaRecorder datos registrados
- ¿Cómo cargar videos de la carpeta de activos? (Para reproducirlas con VideoView)
De su explicación, lo que tiene en mente para implementar es una grabadora de pantalla. Por supuesto su intención es que el sistema lo tendrá implementado como parte de la tecnología que su software está ofreciendo.
En tal caso, el mejor enfoque es mejorar lo que ya existe, incorporar el código con nuevas características o un nuevo rendimiento y dar crédito a la fuente original que encontró y se incluyó como parte de su software – como se esperaba. Esta es la belleza de Open Source, que permite que el código sea reutilizado, distribuido y mejorado.
En Github hay un montón de proyectos … como usted sabe, algunos agradables y otros impresionantes. Para su caso particular, mi sugerencia es usar código existente que permita que su sistema de grabación de streaming capture el video, escribiéndolo sin necesidad de root del dispositivo, ya que los usuarios finales no estarían interesados en anular la garantía de un dispositivo recién comprado Para ejecutar su software.
También es importante lograr una buena velocidad que permita al menos capturar 20 pantallas por segundo en Android para diferentes tamaños de pantalla, proporcionando claramente una resolución y un bajo uso de la CPU. Todas estas características mantendrían su solución estable y aún buscando sólida roca.
Creo que el mejor enfoque que puede tomar, que le ahorrará tiempo y muchos dolores de cabeza, sería incorporar el código "sji-android-screen-capture" como parte de su proyecto. Si los dispositivos de destino son Android 4.2 ~ 4.4, es bueno ir ya que es compatible con estas versiones de Android. Más información y el código fuente en sí, usted encuentra disponible en el repositorio Github . Alternativamente, también puede utilizar Android ScreenCapture Sample para capturar la pantalla del dispositivo en tiempo real.
- Una forma fiable de saber cuándo se resiste el teclado virtual de Android (devolución de llamada que funciona en todos los teléfonos)
- ¿Cuál es la diferencia entre alignBaseline y alignBottom en Android?