Como posso obter MP4s de alta qualidade / tamanho baixo, como o grupo de lançamentos LOL?


20

O grupo de lançamento LOL faz um excelente trabalho ao codificar seus lançamentos em The Vampire Diaries (em outros programas como How I Met Your Mother, a taxa de bits é maior, por isso não parece tão eficaz).

Cerca de 200 MB cada arquivo MP4 ~ 45mins, considerando uma qualidade incrível.

Eu apenas me pergunto quais configurações e qual software eles usam. Tentei obter informações desses arquivos usando o MediaInfo e, em seguida, use as configurações do HandBrake, mas não obtive sucesso.

Alguém poderia me ajudar? Não tenho muito conhecimento sobre codificação / compactação.

Respostas:


28

As diretrizes para codificação de vídeo (pirateado) são chamadas de "guias de cena". Eles são assinados por vários grupos de lançamentos que garantirão que seus vídeos estejam em conformidade com o guia, sendo o LOL um desses grupos.

Você pode encontrar uma lista de guias de cenas scenerules.org . O padrão que você está procurando é - se não me engano - o Padrão de Liberação de TV SD x264 , assumindo que seu vídeo seja 1280 × 780. Se você possui vídeo HD, provavelmente não terá uma qualidade muito boa a 200 MB por 45 minutos. Isso seria traduzido para aproximadamente 600 kBit / se seria suficiente para 720p.

Quanto às ferramentas de codificação, você pode ir muito longe com o FFmpeg (no qual o Handbrake se baseia). O único culpado é que o uso de áudio FFmpeg e FAAC é proibido para esse guia de cena, mas, a menos que você esteja realmente contribuindo, isso não importa.

Se você não tem experiência anterior com codificação de vídeo e todas essas palavras-chave não significam nada para você, consulte os seguintes artigos do blog / Perguntas sobre superusuário:

Basicamente, as regras dizem que você deve usar o codificador x264 com uma configuração de qualidade de fator de taxa constante . O que ele faz é bem diferente de definir uma taxa de bits constante: você pode configurar o CRF para que x264 codifique o vídeo com uma qualidade constante.

Os níveis típicos de CRF estão entre 18 e 28, e o grupo de liberação recomenda 19–20 para codificação de alta qualidade de material fácil de compactar. Você não saberá o tamanho final do arquivo com antecedência ao fazer isso, mas esse é o ponto principal da codificação CRF: você não se importa com o tamanho real do arquivo - apenas deseja boa qualidade.

Depois de configurar ffmpege ter sua entrada de vídeo pronta, a codificação é realmente bastante simples. Observe, no entanto, que o vídeo de origem deve ser de alta qualidade; caso contrário, a recodificação somente deteriorará sua qualidade muito mais.

Aqui estão os principais parâmetros:

  • vídeo x264 com:
    • CRF 19-20
    • slow perfil (melhor eficiência de compactação à custa do tempo de codificação)
    • H.264 nível 3.1, que define algumas restrições
    • O downscaling deve ser feito com qualquer redimensionador que não seja bicúbico (que é o padrão FFmpeg). Lanczos pode ser usado , por exemplo.
    • Uma tuneconfiguração para a fonte (por exemplo, filmpara conteúdo parecido com filme)
  • Áudio AAC com:
    • Codificação de taxa de bits variável
    • Taxa de bits entre 96 e 160 kBit / s

Em ffmpeg, isso se traduz no seguinte:

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

No FFmpeg, suas escolhas para codificação AAC são um pouco limitadas. Veja aqui suas opções de AAC e também consulte o Guia de codificação de FFmpeg e AAC para obter mais informações.

Se o seu vídeo acabar ser muito grande, você poderá ajustar o CRF. Os valores ± 6 resultam em metade / o dobro da taxa de bits; portanto, se você começar com 19 e passar para 25, terá metade da taxa de bits. As regras da cena não permitem CRF acima de 24, mas você provavelmente não se importará.


2

Não consigo falar com o grupo de lançamento que você mencionou, pois não publicou as informações de mídia. Mas aqui está um guia para criar códigos compactos, o que significa obter um bom equilíbrio qualidade / tamanho.

Você deve começar com o HandBrake e a melhor fonte disponível. Na seção Origem , selecione um segmento curto, mas difícil de codificar (com ação e detalhes). Na seção Destino , selecione libmkv . Na guia Vídeo , desmarque usar opções avançadas (você ainda pode adicionar essas opções caso a caso em mais configurações ), selecione --rc=crfcontrole de rato, o mais alto que --presetseu computador possa suportar ( slowerou veryslow), um --tuneque corresponda à fonte ( filmou animationdeve cobrir) e defina o perfil e o nível para auto/ auto. Em seguida, brinque com a resolução (somente se a fonte for HD; nas configurações de imagem, defina anamórfico para perder e variar um dos eixos, da próxima resolução alta e baixa) e --crfaté encontrar um bom compromisso entre qualidade e taxa de bits para o seu segmento curto. Observe que o crf está vinculado ao restante das configurações de codificação, e é por isso que deve ser a última configuração de vídeo que você altera. Em Áudio , vá com o Vorbis a 160kbps (isso usará o AoTuV -q5, obtendo transparência sem mais ajustes). Nas outras guias, verifique se tudo o que você precisa está preservado (marcas de capítulos, faixas de legendas, metadados etc.). Quando estiver satisfeito, você pode usar essas configurações para codificar o restante do episódio; a taxa de bits média deve terminar muito menor do que no segmento difícil. Quando você estiver confiante em suas configurações, poderá usá-las para codificar temporadas inteiras.

Como as etapas acima melhoram a compactação: libmkv dá acesso a mais codecs, perfil e versão para auto significa que não haverá restrições de reprodução para impedir o codificador. Um segmento curto (alguns segundos) oferece muito mais tempo para você ajustar as coisas e observar os resultados. O Tune otimiza a qualidade psicovisual (percebida) da aparência da fonte. Predefinições mais altas melhoram a compactação à custa do tempo de codificação (isso pode não ser perceptível no seu segmento difícil, mas melhorará a taxa de bits na maioria das outras cenas). O controle de ratos CRF significa que sua codificação variará a taxa de bits para atingir uma determinada qualidade, com episódios mais exigentes ganhando mais espaço.

Um filtro denoising também pode ser muito útil se você estiver mantendo a resolução original. Você deseja mantê-lo leve, porque o objetivo não é limpar um defeito de origem perceptível, mas melhorar a compressibilidade sem qualidade visivelmente degradante. Aqui está um guia para usar o denoiser HQDN3D da HandBrake , que está entre x264 --nre denoisers de última geração para obter qualidade.


2

FFmpeg TV

Com base na resposta slhck , construí esta solução Python simples para chamar os ffmpegparâmetros corretos . Com base nos mais recentes cenários de 2016 padrões de TV .

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

Descrito, você pode encontrar todos os parâmetros e uma breve descrição sobre por que eles foram definidos dessa maneira por padrão.

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

Veja ffmpeg-tv.py para o código fonte completo.

Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.