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

16

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, o bitrate é mais alto, então não parece ser tão efetivo).

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

Pergunto-me apenas quais configurações e quais softwares eles usam. Eu tentei obter informações desses arquivos usando o MediaInfo, em seguida, use as configurações no HandBrake, mas eu realmente não tive sucesso.

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

    
por thankyouinadv 13.04.2013 / 00:28

3 respostas

26

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 liberação que garantirão que seus vídeos estejam de acordo com o guia, sendo que o LOL é um desses grupos.

Você pode encontrar uma lista de guias de cena scenerules.org . O padrão que você está procurando é, se não me engano, o padrão de liberação de TV SD x264 , supondo que seu vídeo tenha 1280 × 780. Se você tiver um vídeo em HD, provavelmente não obterá uma qualidade realmente boa a 200 MB por 45 minutos. Isso seria traduzido em 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 é baseado). O único culpado é que o uso de áudio FFmpeg e FAAC é proibido para o guia de cena, mas a menos que você esteja realmente contribuindo, isso não importará.

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

Basicamente, as regras dizem que você precisa usar o codificador x264 com um Fator de taxa constante configuração de qualidade. O que ele faz é bem diferente de definir uma taxa de bits constante: você pode configurar o CRF para que o 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 que é fácil de compactar. Você não saberá o tamanho do arquivo final com antecedência ao fazer isso, mas esse é o objetivo de fazer a codificação CRF: você não se importa com o tamanho real do arquivo - você quer apenas uma boa qualidade.

Depois que você configurar ffmpeg e tiver seu vídeo de entrada pronto, a codificação será realmente muito simples. Note, entretanto, que o seu vídeo de origem deve ser de alta qualidade, caso contrário, a recodificação só deteriorará muito mais sua qualidade.

Aqui estão os principais parâmetros:

    Vídeo de
  • x264 com:
    • CRF 19-20
    • slow profile (melhor eficiência de compactação em detrimento do tempo de codificação)
    • Nível H.264 3.1, que define algumas restrições
    • O downscaling deve ser feito com qualquer outro resizer além do bicubic (que é o FFmpeg-default). Lanczos pode ser usado , por exemplo.
    • Uma tune configuração para a origem (por exemplo, film para filme conteúdo)
  • á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 ao 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 escolhas de AAC e também consulte o Guia de codificação FFmpeg e AAC para obter mais informações.

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

    
por 13.04.2013 / 12:09
2

Não é possível falar com o grupo de lançamento que você mencionou desde que você não postou o mediainfo. Mas aqui está um guia para criar codificações compactas, o que significa obter um bom equilíbrio entre qualidade e 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 precisos). Na seção Destination , selecione libmkv . Na aba Vídeo , desmarque usar opções avançadas (você ainda pode adicionar essas opções caso a caso em mais configurações ), selecione --rc=crf ratecontrol , o maior --preset que seu computador pode suportar ( slower ou veryslow ), um --tune que corresponde à origem ( film ou animation deve cobri-lo) e defina o perfil e o nível como auto /%código%. Em seguida, brinque com a resolução (somente se a fonte for HD; em configurações de imagem , defina anamórfico para soltar e varie um dos eixos, da próxima resolução alta e para baixo) e auto até você encontre 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 Audio , vá com Vorbis a 160kbps (isso usará AoTuV --crf , obtendo transparência sem mais ajustes). Nas outras abas , verifique se tudo o que você precisa é preservado (marcas de capítulos, faixas de legendas, metadados, etc.). Quando estiver satisfeito, você pode usar essas configurações para codificar o resto do episódio; a taxa de bits média deve acabar muito menor do que no segmento difícil. Quando tiver confiança nas suas configurações, você poderá usá-las para codificar temporadas inteiras.

Como as etapas acima melhoram o tamanho compacto: libmkv dá acesso a mais codecs, perfil e versão para automático significa que não haverá restrições de reprodução para segurar o codificador. Um segmento curto (alguns segundos) oferece muito mais tempo para ajustar as coisas e observar os resultados. O ajuste otimiza a qualidade (percebida) psicovisual de como a fonte deve ser. Predefinições mais altas melhoram a compactação em detrimento do tempo de codificação (isso pode não ser perceptível em seu segmento difícil, mas melhorará a taxa de bits na maioria das outras cenas). CRF ratecontrol significa que seu codificador irá variar a taxa de bits para atingir uma determinada qualidade, com episódios mais exigentes ganhando mais espaço.

Um filtro de denoising também pode ser muito útil se você estiver mantendo a resolução original. Você vai querer manter a luz, porque o objetivo não é limpar um defeito de fonte perceptível, mas melhorar a compressibilidade sem degradar a qualidade visivelmente. Aqui está um guia para usar o HandBrake Denoiser HQDN3D , que está entre os denoisers de última geração de x264 e de qualidade .

    
por 27.08.2013 / 13:14
1

FFmpeg TV

Com base na resposta slhck , criei esta solução Python simples para chamar os parâmetros ffmpeg corretos. Com base nos últimos cenários dos padrões de TV 2016 .

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 forma 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'. 
  # https://superuser.com/questions/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 obter o código-fonte completo.

    
por 17.03.2018 / 21:27