Formato de vídeo universal sem perdas

11

Estou tentando encontrar o formato de vídeo sem perdas mais adequado para vídeo de 1280 x 720 de 25 qps. O vídeo tem 4 minutos. O som será de 320 kbps mp3, isso não é grande coisa. Condições ideais:

  • Sem perdas (pode ser perceptivalmente sem perdas)
  • Container + codec pode ser reproduzido na maioria das plataformas
  • Container + codec pode ser reproduzido em players de DVD modernos (suportando outros formatos além do DVD)
  • O tamanho é inferior a 700 MB

Isso é possível? Já se esforçou três dias, sem resultados satisfatórios, mesmo recebendo 12 GB de arquivos (parece muito - 3 GB / minuto).

    
por mrkva 11.10.2012 / 13:09

3 respostas

19

O melhor formato matematicamente sem perdas que eu conheço é o huffyuv, mas isso produzirá arquivos hilariantemente grandes e não seria compatível com muito. Para o registro, o ffmpeg pode fazer isso com:

ffmpeg -i input -c:v huffyuv -c:a libmp3lame -b:a 320k output.avi

O X264, o codificador h.264 de código aberto, possui um modo sem perdas. Isso pode ir dentro de um contêiner MP4 e deve ser compatível com a maioria dos hardwares feitos nos últimos anos. O primeiro comando dará uma velocidade de codificação rápida, mas um arquivo grande; o segundo comando demorará muito mais tempo, mas o arquivo deve ter metade do tamanho do codificado (mas ainda assim será bem grande):

ffmpeg -i input -c:v libx264 -crf 0 -preset ultrafast -c:a libmp3lame -b:a 320k output.mp4

ffmpeg -i input -c:v libx264 -crf 0 -preset veryslow -c:a libmp3lame -b:a 320k output.mp4

Se isso não lhe der um arquivo pequeno o suficiente, um crf de 18 é geralmente considerado 'visualmente sem perdas':

ffmpeg -i input -c:v libx264 -crf 18 -preset veryfast -c:a libmp3lame -b:a 320k output.mp4

Eu geralmente recomendo o preset rápido para codificação com x264, na minha experiência ele oferece o melhor tradeoff de velocidade / tamanho (há um grande dropoff no tamanho do arquivo entre super rápido e muito rápido, mais lento que isso e é mais incremental). Aconselhamento geral é usar a predefinição mais lenta que você pode manipular, as predefinições são: ultra rápida, super rápida, muito rápida, rápida, média, lenta, mais lenta, muito lenta.

Veja aqui para um guia mais aprofundado sobre a codificação x264.

    
por 22.12.2012 / 03:50
0

Hoje em dia eu gosto de webm :

ffmpeg -i input.avi -c:v libvpx-vp9 -lossless 1 output.webm

Para converter mais rápido, com processadores multi-core, eu li que é recomendado usar um thread a menos do que você tem de núcleos reais. Então, com um core de 8 você poderia especificar 7 threads assim:

ffmpeg -i input.avi -c:v libvpx-vp9 -threads 7 -lossless 1 output.webm
    
por 12.01.2018 / 23:16
0
# CONTAINER

para ter total compatibilidade com os leitores de DVD, você precisará usar o formato MPEG-2, container, restrições, codecs. Eu acho que, "jogadores modernos" significa compatibilidade "mp4", que é basicamente e principalmente um reprodutor de arquivos mp4 - H.264, MPEG-4, AVC = > libx264
leia mais: link

# VÍDEO

Dê uma olhada no link , especialmente na parte em que é sobre "perfil" e "nível ", para compatibilidade
Usando -profile:v high -level 4.0 deve fazer isso

# AUDIO

Evite recodificar faixas de áudio com codecs com perdas - qualquer formato de mp3 é com perda, mesmo 320kbps.
Use -c:a copy em vez disso.

Até agora, fez um bom trabalho para mim. sem problemas de sincronização. Os fluxos de áudio não estão vinculados a quadros-chave. Cortes precisos são possíveis.
Se a sua faixa de áudio for gravada a uma taxa de amostragem de 44kHz, use no máx. 256 kbps

Use codecs com perdas somente para a codificação final de seu vídeo, se você precisar ajustar certos pré-requisitos.

Já ouvi falar de alguns problemas de sincronização de áudio, mas parece que a questão principal era que era material protegido (!).

# Finalmente

Eu prefiro algo assim: ffmpeg -i input -c:v libx264 -crf 5 -preset faster -profile:v high -level 4.0 -c:a copy output.mp4

    
por 26.03.2018 / 20:55