Red de conocimiento informático - Material del sitio web - Cómo usar FFmpeg+SDL2.0 para decodificar sonido en Android

Cómo usar FFmpeg+SDL2.0 para decodificar sonido en Android

i. Cree una estructura VideoPicture para guardar la imagen decodificada.

II.Agregar funciones para inicializar, agregar y leer la cola de datos.

3. audio_decode_frame(): decodificación de audio

4. audio_callback(): función de devolución de llamada que llena datos en el buffer SDL

5. Función:

schedule_refresh(): se utiliza principalmente para indicarle al sistema que presione FF_REFRESH_EVENT después del número especificado de milisegundos. Cuando lo veamos en la cola de eventos, la función de actualización de video se llamará en secuencia.

Sexto, agregue una función de visualización de video:

Dado que nuestra pantalla puede tener cualquier tamaño (la configuramos en 640 × 480 y de alguna manera la hacemos visible mediante el cambio de tamaño del usuario), entonces necesitamos para descubrir dinámicamente qué tan grande es nuestro rectángulo. Por lo tanto, primero debemos calcular la relación de aspecto del vídeo, que es el ancho dividido por el alto. Algunos códecs tendrán una relación de aspecto de muestra extraña, que es de un píxel o ancho/alto de muestra. Dado que los valores de alto y ancho en el códec están en píxeles, la relación de aspecto real es varias veces la relación de aspecto de muestra. Algunos códecs mostrarán una relación de aspecto de 0 a 5, lo que significa que cada píxel tiene un tamaño de sólo 1x1. Luego escalamos la película para que se ajuste a nuestra pantalla.

7. Asigne espacio de memoria para la salida de visualización:

Al usar la cola, tenemos dos punteros: el índice de escritura y el índice de lectura. También realizaremos un seguimiento de cuántas fotos hay realmente en el búfer. Para escribir en la cola, primero esperamos a que se borre el búfer para que haya suficiente espacio para almacenar nuestra VideoPicture. Si no, tenemos que reservar algo de espacio. Si el tamaño de la ventana cambia, también debemos reasignar el búfer.

VIII. El hilo de decodificación decodificará el decodificador, creará líneas de audio y guardará información importante en estructuras de datos.

9. Escribe la función Main que llama al hilo de decodificación.