¿Qué parámetros debo tener en cuenta para reducir el tamaño de un archivo .MOV?

12

Mi Canon 60D crea archivos .MOV al grabar video y descubrí que el contenedor .MOV tiene un flujo de video H264 y un flujo de audio PCM.

He usado ffmpeg y GSpot para ver algunos de mis videos, y veo lo que parecen ser tasas de bits bastante altas (22,000kbps para 640x480, 45,000 para 1920x1080).

Me gustaría reducir el tamaño de los archivos, pero mantener la calidad bastante alta. He jugado con lo más simple que pude pensar, reduciendo la velocidad de bits y eso es lo que esperaba: reducir la tasa de bits a la mitad y el tamaño del archivo es aproximadamente la mitad. Pero me pregunto si hay una manera de determinar una tasa de bits objetivo "buena", o si hay algún punto en tratar de hacer una tasa de bits variable.

Ward
fuente

Respuestas:

21

Pero me pregunto si hay una manera de determinar una tasa de bits objetivo "buena" ...

Una buena tasa de bits de destino es la tasa de bits que:

  • es compatible con la red desde la que está transmitiendo el material (por ejemplo, una red 3G, WiFi doméstica, etc.), que es bastante fácil de calcular
  • se ve bien para , que es una medida muy subjetiva

22 Mbit / s o 45 Mbit / s son bastante altos para el usuario promedio, y especialmente para videos ya comprimidos como h.264. Definitivamente, podría seguir adelante y reducir la tasa de bits a un valor "sano", siempre con respecto a cuánta capacidad de almacenamiento puede pagar y cuánta calidad desea perder.

También puede cambiar el tamaño del video de 1080p a 720p si realmente no necesita el tamaño o no tiene la capacidad de procesamiento para editarlo.

... o si hay algún punto en tratar de hacer bitrate variable

El punto de la tasa de bits constante es adaptarse a un escenario de transmisión de medios donde hay un cuello de botella que limita la tasa de bits máxima del video transmitido. En el mundo multimedia de hoy, esto ya no necesariamente tiene sentido.

Cuando exprime un video en una cantidad constante de bits por segundo, básicamente le dice a un codificador que siempre use la misma cantidad de bits para codificar el mismo período de tiempo. ¿Es ese el mejor enfoque? Como ya habrás adivinado, no lo es. Citando el Guía CRF de Handbrake (volveré sobre esto más adelante):

El ojo percibe más detalles en objetos estáticos que cuando están en movimiento. Debido a esto, un compresor de video puede aplicar más compresión (soltar más detalles) cuando las cosas se están moviendo, y aplicar menos compresión (retener más detalles) cuando las cosas están quietas. Subjetivamente, el video parecerá tener mayor calidad.

Por lo que hace tiene sentido utilizar una tasa de bits variable siempre que pueda. Hará que el video se vea mejor, incluso al mismo tamaño de archivo de un video de tasa de bits constante.

Más aún, la mayoría de los codificadores, siendo el más famoso x264 - a menudo realiza muy malo cuando les dices que usen una tasa de bits constante. Es mejor darles un poco más de "libertad" en el sentido de cuántos bits desean gastar en un marco. Después de todo, ese es el trabajo del codificador, y no tú. Y eso se llama "calidad constante".


Basta ya, ¿qué significa eso en la práctica? Si usa FFmpeg para codificar videos, entonces ya está usando una herramienta lo suficientemente buena. Si ahora también tiene instalado x264 y usa la última versión de ambos, entonces está usando uno de los mejores codificadores disponibles actualmente de forma gratuita. En lugar de codificar con una tasa de bits fija, deje que x264 elija cuánto quiere gastar. Haga esto usando el Factor de frecuencia constante opción.

En un caso muy simple, esto significa establecer un valor entre 17 y 23. Elijo MP4 como contenedor de salida en lugar de MOV porque hay mejores herramientas Para remultiplexación disponible:

ffmpeg -i input.mov -c:v libx264 -crf 22 output.mp4

Cuanto menor sea el valor, mejor será la calidad y mayor será la salida. Viceversa, cuanto mayor sea, menor será la calidad. Al mismo tiempo, por supuesto, reducirá la tasa de bits media necesaria. Comprobar la guía de codificación x264 para más información sobre ffmpeg.

Su tarea ahora es encontrar un valor de CRF que:

  • reduce la tasa de bits general al punto que puede pagar
  • no reduce la calidad demasiado, por lo que el video todavía se ve bien

Sí, esto implica una gran cantidad de codificación y prueba y error, pero esto es un asunto cotidiano cuando se ajusta y codifica el video.

Ah, y si no te gusta la línea de comando, Freno de mano es una herramienta gratuita y multiplataforma que hace exactamente lo mismo. Incluso tiene un control deslizante CRF:

enter image description here

slhck
fuente
Con respecto al detalle del objeto en movimiento, ¿no se exagera regularmente en la compresión de video, o simplemente recuerdo los malos ejemplos? Como notable aumento en el detalle una vez que la cámara detiene la panorámica, etc.
Daniel Beck
Esto es en realidad bastante común, conocido como problemas de "estabilización". Por ejemplo, cuando ves que el bloqueo desaparece. Esto es típico en un escenario de baja tasa de bits donde el cambio de la diferencia de movimiento es demasiado rápido para que el control de velocidad se adapte. Supongo que una codificación de dos pases podría ayudar aquí, pero probablemente no mucho. No sé si es posible deshacerse por completo de este tipo de artefactos.
slhck
He usado Handbrake en el pasado, convirtiendo avisos DV de una cámara de video a DivX y mp4, pero me resultaba más fácil trabajar con una línea de comandos al intentar averiguar mis opciones para pasar de .mov a h264 mp4s. ¿Hay un equivalente a -crf cuando estás creando DivXs? (¿o debería ser otra pregunta?)
Ward
@Ward puedes usar -qscale. Para mpeg *, la escala es lineal desde 1 hasta 31 (siendo 31 la peor calidad), y duplicar el valor resultará en aproximadamente la mitad de la tasa de bits. Un valor de 2 puede considerarse aproximadamente sin pérdida visual. Por lo general, 3-5 es un buen equilibrio, pero, por supuesto, la calidad es subjetiva y solo tendrá que intentarlo.
llogan
¡Bonito! Algunas preguntas. (1) ¿qué significa un número seguido de "p" en "video de 1080p a 720p"? (2) x264 utiliza una tasa de bits variable, pero ¿por qué la opción en ffmpeg se llama Factor de velocidad constante? ¡Gracias!
Tim
2

Prueba Handbrake CLI

Quería reducir algunos archivos MOV y no me importó aprender todos los detalles sobre las opciones de video. Handbrake CLI es lo que utilicé. Los ajustes preestablecidos son agradables:

HandBrake ofrece preconfiguraciones codificadas y de fábrica que son exactamente   lo mismo que los presets incorporados en el MacGui.

En mi caso, esto funcionó muy bien:

HandBrakeCLI -i input.MOV -o output.mp4 --preset="Normal"

Sin preajuste, la salida era muy pequeña pero no de buena calidad. El ajuste preestablecido "Normal" me pareció bueno, pero puedes ver otros disponibles con HandBrakeCLI --preset-list, o modifica todas las opciones tú mismo si lo prefieres.

Nathan Long
fuente