Come posso ottenere MP4 di alta qualità / bassa dimensione come il gruppo di rilascio LOL?


20

Il gruppo di rilascio LOL fa un ottimo lavoro nel codificare le loro uscite in The Vampire Diaries (in altri spettacoli come How I Met Your Mother il bitrate è più alto, quindi non sembra così efficace).

Circa 200 MB ciascuno ~ 45 minuti di file MP4, considerando la straordinaria qualità.

Mi chiedo solo quali impostazioni e quale software utilizzano. Ho provato a ottenere informazioni da questi file usando MediaInfo, quindi ho usato le impostazioni in HandBrake, ma non ci sono riuscito.

Qualcuno potrebbe aiutarmi, per favore? Non ho molta conoscenza della codifica / compressione.

Risposte:


28

Le linee guida per la codifica dei video (piratati) sono chiamate "guide di scena". Sono firmati da vari gruppi di rilascio che si assicureranno che i loro video siano conformi alla guida, LOL è uno di questi gruppi.

Puoi trovare un elenco di guide di scena scenerules.org . Lo standard che stai cercando è - se non sbaglio - lo standard di rilascio TV SD x264 , supponendo che il tuo video sia 1280 × 780. Se hai video HD, probabilmente non otterrai una qualità davvero buona a 200 MB per 45 minuti. Ciò si tradurrebbe in circa 600 kBit / se sarebbe comunque sufficiente per 720p.

Per quanto riguarda gli strumenti di codifica, puoi andare abbastanza lontano con FFmpeg (su cui si basa Handbrake). L'unico colpevole è che l'uso di FFmpeg e l'audio FAAC è vietato per quella guida alla scena, ma a meno che tu non stia effettivamente contribuendo, non importa.

Se non hai alcuna esperienza precedente con la codifica video e tutte queste parole chiave non significano nulla per te, dai un'occhiata ai seguenti articoli del blog / Domande dei Super User:

Fondamentalmente, le regole dicono che devi usare l'encoder x264 con un'impostazione di qualità del Fattore di frequenza costante . Quello che fa è piuttosto diverso dall'impostare un bitrate costante: puoi impostare il CRF in modo che x264 codifichi il video con una qualità costante.

I livelli tipici di CRF sono compresi tra 18 e 28 e il gruppo di rilascio consiglia 19-20 per una codifica di alta qualità di materiale facile da comprimere. Quando lo fai, non conoscerai in anticipo la dimensione finale del file, ma è questo il punto fondamentale della codifica CRF: non ti importa della dimensione effettiva del file, vuoi solo una buona qualità.

Una volta configurato ffmpege pronto per l'input video, la codifica è in realtà abbastanza semplice. Nota, tuttavia, che il tuo video sorgente deve essere di alta qualità, altrimenti la ricodifica peggiorerà la sua qualità molto di più.

Ecco i parametri chiave:

  • video x264 con:
    • CRF 19–20
    • slow profilo (migliore efficienza di compressione a spese del tempo di codifica)
    • H.264 livello 3.1, che stabilisce alcuni vincoli
    • Il downscaling deve essere eseguito con qualsiasi ridimensionatore diverso da bicubic (che è l'impostazione predefinita di FFmpeg). Lanczos può essere usato , per esempio.
    • tuneUn'impostazione per la sorgente (ad esempio filmper il contenuto filmogena)
  • Audio AAC con:
    • Codifica a velocità di bit variabile
    • Velocità in bit compresa tra 96 ​​e 160 kBit / s

In ffmpeg, questo si traduce in quanto segue:

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

In FFmpeg, le tue scelte per la codifica AAC sono un po 'limitate. Vedi qui per le tue scelte AAC e fai riferimento anche alla Guida alla codifica FFmpeg e AAC per ulteriori informazioni.

Se il tuo video risulta troppo grande, puoi regolare il CRF. I valori ± 6 comporteranno la metà / il doppio della velocità in bit, quindi se inizi con 19 e vai a 25, finiresti con metà della velocità in bit. Le regole della scena non consentono CRF sopra i 24, ma probabilmente non ti dispiacerà.


2

Non posso parlare con il gruppo di rilascio che hai citato dal momento che non hai pubblicato il mediainfo. Ma ecco una guida per creare codici compatti, il che significa ottenere un buon rapporto qualità / dimensioni.

Dovresti iniziare con HandBrake e la migliore fonte disponibile. Nella sezione Sorgente , seleziona un segmento breve ma difficile da codificare (con azione e dettagli precisi). Nella sezione Destinazione , selezionare libmkv . Nella scheda Video , deseleziona Usa opzioni avanzate (puoi ancora aggiungere tali opzioni caso per caso in più impostazioni ), seleziona --rc=crfratecontrol, il massimo che il --presettuo computer può sopportare ( slowero veryslow), un --tuneche corrisponde alla fonte ( filmo animationdovrebbe coprirlo), e imposta il profilo e il livello su auto/ auto. Quindi gioca con la risoluzione (solo se la sorgente è HD; nelle impostazioni dell'immagine, imposta l'anamorfico su sciolto e varia uno degli assi, dalla risoluzione successiva in alto e in basso) e --crffinché non trovi un buon compromesso tra qualità e bitrate per il tuo segmento corto. Nota che crf è legato al resto delle impostazioni di codifica, motivo per cui dovrebbe essere l'ultima impostazione video che modifichi. In Audio , vai con Vorbis a 160kbps (questo utilizzerà AoTuV -q5, ottenendo trasparenza senza ulteriore sintonizzazione). Nelle altre schede, controlla che tutto ciò di cui potresti aver bisogno sia conservato (segni di capitolo, tracce di sottotitoli, metadati, ecc.). Quando sei soddisfatto, puoi usare queste impostazioni per codificare il resto dell'episodio; il bitrate medio dovrebbe finire molto più in basso rispetto al segmento difficile. Quando sei sicuro delle tue impostazioni, puoi usarle per codificare intere stagioni.

In che modo i passaggi precedenti migliorano la compattezza: libmkv ti dà accesso a più codec, profilo e versione su auto significa che non ci saranno vincoli di riproduzione per trattenere l'encoder. Un breve segmento (pochi secondi) ti dà molto più tempo per modificare le cose e guardare i risultati. Tune ottimizza la qualità psico-fisica (percepita) per come dovrebbe apparire la fonte. Preimpostazioni più elevate migliorano la compattezza a spese del tempo di codifica (ciò potrebbe non essere evidente sul segmento difficile, ma migliorerà il bitrate nella maggior parte delle altre scene). CRF ratecontrol significa che la tua codifica varierà il bitrate per raggiungere una data qualità, con episodi più impegnativi che ottengono più spazio.

Un filtro denoising può anche essere molto utile se stai mantenendo la risoluzione originale. Ti consigliamo di mantenerlo leggero perché l'obiettivo non è quello di ripulire un difetto di sorgente percettibile, ma di migliorare la compressibilità senza compromettere notevolmente la qualità. Ecco una guida all'utilizzo del denoiser HQDN3D di HandBrake , che si trova tra x264 --nre denoiser all'avanguardia per qualità.


2

FFmpeg TV

Basandomi sulla risposta slhck ho creato questa semplice soluzione Python per chiamare i ffmpegparametri giusti . Basato sugli ultimi standard TV degli scenerules 2016 .

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

Descritto è possibile trovare tutti i parametri e una breve descrizione del perché sono stati impostati in questo modo per impostazione predefinita.

  # 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"

Vedi ffmpeg-tv.py per il codice sorgente completo.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.