top of page
Página de inicio de XSplit

Ajustes de calidad, búfer VBV y presets de XSplit

Melvin Dichoso
2 mar 2016
6 min de lectura

XSplit utiliza el codificador x264, así que empezaremos aclarando que los parámetros mencionados en el título, salvo los parámetros de calidad, significan lo mismo que los parámetros de la wiki de x264 aquí.


Calidad

Como la calidad es diferente, empecemos por ella. En términos de x264, la calidad se conoce como factor CRF o Constant Rate Factor. El codificador acepta cualquier valor entre CRF=0 (sin pérdidas) y CRF=51 (calidad terrible).

Al codificar un stream de vídeo, puedes aplicar distintos sistemas de control de tasa. XSplit utiliza un control basado en la calidad, que busca una calidad concreta del vídeo codificado mientras respeta un límite superior de tasa de bits (vbv-maxrate). Hay una enorme diferencia en la tasa de bits necesaria entre las distintas calidades (y NO es lineal). La mayoría ni siquiera podría ver una diferencia entre CRF=18 y CRF=0, salvo que una grabación CRF=0 ocupa muchísimo espacio en el disco duro.

En términos de XSplit, utilizamos un ajuste general de calidad para streaming entre 0 y 10, donde 10 es el valor más alto. La calidad 10 corresponde a CRF=25, que suele ofrecer una calidad muy buena. La calidad 0 corresponde a CRF=35, que puede ser aceptable en algunos casos, aunque no sea especialmente atractiva.

Aunque pueda debatirse, la convención de XSplit es utilizar su propio parámetro de calidad y convertirlo internamente a CRF. Creemos que la gente entiende la calidad y está acostumbrada a valores entre 0 y 10, donde el último es el más alto. Pero todo esto se puede personalizar fácilmente para quien quiera seguir ese camino.

En una grabación local, XSplit solo te ofrecerá establecer un ajuste de calidad y no definirá un vbv-maxrate ni un vbv-buffer concretos. La idea es que, en una grabación local, normalmente no nos preocupa el uso del ancho de banda. Por eso se crea una grabación orientada a una calidad concreta y, según la calidad seleccionada, el tamaño de las grabaciones para la misma entrada variará, lo que resulta lógico.

En escenas complejas (fotogramas) se utilizan más bits para garantizar una calidad visual uniforme y, en las menos complejas, menos bits. El codificador x264 intenta interpretar la importancia de los cambios en un fotograma y optimizar la calidad visual según los ajustes (CRF, también llamado ajuste de calidad). La base para la calidad son 25 fotogramas por segundo. x264 adapta su calidad según la frecuencia de fotogramas del vídeo, por lo que un ajuste concreto ofrecerá menos calidad por fotograma en un stream de 60 FPS que en uno de 25 FPS. La razón es sencilla: un fotograma a 25 FPS es más importante que uno a 60 FPS cuando el objetivo general es conservar la misma calidad visual en ambos streams.

Para una grabación local, aún puede ser conveniente controlar el ancho de banda máximo utilizado, por lo que la interfaz de XSplit permite configurar vbv-maxrate y vbv-buffer. Volveremos a esto enseguida.


VBV-buffer y VBV-maxrate

Los dos principales mecanismos de control de tasa de datos del codificador x264 son

- Modo de tasa de bits media- Modo de calidad media

En la interfaz de XSplit solo permitimos el modo de calidad media descrito anteriormente, porque suele ser un mecanismo mucho más eficaz.

Sin embargo, para ambos sistemas principales se utiliza a menudo un control de tasa complementario, que incluso es necesario para hacer streaming en directo con XSplit correctamente: el control de tasa VBV. Con la codificación basada en la calidad se garantiza una calidad concreta, pero no un uso concreto del ancho de banda. En el streaming en directo es importante no superar tu ancho de banda de subida disponible, ni la velocidad de descarga de los espectadores.

Algunos codificadores permiten emitir con un ancho de banda constante, pero este mecanismo de control de tasa (o la falta de él) desperdicia ancho de banda y suele exigir una conexión de mayor calidad tanto al emisor como a los espectadores.

XSplit utiliza en su lugar una codificación basada en la calidad y establece un VBV-maxrate y un VBV-buffer. Esto significa básicamente que el codificador x264 de XSplit intenta mantener una calidad constante del stream y puede utilizar menos ancho de banda en escenas menos complejas o importantes. El VBV-maxrate establece un límite para el ancho de banda que puede usar el codificador, pero en relación con el VBV-buffer.

Si configuras VBV-maxrate=2000 y VBV-buffer=4000, el búfer VBV (búfer de decodificación) se llenará a una tasa máxima de 2000 Kbps. Por tanto, la tasa de bits de vídeo aún puede superar el valor discreto de 2000 Kbps, PERO no superarás 4000 Kbit en un periodo de 2 segundos. En otras palabras, VBV-maxrate no es realmente la tasa de bits máxima que puede existir en el stream, sino la máxima que puede entrar en el búfer.

Si entiendes este concepto, también entenderás la flexibilidad que ofrece vbv-buffer. Permite básicamente al codificador anticipar una serie de fotogramas y utilizar más bits para algunos de una secuencia y menos para otros, siempre que no se supere el búfer.

Ahora debes entender que vbv-buffer es en realidad un búfer del lado de la decodificación, por lo que depende del decodificador, que en nuestro caso suele ser Flash Player. Es posible configurar Flash Player con un búfer desde 0 segundos hasta, bueno, cualquier cantidad, supongo. Pero la mayoría de los proveedores fijan los ajustes en 1 o 2 segundos. Por eso los plugins de streaming de XSplit suelen ajustar automáticamente vbv-buffer a X o 2 * X kilobits cuando vbv-maxrate está en X kilobits por segundo (Kbps). ¡Espero que todo empiece a tener sentido! Si el búfer de Flash Player de tu proveedor estuviera en, por ejemplo, 10 segundos, podrías aumentar mucho mi vbv-buffer y obtener la misma calidad con menos ancho de banda total o una calidad mejor con el mismo ancho de banda. Básicamente darías más libertad al codificador para aumentar la tasa de bits cuando fuera necesario. Puedes esperar que el equipo de XSplit dialogue con nuestros socios para ver si podemos conseguir que ajusten su búfer de Flash Player al búfer VBV establecido en XSplit.

Como último apunte, volvamos a la grabación local. En este caso no hay una tasa máxima predeterminada, vbv-maxrate, para la grabación ni, por tanto, un vbv-buffer. Sin embargo, si quieres colocar el vídeo grabado en tu sitio web y que los visitantes lo reproduzcan con Flash Player a través de Internet, quizá quieras pensártelo dos veces. Si esperas que los espectadores finales no tengan más de 1000 Kbps de ancho de banda de descarga y quieres que el vídeo empiece a reproducirse después de unos 4 segundos, tendrás que aplicar las restricciones VBV adecuadas además de la calidad asignada a la grabación local.

En el caso anterior utilizaríamos los siguientes ajustes de XSplit:

VBV Max Rate:1000 kbpsVBV Buffer:4000 kbps

Probablemente también deberíamos compensar el audio, pero en este caso basta con restar 1 x la tasa de bits de audio de tu VBV Max Rate y 4 x la tasa de bits de audio de tu VBV Buffer, y ya está.


Ajuste preestablecido del codificador

Hay varios ajustes preestablecidos integrados, de «Ultrafast» a «Placebo». XSplit utiliza uno personalizado llamado «XSplit Default». En el futuro puedes esperar que el predeterminado sea «Veryfast».

Pero ¿qué significa todo esto?

H.264 especifica un conjunto de funciones de compresión que un decodificador debe poder admitir o decodificar. Según las capacidades de los decodificadores, se dividen en grupos de perfiles: High Profile, Medium Profile y Base Line Profile. Por ahora solo consideraremos High Profile, compatible con Flash Player.

Al utilizar un ajuste preestablecido concreto, el codificador x264 emplea varias funciones avanzadas para comprimir mejor el flujo de bits del vídeo. Cualquier ajuste más lento que «Superfast» generará un flujo compatible con High Profile, salvo que se añadan otras restricciones personalizadas, pero dejemos eso por ahora. Solo necesitas saber que cuanto más lento sea el ajuste, más se comprimirá el stream y mejor calidad podrás producir con ancho de banda limitado. PERO requiere una potencia de CPU considerable según la frecuencia de fotogramas y la resolución.

El ajuste predeterminado es «XSplit Default» o «Veryfast», que son más o menos equivalentes. Si no hay otros procesos intensivos de CPU funcionando a la vez y quieres emitir o codificar 30 FPS a 1280 x 720 con «Veryfast», un procesador i5 debería bastar. Si el uso de CPU supera el 70 % en algún núcleo, tendrás que:

a) Utilizar una resolución menorb) Utilizar un ajuste más rápido (como superfast)c) Comprar un buen equipo Core i7

En pocas palabras, el ajuste preestablecido que eliges equivale a la cantidad de compresión que pides al codificador. Más lento = más compresión = más uso de CPU.

Para explicar lo que deberías haber aprendido, demos la respuesta a la única pregunta que probablemente tengas ahora en mente -:):


Pregunta: Si hago una grabación local, establezco la calidad en 8 y NO configuro ninguna restricción VBV, ¿obtendré un vídeo de mejor calidad si selecciono un ajuste preestablecido más lento?

Respuesta: NO, NO LA OBTENDRÁS. La calidad será exactamente la misma, pero cuanto más rápido sea el ajuste preestablecido, menos comprimido estará el vídeo grabado (mayor tamaño de archivo). PERO si tienes restricciones VBV-maxrate suficientemente estrictas, verás una diferencia de calidad porque el ajuste más lento mantiene mejor la tasa por debajo de tu VBV-maxrate.

Comentarios


bottom of page