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.
- Los vídeos de Youtube incrustados en la vista Web de Android no se reproducen en el formato SINGLE_COLUMN
- Android: cómo obtener una miniatura de vídeo de un archivo privado para su aplicación?
- SurfaceView, SurfaceTexture y MediaPlayer no pueden reproducir mi video en android
- Android SDK: Reproducción de vídeo mediante el protocolo mms
- PhoneGap Android - Reproducción de vídeos locales
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 no puede reproducir vídeo H264 / AAC
- Codificación y muxing de vídeo mediante MediaCodec y MediaMuxer
- Vídeo HTML5 Muestra una pantalla negra en carga
- Android: Reproducción y grabación simultánea de vídeo
- Convertir secuencias de entrada de vídeo a RTMP
- Exo player DASH Ejemplo de streaming
- Cámara Android: la vista previa se amplía al grabar vídeo
- Procesamiento de vídeo de Android marco por cuadro durante la grabación
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