Red de conocimiento informático - Aprendizaje de programación - codificación de vídeo FFmpeg-codificación YUV desde H264

codificación de vídeo FFmpeg-codificación YUV desde H264

Los datos h264 codificados se pueden reproducir directamente a través de ?ffplay

int av_image_get_buffer_size(enum AVPixelFormat pix_fmt, int width, int height, int align

Function); La "función" calcula el tamaño de memoria requerido especificando el formato de píxel, el ancho de la imagen y la alineación de la imagen.

Resalte el parámetro de alineación. Alineación: este parámetro establece la memoria en el ancho de la imagen, las dimensiones de la imagen y el tamaño de la imagen. Este parámetro establece el logaritmo de la memoria. Este parámetro establece el logaritmo del par de memoria, es decir, cuántos bytes se utilizan para calcular el logaritmo del par de memoria. Este parámetro establece el número de pares de memoria, es decir, el número de bytes en el par de memoria. :

av_image_alloc() se define así. La función de esta función es asignar memoria de acuerdo con el ancho y el formato de píxeles especificados para asignar memoria de imagen.

int av_image_alloc(uint8_t *pointers[4], int linesizes[4], int w, int h, enum AVPixelFormat pix_fmt, int align

int av_image_fill_ arrays(uint8_t *); dst_data[4], int dst_linesize[4], const uint8_t *src, enum AVPixelFormat pix_fmt, int width, int height, int align);

av_ image_fill_arrays() ¿Esta función es similar a formatear? La memoria solicitada es el espacio de memoria solicitado por la función av_malloc(), o el espacio de memoria solicitado por la función av_frame_get_buffer().

Especificaciones de parámetros en av_image_fill_arrays():

La tasa de bits de video se refiere a la cantidad de bits de salida de datos de video por segundo (incluida la cantidad de color del video, la cantidad de brillo y la cantidad de píxeles). La unidad es kbps.

En las aplicaciones de videoconferencia, la calidad del video y el consumo de ancho de banda de la red son una contradicción. Por lo general, cuanto mayor es el ancho de banda ocupado por la transmisión de video, mayor será la calidad del video si se requieren efectos de video de alta calidad; la red La demanda de ancho de banda será mayor; la clave para resolver esta contradicción es, por supuesto, la tecnología de códec de video. La clave para resolver esta contradicción es, por supuesto, la tecnología de codificación y decodificación de vídeo. Para juzgar la calidad de los códecs de vídeo, debe comparar qué calidad de vídeo es mejor en las mismas condiciones de ancho de banda; qué códec de vídeo ocupa menos ancho de banda de la red en las mismas condiciones de calidad de vídeo.

¿Cuanto mayor sea la tasa de bits, mejor será la calidad? Eso es cierto en teoría, pero cuando la tasa de bits es lo suficientemente alta como para marcar la diferencia hasta donde alcanza la vista, no hay mucha diferencia. Por lo tanto, la configuración de la tasa de bits tiene su valor óptimo. En archivos H.264 (también conocidos como AVC o X.264), la tasa de bits recomendada para vídeo es la siguiente:

En vista de los numerosos parámetros de x264. , La coordinación de varios parámetros es complicada para facilitar a los usuarios, x264 recomienda que si desea utilizar la misma velocidad de bits que x264, puede hacerlo. Las configuraciones se pueden preestablecer y ajustar para necesidades especiales. Este conjunto de parámetros recomendado por el desarrollador es relativamente razonable y se puede ajustar sobre esta base. Ciertos parámetros se pueden ajustar para satisfacer sus necesidades. Los parámetros preestablecidos y de ajuste serán anulados por los parámetros establecidos por el desarrollador.

Hacer que ffmpegs funcione es una buena idea, pero no mala.

Utilice el comando ffmpeg -h encoder=libx264 para consultar parámetros relacionados. ¿Utilizar el comando ffmpeg -h encoder=libx264 para consultar parámetros relacionados? Como codificador AVC H.264/MPEG4, esta guía guiará a los principiantes sobre cómo crear un codificador x264. Esta guía enseñará a los principiantes cómo crear un codificador AVC H.264 de alta calidad. Para los usuarios normales, normalmente existen dos modos de control de la tasa de bits: ¿Qué es el control de la tasa de bits? ¿Qué es el control de la tasa de bits? ¿Qué es el control de la tasa de bits? Un método para determinar cuántas características especiales asignar a cada fotograma de vídeo. Es un método para determinar cuántos bits se asignan para cada cuadro de video. Determinará la calidad y distribución del vídeo.

Si necesita ayuda para compilar e instalar libx264, consulte la Guía de compilación de ffmpeg y x264: http://ffmpeg.org/trac/ffmpeg/wiki/CompilationGuide

¿Cuantización? Los ejemplos van del 0 al 51, donde 0 representa el modo con pérdida, 23 representa el modo predeterminado y 51 es el peor modo posible. Cuanto mayor sea el número, mejor será la calidad de la imagen. Cuanto mayor sea el número, mejor será la calidad de la imagen. Subjetivamente, 18-28 es un rango razonable. 18 se suele utilizar como valor predeterminado. 18 generalmente se considera el mejor visualmente, pero la calidad de su salida de video no es satisfactoria. 18 generalmente se considera con pérdida visual y la calidad del video de salida es la misma que la calidad del video de salida. La calidad del video de salida y la calidad del video de salida no son tan buenas como la calidad del video de salida. muestra o diferencia. Sin embargo, técnicamente sigue siendo una compresión con pérdidas.

Si suma 6 al valor CRF, la tasa de bits de salida se reducirá en un factor de 1.

Si suma 6 al valor CRF, la tasa de bits de salida se reducirá aproximadamente a la mitad; si resta 6 al valor CRF, la tasa de bits de salida se duplicará. Esto generalmente se logra seleccionando el método de compresión más apropiado para una calidad de video aceptable. El valor CRF más apropiado generalmente se elige en función de una calidad de video aceptable. Si la calidad del vídeo de salida es muy buena, puede probar con un valor CRF mayor. Si la calidad del vídeo de salida es buena, pruebe con un valor CRF mayor. Si la calidad del vídeo de salida es buena, pruebe con un valor más alto; si se ve mal, pruebe con un valor más alto. Si la calidad del vídeo de salida es buena, pruebe con un valor más alto; si se ve mal, pruebe con un valor más alto.

El valor predeterminado es el valor CRF más común en el mundo.

Un ajuste preestablecido es un conjunto de parámetros que se pueden utilizar para diversos propósitos. Un ajuste preestablecido es un conjunto de parámetros que compensan la velocidad de codificación y la compresión.

Un ajuste preestablecido es un conjunto de parámetros que equilibran la velocidad de codificación y la relación de compresión. Los ajustes preestablecidos con velocidades de codificación más lentas proporcionarán más compresión. Los ajustes preestablecidos con velocidades de codificación ligeramente más lentas proporcionarán una compresión más eficiente (la eficiencia de la compresión es función de la cantidad de datos codificados). Esto significa que si desea obtener la mejor compresión posible, debe hacer un equilibrio entre velocidad de codificación y compresión). Esto significa que si desea obtener un valor específico o un valor constante para un archivo específico, puede usar el modo de codificación de velocidad constante, y si desea obtener un clip específico o un modo de codificación de velocidad constante, puede usar un valor preestablecido más lento. para conseguirlo. Puede elegir un ajuste preestablecido más lento para obtener una mejor calidad. Del mismo modo, en el modo de codificación de calidad constante, puedes ahorrar dinero fácilmente eligiendo un ajuste preestablecido más lento. Puede ahorrar calidad fácilmente eligiendo un ajuste preestablecido más lento.

Si tienes mucha paciencia, normalmente se recomienda configurar el codificador en el codificador "normal". Todos los ajustes preestablecidos anteriores, en orden de mayor a menor velocidad de codificación, son:

Tune es la segunda opción más importante en x264 después de los ajustes preestablecidos y es un parámetro utilizado para la optimización visual. La melodía puede entenderse como una preferencia de video (o tipo de video), la melodía no es un parámetro único. Es un conjunto de parámetros.

Un conjunto de parámetros -tune puede cambiar la configuración de los parámetros. Actualmente, tune incluye:

Si no está seguro de qué opción usar o qué hacer con la salida, puede usar tune.

Si no está seguro de qué opción usar, o si su salida no coincide con todas las melodías, puede usar -tune. Si no está seguro de qué opción usar, o si la salida no coincide con ningún tono, puede omitir la opción --tune. Se puede ver una lista de túneles usando la opción --tune. Utilice --tune para ver la lista de ajustes, o x264 --fullhelp para ver la configuración de los parámetros de ajuste. También puede usar x264 --fullhelp para ver la configuración de parámetros utilizada por tune.

Otro parámetro opcional es --pune. Otro parámetro opcional es -profile:v, que limita la salida a un perfil H.264 específico. Estos parámetros generalmente se usan de la misma manera que el parámetro -profile:v. El parámetro -profile:v se puede utilizar para limitar la salida a un perfil H.264 específico. Algunos de los dispositivos más comunes u obsoletos tienen sólo un número limitado de opciones y no pueden utilizar el parámetro -profile:v. Por ejemplo, solo admiten línea base o línea principal.

Todos los archivos de configuración incluyen:

Buscar el codificador especificado

Inicializar

Establecer los parámetros del codificador

Vincular codec_ctx a códec

Asignar paquete y fotograma

Calcular los datos de cada fotograma en formato de píxeles * ancho * alto

leer Obtener datos YUV

Formatear la memoria solicitada y enviar datos YUV,

Enviar datos YUV al codificador

Obtener los datos codificados del codificador Paquetes de datos

Obtener datos codificados de codificador

Escribir datos de paquetes codificados en un archivo