Cómo proporcionar datos de audio y datos de vídeo a MediaMux
Estoy tratando de obtener datos de vídeo en bruto por la vista previa, obtener datos de audio en bruto por AudioRecord. Entonces los enviaré a MediaCodec (fijaré dos instancias de Codec). Después de eso voy a enviar los datos de vídeo y datos de audio a MediaMux para obtener un archivo mp4. Tengo dos preguntas:
1) He utilizado MediaMux para procesar los datos de vídeo antes. Para los datos de vídeo, el proceso de MediaMux por cuadro, pero el registro de vídeo es continuo. ¿Cómo podría el MediaMux manejar el vídeo y el audio en sincronización.
- Android: Jcodec: codificación de archivos de imagen para vídeo .mp4
- Filtro de video de Android
- Cómo fusionar archivos de audio y video en Android
- Android MediaRecorder produce video corrupto con líneas verdes
- ¿Qué es AwesomePlayer en android?
2) Encontré sólo de variable para inputbuffer en la función writeSampleData . Un chico agradable en StackOverflow también proporcionó una demo de MediaMux . Pero esta demo sólo tiene una variable para los datos de origen. ¿Cómo podría esta variable soportar tanto datos de vídeo como datos de audio?
¡Gracias!
- ANDROID: ¿Cómo puedo descargar un archivo de vídeo a una tarjeta SD?
- Cómo jugar video HTML5 en línea con Phonegap para Android 4.1.1
- ¿Cómo desarrollar un reproductor de video que recibe transmisión de video en la difusión wi-fi / multidifusión?
- Se ha abandonado BufferQueue: Al reproducir vídeo con TextureView
- ¿Es Android 2.2 HTTP streaming progresivo = HTTP Live Streaming?
- Android: cómo obtener una miniatura de vídeo de un archivo privado para su aplicación?
- ¿Cómo usar la decodificación acelerada por hardware en Android?
- Cómo obtener vídeos en GridView desde ** SDCard / carpeta / subcarpeta "
He tenido un cierto éxito que pasa el audio sincronizado y el vídeo a MediaMuxer
. Calculé el número de muestras de audio que deben reproducirse para cada trama de vídeo: basado en la frecuencia de muestreo de audio y la velocidad de fotogramas de vídeo. Entonces tuve un bucle que escribió un cuadro de video y un bloque de audio en cada iteración. Utilice el tiempo de presentación para asegurarse de que se sincronizarán en la reproducción. Utilice el índice de pista de addTrack
en las llamadas a writeSampleData
para permitir la escritura de vídeo y audio a dos pistas independientes.
En conjunto para responder a @ robin-royal, con el fin de codificar vídeo y audio y debe llamar al doble del método Addtrack de MediaMuxer, un índice de pista (int) a cada uno. Por lo que cuando se llama WriteSampleData en el MediaMuxer, el primer parámetro especifica el índice de pista, por ejemplo, si audioTrackIndex = 2 y videoTrackIndex = 1, si llama WriteSampleData con el primer parámetro igual a 1, estaría escribiendo vídeo. (Lo siento, no tengo privilegios para contestarle en el comentario) gracias
- Github – Error de confirmación después de cambiar el nombre del paquete en la aplicación android: LibGit2Sharp.LockedFileException: El índice está bloqueado
- Error: puedo hacer clic debajo del tablero de navegación