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
- Uso de jcodec SequenceEncoder
- Adición de un recurso de imagen sobre archivo de vídeo desde la tarjeta sd mediante ffmpeg o MediaMuxer para android
- Biblioteca para apoyar H.264 AVC. Mp4 en Android 2.2, 2.3?
- ¿Cómo combinar múltiples archivos de audio en un momento específico con un archivo de vídeo en android?
- ¿Por qué mi aplicación Android dice "No se puede reproducir el vídeo" después de la reproducción?
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
- Android: no se puede reproducir vídeo mp4
- Android: guarda una secuencia rtsp (h264) en un archivo mp4
- Convertir PCM a AAC o MP4 archivo sin MediaMuxer
- ¿Cómo cargar videos de la carpeta de activos? (Para reproducirlas con VideoView)
- Android MP4 stream - El video no se puede reproducir
- Android descifrar y reproducir mp4 en tiempo de ejecución
- Cómo jugar RTSP stream video (MPEG4, baseline) de una cámara con videoview de Android?
- Cómo comprimir mp4 video con MediaCodec Android?
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?