¿Cómo puedo obtener MP4 de alta calidad / bajo tamaño como el grupo de lanzamiento LOL?

20

El grupo de lanzamiento LOL hace un excelente trabajo al codificar sus lanzamientos en The Vampire Diaries (en otros programas como How I Met Your Mother, la tasa de bits es mayor, por lo que no parece tan efectivo).

Alrededor de 200 MB cada uno ~ 45 minutos de archivo MP4, considerando una calidad increíble.

Me pregunto qué configuraciones y qué software utilizan. Intenté obtener información de estos archivos usando MediaInfo, luego utilicé la configuración en HandBrake, pero realmente no tuve éxito.

¿Podría alguien ayudarme por favor? No tengo mucho conocimiento sobre codificación / compresión.

gracias
fuente

Respuestas:

28

Las pautas para codificar video (pirateado) se denominan "guías de escena". Están firmados por varios grupos de lanzamiento que se asegurarán de que sus videos cumplan con la guía, LOL es uno de estos grupos.

Puede encontrar una lista de guías de escenas scenerules.org . El estándar que está buscando es, si no me equivoco, el SD x264 TV Releasing Standard , suponiendo que su video sea de 1280 × 780. Si tiene video HD, probablemente no obtendrá una muy buena calidad a 200 MB durante 45 minutos. Sin embargo, eso se traduciría en aproximadamente 600 kBit / sy sería suficiente para 720p.

En cuanto a las herramientas de codificación, puedes llegar bastante lejos con FFmpeg (en el que se basa Handbrake). El único culpable es que el uso de audio FFmpeg y FAAC está prohibido para esa guía de escena, pero a menos que realmente esté contribuyendo, eso no importará.

Si no tiene experiencia previa con la codificación de video y todas estas palabras clave no significan nada para usted, eche un vistazo a los siguientes artículos de blog / Preguntas de superusuario:

Básicamente, las reglas dicen que debe usar el codificador x264 con una configuración de calidad de Factor de velocidad constante . Lo que hace es bastante diferente a establecer una tasa de bits constante: puede configurar el CRF para que x264 codifique el video con una calidad constante.

Los niveles típicos de CRF están entre 18 y 28, y el grupo de lanzamiento recomienda 19–20 para una codificación de alta calidad de material que sea fácil de comprimir. No va a saber el tamaño final del archivo de antemano cuando lo haga, pero ese es el objetivo de la codificación CRF: no le importa el tamaño real del archivo, solo desea una buena calidad.

Una vez que configura ffmpeg, y tiene su entrada de video lista, la codificación es bastante simple. Sin embargo, tenga en cuenta que su video de origen debe ser de alta calidad, de lo contrario, volver a codificar solo deteriorará su calidad mucho más.

Aquí están los parámetros clave:

  • video x264 con:
    • CRF 19–20
    • slow perfil (mejor eficiencia de compresión a expensas del tiempo de codificación)
    • H.264 nivel 3.1, que establece algunas restricciones
    • La reducción de escala debe realizarse con cualquier cambio de tamaño que no sea bicubic (que es el valor predeterminado de FFmpeg). Se pueden usar Lanczos , por ejemplo.
    • Una tuneconfiguración para la fuente (por ejemplo, filmpara contenido similar a una película)
  • Audio AAC con:
    • Codificación de velocidad de bits variable
    • Velocidad de bits entre 96 y 160 kBit / s

En ffmpeg, esto se traduce en lo siguiente:

ffmpeg -i input.mp4 \
-c:v libx264 -crf 19 -level 3.1 -preset slow -tune film \
-filter:v scale=-1:720 -sws_flags lanczos \
-c:a libfdk_aac -vbr 5 \
output.mp4

En FFmpeg, sus opciones para la codificación AAC son un poco limitadas. Consulte aquí sus opciones de AAC y también consulte la Guía de codificación de FFmpeg y AAC para obtener más información.

Si su video termina siendo demasiado grande, puede ajustar el CRF. Los valores ± 6 darán como resultado la mitad / el doble de la tasa de bits, por lo que si comienza con 19 y pasa a 25, terminaría con la mitad de la tasa de bits. Las reglas de la escena no permiten CRF por encima de 24, pero probablemente no le importará.

slhck
fuente
2

No puedo hablar con el grupo de lanzamiento que mencionaste porque no publicaste la información de medios. Pero aquí hay una guía para hacer codificaciones compactas, lo que significa lograr un buen equilibrio de calidad / tamaño.

Debe comenzar con HandBrake y la mejor fuente disponible. En la sección Fuente , seleccione un segmento corto pero difícil de codificar (con acción y detalles finos). En la sección Destino , seleccione libmkv . En la pestaña Video , desmarque el uso de opciones avanzadas (aún puede agregar esas opciones caso por caso en más configuraciones ), seleccione --rc=crfcontrol de velocidad, lo más alto que --presetsu computadora puede soportar ( slowero veryslow), una --tuneque coincida con la fuente ( filmo animationdebería cubrirla), y establecer el perfil y el nivel a auto/ auto. Luego juegue con la resolución (solo si la fuente es HD; en la configuración de imagen, establezca anamórfico para aflojar y varíe uno de los ejes, desde la siguiente resolución de alta resolución y hacia abajo) y --crfhasta que encuentre un buen compromiso entre calidad y velocidad de bits para su segmento corto. Tenga en cuenta que el crf está vinculado al resto de sus configuraciones de codificación, por lo que debería ser la última configuración de video que cambie. En audio , vaya con Vorbis a 160 kbps (esto usará AoTuV -q5, logrando transparencia sin más ajustes). En las otras pestañas, compruebe que se conserva todo lo que pueda necesitar (marcas de capítulos, pistas de subtítulos, metadatos, etc.). Cuando esté satisfecho, puede usar esta configuración para codificar el resto del episodio; la tasa de bits promedio debería terminar mucho más baja que en el segmento difícil. Cuando tenga confianza en su configuración, puede usarla para codificar estaciones enteras.

Cómo los pasos anteriores mejoran la compacidad: libmkv le da acceso a más códecs, perfil y versión para auto, lo que significa que no habrá restricciones de reproducción para retener el codificador. Un segmento corto (unos segundos) le da mucho más tiempo para modificar las cosas y ver los resultados. Tune optimiza la calidad psicovisual (percibida) para la apariencia de la fuente. Los presets más altos mejoran la compacidad a expensas del tiempo de codificación (esto puede no ser notable en su segmento difícil, pero mejorará la tasa de bits en la mayoría de las otras escenas). El control de frecuencia de CRF significa que su codificación variará la tasa de bits para apuntar a una calidad dada, con episodios más exigentes obteniendo más espacio.

Un filtro de eliminación de ruido también puede ser muy útil si mantiene la resolución original. Querrá mantenerlo ligero porque el objetivo no es limpiar un defecto de fuente perceptible, sino mejorar la compresibilidad sin degradar notablemente la calidad. Aquí hay una guía para usar el desnoiser HQDN3D de HandBrake , que se encuentra entre los x264 --nry los desnoisadores de última generación por su calidad.

Tobu
fuente
2

FFmpeg TV

Basado en la respuesta de slhck , construí esta solución simple de Python para llamar los ffmpegparámetros correctos . Basado en los últimos estándares de TV de 2016 .

python3 ffmpeg-tv.py input.mp4 output.mkv

Descrito, puede encontrar todos los parámetros y una breve descripción de por qué se configuraron de esta manera de manera predeterminada.

  # 1.3) Providers which downscale 1080i to 720p (e.g. BellTV) are not allowed.
  # 5.10) Resized video must be within 0.5% of the original aspect ratio.
  scale="-1:-1" # <width>:<height>; -1 maintain ratio.

  # 4.1) Video must be H.264/MPEG-4 AVC encoded with x264 8-bit.
  video_encoder="libx264"

  # 4.4) Constant Rate Factor (--crf) must be used.
  # 4.4.1) CRF values below 18 and above 23 are never allowed.
  # http://slhck.info/video/2017/02/24/crf-guide.html
  # (lossless) 0 <- (better) 23 <- (worst) 51
  # ┌─────────────────┬───────┬───────────────────────────────────────────┐
  # │ Compressibility      │  CRF    │ General Examples                                      │
  # ├─────────────────┼───────┼───────────────────────────────────────────┤
  # │ High                 │ 18-19   │ Scripted, Talk Shows, Animation, Stand-Up             │
  # │ Medium               │ 20-21   │ Documentary, Reality, Variety, Poker                  │
  # │ Low                  │ 22-23   │ Sports, Awards, Live Events                           │
  # └─────────────────┴───────┴───────────────────────────────────────────┘
  crf="19"

  # 4.6) Settings cannot go below what is specified by preset (--preset) 'slow'.
  preset="slow"

  # 4.7) Level (--level) must be '4.1'.
  level="4.1"

  # 6.4) Only sharp resizers, such as Spline36Resize, BlackmanResize or LanczosResize/Lanczos4Resize,
  # must be used.
  # 6.4.1) Simple resizers, such as Bicubic, PointResize or Simple, are not allowed. 
  resizer="lanczos"

  # 4.17) Optional tuning (--tune) parameters allowed are: 'film', 'grain' or 'animation'. 
  # /superuser/564402/explanation-of-x264-tune
  # film – intended for high-bitrate/high-quality movie content. Lower deblocking is used here.
  tune="film"

  # 8.1) Audio must be in the original format provided.
  # 8.1.1) Transcoding audio is not allowed.
  # 8.2) Multiple language audio tracks are allowed.
  # Since we cannot ensure that the external content is in an acceptable TV format, we'll recode
  # it into aac. We're just playing safe here.
  # 
  # FFmpeg supports two AAC-LC encoders (aac and libfdk_aac) and one HE-AAC (v1/2) encoder
  # (libfdk_aac). The license of libfdk_aac is not compatible with GPL, so the GPL does not permit
  # distribution of binaries containing incompatible code when GPL-licensed code is also included.
  # libfdk_aac is "non-free", and requires ffmpeg to be compiled manually.
  # Second best encoder is the native FFmpeg AAC encoder. (aac)
  audio_encoder="aac"

  # Audio quality (bit rate).
  # Use either VBR or CBR. VBR is the easiest.
  # https://trac.ffmpeg.org/wiki/Encode/AAC#fdk_vbr
  # VBR: Target a quality, rather than a specific bit rate. 1 is lowest quality and 5 is highest
  # quality.
  # https://trac.ffmpeg.org/wiki/Encode/AAC#fdk_cbr
  # http://wiki.hydrogenaud.io/index.php?title=Fraunhofer_FDK_AAC#Bitrate_Modes
  # CBR: kbps
  vbr="5"
  cbr=None

  # 8.2) Multiple language audio tracks are allowed.
  # 8.2.1) The default audio track must be the language intended for release (e.g. An English release
  # containing English, German and Russian audio tracks, must have the default flag set on the English
  # track).
  # https://trac.ffmpeg.org/wiki/Map
  # Include "all" inputs to the output: -map 0
  map="0"

Consulte ffmpeg-tv.py para ver el código fuente completo.

zurfyx
fuente