Dominar el audio y el video es una tendencia, y el análisis básico del audio y el video de Android ayuda a todos a superar el "umbral alto" para aprender

La industria del audio y video se ha desarrollado durante muchos años. Con la aparición de más y más aplicaciones de audio y video en el terminal móvil en los últimos años, el audio y el video se han llevado a un clímax. Sin embargo, debido al alto costo del audio y el aprendizaje de video, muchos desarrolladores están desanimados. Para mantener el ritmo de los tiempos, escribí estos conceptos básicos de audio y video, explicando los conocimientos relacionados con audio y video, y rompiendo el "umbral alto" de audio y video para todos, con la esperanza de progresar juntos.

De hecho, no hay tutoriales o libros sistemáticos sobre el desarrollo de audio y video de Android, y las publicaciones de blogs en Internet están relativamente dispersas. Este conocimiento solo se puede acumular en serie mediante un poco de aprendizaje y acumulación.

Comparta mi propia experiencia de aprendizaje de audio y video:

Audio

El proceso de guardar sonido como audio es en realidad el proceso de digitalizar el audio analógico. Para lograr este proceso, el audio analógico debe muestrearse, cuantificarse y codificarse. A continuación explicamos este proceso en detalle.

muestreo

El muestreo es el proceso de convertir una señal de una señal analógica en el dominio de tiempo continuo a una señal discreta en el dominio de tiempo discreto (discreto significa discontinuo). Según el famoso teorema de Nyquist, el muestreo debe ser el doble de la frecuencia más alta del sonido. . El sonido que el oído puede oír es 20Hz ~ 20kHz, por lo que la frecuencia de muestreo del sonido es generalmente 44.1KHz (¿por qué 44.1KHz en lugar de 40KHz? Porque después de intentar usar esta frecuencia de muestreo para el muestreo, el efecto es mejor). Algunas otras tasas de muestreo se enumeran a continuación como referencia.

  • 8.000 Hz: la frecuencia de muestreo utilizada por el teléfono, que es suficiente para el habla humana
  • 11,025 Hz
  • Frecuencia de muestreo de 22.050 Hz para radiodifusión
  • Frecuencia de muestreo de 32.000 Hz para videocámara digital miniDV, DAT (modo LP)
  • CD de audio de 44,100 Hz, también comúnmente utilizado en frecuencia de muestreo de audio MPEG-1 (VCD, SVCD, MP3)
  • 47,250 Hz-Frecuencia de muestreo utilizada por la primera grabadora PCM comercial del mundo desarrollada por Nippon Columbia (Denon)
  • Frecuencia de muestreo de 48.000 Hz para sonido digital utilizado en miniDV, TV digital, DVD, DAT, películas y audio profesional
  • 50.000 Hz: la frecuencia de muestreo utilizada por la primera grabadora digital comercial desarrollada por 3M y Soundstream a finales de la década de 1970
  • Frecuencia de muestreo de 50,400 Hz utilizada por la grabadora digital Mitsubishi X-80
  • 96.000 o 192.000 Hz: la frecuencia de muestreo utilizada para DVD-Audio, algunas pistas de audio de DVD LPCM, pistas de audio de Blu-ray Disc (Blu-ray Disc) y pistas de audio de HD-DVD (High Definition DVD)
  • 2,8224 MHz: la frecuencia de muestreo utilizada en el proceso de modulación sigma-delta de 1 bit denominado Direct Stream Digital desarrollado conjuntamente por SACD, Sony y Philips.

Como se muestra en la figura anterior, es un proceso de muestreo: el audio analógico se corta en señales discretas en el dominio del tiempo en un dominio de tiempo continuo, que es la operación en el eje x. Luego hay un eje xy un eje y. De hecho, la operación en el eje y es la cuantificación.

Cuantificar

¿Qué es la cuantificación? Es utilizar datos específicos para representar la información segmentada anterior. En palabras vívidas, es dar cada eje de tiempo x correspondiente al valor de cambio de su eje y. Entonces, si queremos expresar el valor específico de una pieza de sonido, primero debemos asignar un intervalo variable (este intervalo se llama formato de cuantificación). Una unidad en binario es un bit, generalmente 8 bits, 16 bits y 32 bits .

Aquí también es necesario introducir el concepto de decibelios (unidad db): es una unidad que describe el tamaño del sonido, el rango de dB que el oído humano puede soportar es: 0 ~ 90dB, 0dB es el sonido más débil que el oído humano La audición en un entorno de 90 dB se verá gravemente afectada. Después de la investigación, 1 bit puede grabar alrededor de 6 decibeles de sonido, luego puedo obtener los datos a continuación

unidad rango dB
8 bits 0 ~ 2 ^ 8-1 <=> 0 ~ 255 0 ~ 48
16 bits 0 ~ 2 ^ 16-1 <=> 0 ~ 65535 0 ~ 96
32 bits 0 ~ 2 ^ 32 -1 <=> 0 ~ 4294967295 0 ~ 192

Se puede ver en lo anterior que generalmente usamos 16 bits, porque varían de 0 a 65535, y solo se ajustan al rango de tamaño de voz humana, mientras que el audio de procesamiento de 8 bits solo cambia de 0 a 255, y los cambios no pueden ser grabado muy finamente A continuación, ¿por qué no utilizar 32 bits? Esto se debe a que 32 bits consumen demasiado almacenamiento. Por supuesto, si desea que el audio sea más detallado, también puede utilizar 32 bits. Dado que la cuantificación se basa en el muestreo, toda la cuantificación corresponde a un muestreo, entonces, ¿cómo lo almacenamos? Esto implicará la siguiente codificación.

Banda sonora

¿Qué es una banda sonora? El canal es la fuente de la fuente de sonido, lo que significa que el sonido, un común Monoy Stereo.

  • Mono Mono, una sola fuente de sonido, muchos lugares han sido Stereoreemplazados
  • Estéreo estéreo, 2 o más fuentes de sonido

Cuando nos paramos en diferentes posiciones y escuchamos mono, el efecto que presenta es diferente, mientras que el estéreo no lo es. Todavía puede ser natural y agradable en diferentes direcciones. Hoy en día, los CD son generalmente estéreo de dos canales, la cantidad de canales es de dos .

Codificación de audio

La denominada codificación consiste en registrar datos digitales muestreados y cuantificados en un formato determinado, como almacenamiento secuencial o espacio de almacenamiento comprimido. Macroscópicamente, se puede dividir en dos categorías: codificación por compresión y codificación sin compresión.

Hay muchos formatos para un almacenamiento. Por lo general, los datos de audio sin procesar son lo que llamamos PCM, también llamado modulación de código de pulso (inglés: modulación de código de pulso, abreviatura: PCM) es un método digital de señal analógica, es una especie de sin comprimir formato de codificación. Generalmente, la descripción de una pieza de datos PCM requiere los siguientes conceptos:

  • Formato de cuantificación-SampleFormat, 16 bits por defecto
  • Tasa de muestreo-SampleRate, por defecto 44,1 KHz
  • Número de canales-Canal, 2 por defecto

Generalmente usamos 码率para describir audio, es decir, el rendimiento en 1 segundo, en bps:

码率 = 采样率 * 量化格式 * 声道数

Como arriba, podemos obtener: Tasa de bits = 44100 * 16 * 2 = 1411200 bps = 1411.2 kbps También puede obtener un tamaño de datos de 1 minuto: 1411.2 * 60/8/1024 = 10.34M

La siguiente figura es la información básica que obtuve de un formato mp3. Puedes ver que el formato de cuantificación, la frecuencia de muestreo y el número de canales son los mismos, pero su tasa de bits es de 320 kbps, que es la conclusión que hemos extraído de lo anterior. fórmula de cálculo inconsistente? Este es el formato de codificación de compresión involucrado.

Duration: 00:00:39.99, start: 0.011995, bitrate: 320 kb/s
Stream #0:0: Audio: mp3, 44100 Hz, stereo, s16p, 320 kb/s

La codificación de compresión consiste en comprimir datos. El principio de la codificación de compresión es en realidad comprimir señales redundantes. Las señales redundantes se refieren a señales que el oído humano no puede percibir, incluidas las señales de audio que están fuera del alcance del oído humano y enmascaradas. Señales de audio, etc. ., generalmente se comprimen en dos tipos:

  • Compresión con pérdida, después de que los datos se comprimen, la información no se pierde y se puede restaurar completamente al estado original antes de la compresión
  • Compresión sin pérdida, los datos comprimidos y descomprimidos por este método serán diferentes de los datos originales pero muy parecidos

En las aplicaciones de música, a menudo vemos "música sin pérdida". Si encuentra que está en formato mp3, entonces debe ser una compresión con pérdida, que es lo que llamamos falsa sin pérdida. Las compresiones con pérdida comunes son las siguientes:

  • MP2
  • MP3
  • CAA
  • WMA
  • ADPCM
  • atracción
  • Dolby AC-3
  • Musepack
  • Ogg Vorbis
  • Opus
  • LDAC

vídeo

Después de hablar de audio, hablemos de video. Primero que nada, ¿qué es video? Todos sabemos que el video se compone de imágenes enlazadas fotograma a fotograma, por lo que antes de presentar el video, primero debemos entender qué es una imagen.

imagen

Aprendimos física desde una edad temprana que podemos dispersar la luz en diferentes colores a través de los espejos de Mitsubishi. Después de más investigaciones, descubrimos que solo el rojo (R), el verde (G) y el azul (B) no se pueden descomponer, por lo que son llamado Los tres colores primarios de la luz.

Generalmente, cuando compramos un teléfono móvil nos referimos a su resolución, claro que cuanto mayor sea la resolución, mejor, porque cuanto mayor sea la resolución, más se acercará al aspecto original de las cosas. ¿Por qué?

De hecho, para permitir que las personas perciban imágenes en teléfonos móviles, también se adopta este modo RGB. Tome "1080x1920" como ejemplo, eso significa que hay 1080 píxeles en cada dirección horizontal y 1920 píxeles en la dirección vertical, por lo que hay un total de 1080x1920 = 2073600 píxeles. Cada píxel contiene tres subpíxeles, rojo (R), verde (G) y azul (B), de modo que cada píxel puede tener su propia reproducción a todo color.

Representación de imágenes

Sabemos que el rojo (R), el verde (G) y el azul (B) se pueden representar mediante 00 ~ FF o 0 ~ 255. De lo anterior sabemos que 8 bits pueden representar 0 ~ 255, y un píxel contiene rojo ( R), verde (G), azul (B) tres subpíxeles, que un píxel necesita al menos 24 bits, generalmente agregamos una opacidad (A) al color, por lo que un píxel es en realidad 32 bits, esta forma de representación Lo que usamos a menudo RGBA_8888, si una imagen se va a mostrar en pantalla completa en un teléfono móvil con la resolución anterior, ¿cuánto espacio se necesita?

1080*1920*4 = 8294400b = 8100kb = 7.91Mb

Este es también el tamaño del mapa de bits (mapa de bits) en la memoria Los datos sin procesar de cada imagen son muy grandes, por lo que si el mapa de bits se carga directamente en el teléfono, la memoria se desbordará pronto. Entonces, si deja que la imagen camine directamente en la red, definitivamente no funcionará. Generalmente, se realizará una compresión. Los formatos de compresión comunes son:

  • Compresión sin pérdida de BMP
  • Compresión PNG sin pérdida
  • Compresión con pérdida de JPEG

Esta es la razón por la que el pngformato se usa cuando se hacen imágenes pequeñas (como iconos) , mientras que se usan jpegimágenes grandes.Las imágenes pequeñas no se ven demasiado borrosas después de la compresión y ampliación sin pérdida, y las imágenes grandes pueden ser claras.

Representación de video

Generalmente usamos YUV para representar los datos de video desnudos. YUV también es un método de codificación de colores. ¿Por qué no usar RGB? En comparación con la transmisión de señales de video RGB, su mayor ventaja es que solo ocupa muy poco ancho de banda (RGB requiere que tres señales de video independientes se transmitan simultáneamente)

"Y" significa luminancia (luminancia, luma), también conocido como valor de escala de grises; "U" y "V" son cromaticidad, su función es describir el color y la saturación de la imagen, y se utiliza para especificar el color de la píxel. Si se ignora el UV, solo queda el gris (Y), que es el mismo que la señal de televisión en blanco y negro anterior, por lo que YUV se inventó para hacer la transición de la televisión en blanco y negro a la televisión en color.

UV se describe mediante Cb y Cr. Cb refleja la diferencia entre la parte azul de la señal de entrada RGB y el valor de luminancia de la señal RGB, mientras que Cr refleja la diferencia entre la parte roja de la señal de entrada RGB y el valor de luminancia de la Señal RGB. La señal UV le dice a la pantalla que cambie el brillo de un determinado color de acuerdo con una determinada referencia. Cuanto mayor sea el valor de UV, más saturado tendrá el píxel.

Para ahorrar ancho de banda, la mayoría de los formatos YUV usan menos de 24 bits por píxel en promedio. Los principales formatos de submuestra son YCbCr 4: 2: 0, YCbCr 4: 2: 2, YCbCr 4: 1: 1 y YCbCr 4: 4: 4. La notación de YUV se llama notación A: B: C:

  • 4: 4: 4 significa muestreo completo, similar a RGB
  • 4: 2: 2 significa muestreo horizontal 2: 1 y muestreo completo vertical.
  • 4: 2: 0 significa muestreo horizontal 2: 1 y muestreo vertical 2: 1.
  • 4: 1: 1 significa muestreo horizontal 4: 1 y muestreo completo vertical.

Luego mostramos el tamaño de datos de un cuadro de video en un teléfono móvil de 1080x1920 de la siguiente manera:

Formato YUV Tamaño (resolución 1080x1920)
444 1080 * 1920 * 3 = 6220800b = 6075 kb = 5,93 Mb
422 1080 * 1920 * (1 + 0.5 + 0.5) = 4147200 b = 4050 kb = 3.96Mb
420 1080 * 1920 * (1 + 0.5 + 0) = 3110400 b = 3037.5 kb = 2.97Mb
411 1080 * 1920 * (1 + 0,25 + 0,25) = 3110400 b = 3037,5 kb = 2,97 Mb

En la imagen de arriba, podemos ver que si usa YUV420 para un cuadro, será casi 3M menos que usar RGB directamente, que es la razón principal por la que se usa YUV en lugar de RGB.

Cabe señalar que el video general usa YUV4: 2: 0, YUV4: 2: 0 no significa que solo U (es decir, Cb), V (es decir, Cr) debe ser 0, pero significa que U: V se citan entre sí. El tiempo de visualización está oculto, lo que significa que para cada fila, solo hay un componente U o V. Si una fila es 4: 2: 0, la siguiente fila es 4: 2: 0 y la siguiente fila es 4: 2: 0 ... Y así sucesivamente.

¿Cómo convertir YUV en datos RGB y mostrarlos en teléfonos móviles? Esto requiere una fórmula de conversión

En este punto sabemos de qué se trata el video. El video se compone de un fotograma y un fotograma de imagen, y un fotograma de imagen está compuesto por datos desnudos YUV. Los datos desnudos YUV se pueden convertir a RGB y finalmente mostrarse en el teléfono móvil El anterior es el RGB convertido.

Codificación de video

Antes de introducir la codificación, primero presentamos dos conceptos:

  • Velocidad de fotogramas (fps): se mide la cantidad de fotogramas mostrados por unidad de tiempo (s). Generalmente, 24 fps es suficiente para video. Para los juegos, si la velocidad de fotogramas es inferior a 30 fps, habrá discontinuidad, que es lo que solemos llamar tartamudeo.
  • Tasa de bits: mide el tamaño de los datos por unidad de tiempo (s).

Podemos calcular la tasa de bits de la reproducción de datos de video YUV420 en un teléfono móvil 1080 * 1920:

bitRate = 1080* 1920* (1+0.5+0)* 24 = 71.2 Mbps

También puede obtener el volumen de datos de películas de 90 minutos:

total = bitRate * 60 * 90 = 375.42 GB

Esto definitivamente no es aceptable para nosotros, por lo que debe estar codificado. Al igual que la codificación de audio, generalmente se usa la codificación de compresión; de lo contrario, no es necesario reproducir ~

A diferencia de la codificación de audio, existe una fuerte correlación entre los datos de video, es decir, una gran cantidad de información redundante, incluida la información redundante en el tiempo y la información redundante en el espacio.

  • Redundancia temporal: en los datos de vídeo, suele haber una fuerte correlación entre los fotogramas adyacentes, que se denomina redundancia temporal.
  • Redundancia espacial: en el mismo fotograma, los píxeles adyacentes suelen tener una fuerte correlación, y dicha correlación es información de redundancia espacial.

Hay dos series de codificación de video común:

  • Serie MPEG, que incluye Mpeg1 (para VCD), Mpeg2 (para DVD), Mpeg4 AVC (es el medio de transmisión por secuencias más utilizado ahora)
  • Serie H.26x, incluidos H.261, H.262, H.263, H.264 (es el video más utilizado ahora)

Marco IPB

MPEG define la trama I, la trama P, la trama B e implementa diferentes algoritmos de compresión de acuerdo con diferentes tramas

  • I fotograma: el fotograma codificado dentro del fotograma se comprime en una única imagen de vídeo completa mediante un algoritmo de compresión, que también es el primer fotograma de un grupo, por lo que I fotograma elimina la información redundante del fotograma de vídeo en la dimensión espacial.
  • Cuadro de codificación predictiva de avance de cuadro P, es necesario hacer referencia al cuadro I anterior o cuadro P para decodificar en una imagen de video completa.
  • Cuadro B-cuadro de codificación de interpolación predictiva bidireccional, debe consultar el cuadro I anterior o cuadro P y el cuadro P siguiente para generar una imagen de video completa, por lo que el cuadro P y el cuadro B eliminan el cuadro de video en la dimensión de tiempo Información redundante sobre el

Nota: Hay un fotograma especial en el fotograma I IDR, que también es un fotograma I. Si aparece un fotograma IDR en el proceso de codificación de video, significa que todos los fotogramas posteriores ya no pueden hacer referencia al fotograma anterior y su función es equivalente. a una cuenca.

Como mencionamos anteriormente, un video se compone de una serie de imágenes y cada imagen es un fotograma. La imagen se procesa en un grupo. La estructura comúnmente utilizada de un grupo de marcos se compone de 15 marcos, en forma de IBBPBBPBBPBBPBB. También se llama un grupo de marcos GOP, puede consultar la siguiente figura

En la figura anterior, puede ver que el orden de decodificación y el orden de visualización no son el mismo, pero si no hay un marco B, es el mismo.

Lo anterior es el contenido básico relacionado de audio y video. Si no lo entiende o es incorrecto, deje un mensaje en el área de comentarios a continuación.


Finalmente, para ayudar a todos a comprender profundamente los principios de los puntos de conocimiento relacionados con el audio y el video y el conocimiento relacionado con las entrevistas, aquí hay una compilación de documentos de aprendizaje sobre el desarrollo de audio y video desde el nivel inicial hasta el avanzado:

Aquí hay una dirección para que todos aprendan sobre los sistemas de audio y video:

A continuación, será mejor aprender junto con los documentos de aprendizaje ~

1. Introducción elemental

Dibujar imágenes
Explicación detallada de AudioRecord API
Use AudioRecord para realizar grabaciones y generar wav
Use AudioTrack para reproducir audio PCM
Use Camera API para recopilar datos de video
Use MediaExtractor y MediaMuxer API para analizar y encapsular archivos mp4
MediaCodec API detallada

2. Capítulo avanzado intermedio: desarrollo de OpenGL ES de Android

OpenGL ES presenta el
entorno OpenGL ES para construir
OpenGL ES define la forma
OpenGL ES dibuja la forma
OpenGL ES usa proyección y vista de cámara
OpenGL ES agrega efectos de movimiento
OpenGL ES responde a eventos táctiles
Lenguaje de sombreado
OpenGL ES GLSL Mapeo de texturas OpenGL ES Use OpenGL a
través de GLES20 y la interacción del sombreador
Mostrar una imagen
GLSurfaceviw Dibujar la pantalla de vista previa de la cámara y realizar la toma de fotografías
Use OpenGL ES para completar la grabación de video y realizar el efecto de marca de agua de video

Tres, aprendizaje de estructura de registros de aprendizaje FFmpeg

Ver la herramienta de información de encabezado de archivos multimedia Herramienta ffprobe para
reproducir archivos
multimedia Herramienta de conversión de archivos multimedia ffplay ffmpeg
Dispositivo de captura
FFmpeg FFmpeg ajustar la velocidad de reproducción de audio y video
Introducción de
FFmpeg Instalar FFmpeg en Mac para
trasladar FFmpeg a la plataforma Android
Introducción de API de FFmpeg y análisis general de API
API de códec de FFmpeg Análisis de
los módulos centrales de FFmpeg análisis de libavformat y libavcodec de
AVFormat Análisis de
contexto de AVStream análisis de
AVPacket análisis de análisis de
AVFrame
...

El contenido anterior se coloca en el proyecto de código abierto, púlsame directamente para obtenerlo: [ github ]
(o mensaje privado que agrego WeChat para obtener).

Supongo que te gusta

Origin blog.csdn.net/weixin_44339238/article/details/111319360
Recomendado
Clasificación