AskOverflow.Dev

AskOverflow.Dev Logo AskOverflow.Dev Logo

AskOverflow.Dev Navigation

  • Início
  • system&network
  • Ubuntu
  • Unix
  • DBA
  • Computer
  • Coding
  • LangChain

Mobile menu

Close
  • Início
  • system&network
    • Recentes
    • Highest score
    • tags
  • Ubuntu
    • Recentes
    • Highest score
    • tags
  • Unix
    • Recentes
    • tags
  • DBA
    • Recentes
    • tags
  • Computer
    • Recentes
    • tags
  • Coding
    • Recentes
    • tags
Início / computer / Perguntas / 1556953
Accepted
Faisal
Faisal
Asked: 2020-06-02 06:21:35 +0800 CST2020-06-02 06:21:35 +0800 CST 2020-06-02 06:21:35 +0800 CST

Por que a predefinição "muito rápida" no FFmpeg gera o arquivo mais compactado em comparação com todas as outras predefinições?

  • 772

O wiki do FFmpeg diz que a melhor taxa de compactação é a predefinida "muito lenta".

Mas quando estou tentando com meu vídeo, a predefinição veryfastfornece a melhor compactação no meu caso.

A seguir está a saída das minhas amostras:

predefinidoultrafast

ffmpeg -y -threads 1 -i "D:\Video\PresentTest\Safari_Dolby_Digital_Plus.m2ts.mp4" -c:v libx264 -preset ultrafast -c:a aac  -max_muxing_queue_size 1024 "D:\Video\PresentTest\Safari_Dolby_Digital_Plus-ultrafast.mp4"

frame= 2822
fps= 65
q=-1.0
Lsize=
239118kB
time=00:01:34.18
bitrate=20797.6kbits/s
speed=2.16x

predefinidosuperfast

ffmpeg -y -threads 1 -i "D:\Video\PresentTest\Safari_Dolby_Digital_Plus.m2ts.mp4" -c:v libx264 -preset superfast -c:a aac  -max_muxing_queue_size 1024 "D:\Video\PresentTest\Safari_Dolby_Digital_Plus-superfast.mp4"

frame= 2822
fps= 63
q=-1.0
Lsize=  150252kB
time=00:01:34.18
bitrate=13068.3kbits/s
speed=2.09x

predefinidoveryfast

ffmpeg -y -threads 1 -i "D:\Video\PresentTest\Safari_Dolby_Digital_Plus.m2ts.mp4" -c:v libx264 -preset veryfast -c:a aac  -max_muxing_queue_size 1024 "D:\Video\PresentTest\Safari_Dolby_Digital_Plus-veryfast.mp4"

frame= 2822
fps= 62
q=-1.0
Lsize=
115997kB
time=00:01:34.18
bitrate=10089.0kbits/s
speed=2.08x

predefinidofast

ffmpeg -y -threads 1 -i "D:\Video\PresentTest\Safari_Dolby_Digital_Plus.m2ts.mp4" -c:v libx264 -preset fast -c:a aac  -max_muxing_queue_size 1024 "D:\Video\PresentTest\Safari_Dolby_Digital_Plus-fast.mp4"

frame= 2822
fps= 52
q=-1.0
Lsize=
133773kB
time=00:01:34.18
bitrate=11635.1kbits/s
speed=1.72x

predefinidomedium

ffmpeg -y -threads 1 -i "D:\Video\PresentTest\Safari_Dolby_Digital_Plus.m2ts.mp4" -c:v libx264 -preset medium -c:a aac  -max_muxing_queue_size 1024 "D:\Video\PresentTest\Safari_Dolby_Digital_Plus-medium.mp4"

frame= 2822
fps= 43
q=-1.0
Lsize=
124154kB
time=00:01:34.18
bitrate=10798.4kbits/s
speed=1.42x

predefinidoslow

ffmpeg -y -threads 1 -i "D:\Video\PresentTest\Safari_Dolby_Digital_Plus.m2ts.mp4" -c:v libx264 -preset slow -c:a aac  -max_muxing_queue_size 1024 "D:\Video\PresentTest\Safari_Dolby_Digital_Plus-slow.mp4"

frame= 2822
fps= 27
q=-1.0
Lsize=  125262kB
time=00:01:34.18
bitrate=10894.8kbits/s
speed=0.886x

predefinidoslower

ffmpeg -y -threads 1 -i "D:\Video\PresentTest\Safari_Dolby_Digital_Plus.m2ts.mp4" -c:v libx264 -preset slower -c:a aac  -max_muxing_queue_size 1024 "D:\Video\PresentTest\Safari_Dolby_Digital_Plus-slower.mp4"

frame= 2822
fps= 14
q=-1.0
Lsize=  125061kB
time=00:01:34.18
bitrate=10877.3kbits/s
speed=0.465x

predefinidoveryslow

ffmpeg -y -threads 1 -i "D:\Video\PresentTest\Safari_Dolby_Digital_Plus.m2ts.mp4" -c:v libx264 -preset veryslow -c:a aac  -max_muxing_queue_size 1024 "D:\Video\PresentTest\Safari_Dolby_Digital_Plus-veryslow.mp4"

frame= 2822
fps=6.6
q=-1.0
Lsize=  118149kB
time=00:01:34.18
bitrate=10276.2kbits/s
speed=0.221x

Por que a predefinição veryfastgera o arquivo mais compactado em comparação com outras predefinições?

E a perda de vídeo é algo com preset veryfast?

video ffmpeg
  • 2 2 respostas
  • 41820 Views

2 respostas

  • Voted
  1. Best Answer
    Peter Cordes
    2020-06-02T16:49:58+08:002020-06-02T16:49:58+08:00

    A compactação com perdas é uma compensação entre taxa de bits (tamanho do arquivo) e qualidade, não apenas para obter os arquivos menores. Se isso é tudo o que você queria, use-preset veryslow -crf 51(e opcionalmente reduza para 256x144) para obter um arquivo muito pequeno que é basicamente apenas bolhas desfocadas sem detalhes.

    A codificação é uma compensação de 3 vias de tempo de CPU em relação à qualidade em relação à taxa de bits, muito diferente da compactação sem perdas, como ziponde o tamanho do arquivo é como você mede a "melhor" compactação e é o que você troca em relação ao tempo em uma compensação de 2 vias. 1 ou 3 vias se a velocidade de compressão e descompressão forem independentes...

    -preset veryslowoferece a melhor compensação que o x264 pode oferecer 2 , gastando mais tempo de CPU procurando maneiras de representar mais detalhes por bit. (ou seja, melhor compensação de taxa por distorção ).

    Isso é principalmente ortogonal ao controle de taxa, que decide quantos bits totais serão gastos. x264' o controle de taxa padrão é CRF 23 ( ffmpeg -crf 23); se quiser arquivos menores, use -preset veryslow -crf 26ou algo assim para gastar menos bits para a mesma complexidade, resultando em mais desfoque. É logarítmico, portanto, aumentar o CRF em alguns números pode alterar a taxa de bits por um fator de 2. Para uma qualidade quase transparente, -crf 18ou 20geralmente é bom, mas custa mais taxa de bits.


    O modo CRF não é verdadeiro de qualidade constante (SSIM, PSNR ou qualquer outra métrica). Com predefinições de codificação mais rápidas, o x264 usa um processo de tomada de decisão mais simples para decidir como/onde gastar bits, resultando em alguma variação na taxa de bits para a mesma configuração de CRF.

    Com diferentes ferramentas de pesquisa para encontrar redundância, como explica @szatmary, uma predefinição mais alta pode encontrar uma maneira muito menor de codificar algo que parece apenas um pouco pior. Ou uma maneira de codificar alguns blocos que parece muito melhor , mas é apenas um pouco maior. Dependendo de como essas coisas acontecem em média, o mesmo CRF em diferentes predefinições de qualidade terá qualidade e taxa de bits diferentes.

    É por isso que você não obtém arquivos progressivamente menores com qualidade idêntica; -preset veryfastnormalmente parece pior. -preset ultrafastgeralmente é visivelmente ruim mesmo em alta taxa de bits, mas outras predefinições podem parecer tão boas quanto veryfastse você gastasse muito mais taxa de bits.

    Arquivo menor não significa "melhor compactação". Lembre-se que a qualidade também é variável . Se você costumava ffmpeg -i in.mp4 -ssim 1 -tune ssim -preset veryslow out.mkvobter libx264 para calcular a métrica de qualidade visual do SSIM, descobrirá que veryslow tem melhor qualidade por taxa de bits do que veryfast. (Se você estiver comparando a qualidade, faça-o em taxa de bits fixa, ou seja, 2 passagens, não CRF. Consulte https://trac.ffmpeg.org/wiki/Encode/H.264 )

    Lembre-se de que as otimizações psicovisuais que fazem as imagens parecerem melhores para os humanos (como -psy-rd=1.0:0.15) podem pontuar pior em algumas métricas de qualidade; portanto, para uso real, você não deseja -tune ssim. Psy-rd significa levar em consideração a percepção humana ao otimizar a relação entre taxa e distorção. AQ (quantização adaptativa) é outra otimização psy, mas que o SSIM é sofisticado o suficiente para reconhecer como benéfica, ao contrário da métrica de qualidade PSNR mais simples.

    Os humanos tendem a perceber o ruído de alta frequência (espacial) como detalhe se for de pequena escala, mesmo que não seja o mesmo detalhe da imagem de origem. E nossos olhos gostam de detalhes em vez de borrar. por exemplo, artefatos de franja e toque de quantização = arredondar os coeficientes DCT pode realmente parecer melhor do que apenas borrar tudo, se forem menores. Coisas que parecem piores quando você pausa e aumenta o zoom podem enganar seus olhos agradavelmente quando você apenas assiste normalmente. (o h.264 possui um filtro de desbloqueio em loop, aplicado antes dos quadros serem exibidos e usados ​​como referências, portanto, evita mais facilmente o bloqueio do que os codecs anteriores, como DivX / h.263. Aumentar isso pode apenas desfocar tudo em baixa taxa de bits).

    A ideia aqui é semelhante ao que o MP3 e outros codecs de áudio avançados fazem para o som, exceto que há mais espaço para otimização psicoacústica porque sons altos realmente impedem que os ouvidos ouçam coisas silenciosas em frequências próximas.


    Se você estiver codificando uma vez para manter o resultado por muito tempo e/ou distribuí-lo pela Internet, use -preset veryslow. Ou pelo menos -preset medium . Você paga o custo da CPU uma vez e colhe a economia no tamanho do arquivo (para uma determinada qualidade) repetidamente.

    Mas se você for assistir a uma codificação apenas uma vez, por exemplo, para colocar um vídeo em um dispositivo móvel onde você o assistirá uma vez e depois o excluirá, -preset faster -crf 20faz sentido se você tiver espaço de armazenamento. Basta gastar bits extras.


    Nota de rodapé 1 : Na compactação sem perdas, você troca o tamanho do arquivo pela velocidade de compactação e/ou descompactação (que pode ser diferente; alguns codecs são muito rápidos para descompactar, mesmo que permitam uma boa compactação lenta). Na verdade, o uso de RAM / pegada de cache também pode ser uma variável se você quiser entrar nesse nível de detalhe. Na compactação sem perdas, a qualidade é fixada em "perfeita", como x264-qp 0

    O desempenho de decodificação h.264 pode variar um pouco com o número de quadros de referência, mais tendo uma pegada de memória maior e, portanto, talvez mais faltas de cache para um decodificador de CPU. Mas muitas vezes o h.264 é decodificado pelo hardware. Assim como em muitos esquemas de compactação sem perdas, grandes mudanças no desempenho de decodificação só ocorrem com codecs totalmente diferentes (como h.265), não com opções diferentes para o mesmo codec. O tempo extra de codificação é gasto procurando maneiras diferentes de codificar os mesmos bits, mas há apenas uma maneira de decodificar.

    E sim, h.264 tem um modo sem perdas, como parte do perfil Hi444PP . Não, você não deseja usá-lo pela Internet; muitos decodificadores além do FFmpeg não têm suporte para esse recurso especial e a taxa de bits é enorme, como 100 a 200 Mbit/s para 1080p30 YUV 4:2:0 ou RGB 4:4:4. Como criar um AVI descompactado a partir de uma série de 1000 imagens PNG usando FFMPEG tem alguns resultados de teste do trailer Sintel.

    Nota de rodapé 2: Outros codecs como h.265 (com o codificador x265) ou VP9 podem oferecer compensações de distorção de taxa ainda melhores, mas ao custo de muito mais tempo de CPU para codificar. Por um tempo de codificação fixo, não tenho certeza se há alguma vantagem em x265 sobre x264. Mas a compatibilidade do decodificador com h.265 é muito menos difundida do que h.264.

    A compatibilidade de decodificação é muito boa para o perfil principal h.264 e, com sorte, também para o perfil alto atualmente. (8x8 DCT é mais útil para altas resoluções como 1080p e especialmente 4k.) O padrão de x264 é alto perfil. Alguns dispositivos móveis obsoletos podem ter apenas decodificação de hardware para o perfil de linha de base h.264, mas isso é uma qualidade significativamente pior por taxa de bits (sem quadros B e sem CABAC, apenas o CAVLC menos eficiente para a etapa final de codificação sem perdas de estruturas em um fluxo de bits. )

    • 103
  2. szatmary
    2020-06-02T08:25:03+08:002020-06-02T08:25:03+08:00

    As predefinições não controlam a velocidade da codificação. Eles ativam ou desativam os recursos de compactação (geralmente chamados de "ferramentas"). Ao usar uma predefinição mais lenta, mais ferramentas são habilitadas. Mas como cada vídeo é diferente, é impossível obter o equilíbrio perfeito para cada vídeo todas as vezes.

    No caso do seu conteúdo específico, uma dessas ferramentas está consumindo mais CPU e mais bits, mas gerará vídeo de maior qualidade enquanto ainda se ajusta ao envelope da taxa de bits.

    • 14

relate perguntas

  • Como salvar o fluxo de vídeo TS com ffmpeg 2.0.2?

  • Extraia I-frames para imagens rapidamente

  • Os vídeos compactados podem ser decodificados de volta ao formato original não compactado?

Sidebar

Stats

  • Perguntas 205573
  • respostas 270741
  • best respostas 135370
  • utilizador 68524
  • Highest score
  • respostas
  • Marko Smith

    Como posso reduzir o consumo do processo `vmmem`?

    • 11 respostas
  • Marko Smith

    Baixar vídeo do Microsoft Stream

    • 4 respostas
  • Marko Smith

    O Google Chrome DevTools falhou ao analisar o SourceMap: chrome-extension

    • 6 respostas
  • Marko Smith

    O visualizador de fotos do Windows não pode ser executado porque não há memória suficiente?

    • 5 respostas
  • Marko Smith

    Como faço para ativar o WindowsXP agora que o suporte acabou?

    • 6 respostas
  • Marko Smith

    Área de trabalho remota congelando intermitentemente

    • 7 respostas
  • Marko Smith

    O que significa ter uma máscara de sub-rede /32?

    • 6 respostas
  • Marko Smith

    Ponteiro do mouse movendo-se nas teclas de seta pressionadas no Windows?

    • 1 respostas
  • Marko Smith

    O VirtualBox falha ao iniciar com VERR_NEM_VM_CREATE_FAILED

    • 8 respostas
  • Marko Smith

    Os aplicativos não aparecem nas configurações de privacidade da câmera e do microfone no MacBook

    • 5 respostas
  • Martin Hope
    CiaranWelsh Como posso reduzir o consumo do processo `vmmem`? 2020-06-10 02:06:58 +0800 CST
  • Martin Hope
    Jim Pesquisa do Windows 10 não está carregando, mostrando janela em branco 2020-02-06 03:28:26 +0800 CST
  • Martin Hope
    v15 Por que uma conexão de Internet gigabit/s via cabo (coaxial) não oferece velocidades simétricas como fibra? 2020-01-25 08:53:31 +0800 CST
  • Martin Hope
    fixer1234 O "HTTPS Everywhere" ainda é relevante? 2019-10-27 18:06:25 +0800 CST
  • Martin Hope
    andre_ss6 Área de trabalho remota congelando intermitentemente 2019-09-11 12:56:40 +0800 CST
  • Martin Hope
    Riley Carney Por que colocar um ponto após o URL remove as informações de login? 2019-08-06 10:59:24 +0800 CST
  • Martin Hope
    zdimension Ponteiro do mouse movendo-se nas teclas de seta pressionadas no Windows? 2019-08-04 06:39:57 +0800 CST
  • Martin Hope
    jonsca Todos os meus complementos do Firefox foram desativados repentinamente, como posso reativá-los? 2019-05-04 17:58:52 +0800 CST
  • Martin Hope
    MCK É possível criar um código QR usando texto? 2019-04-02 06:32:14 +0800 CST
  • Martin Hope
    SoniEx2 Altere o nome da ramificação padrão do git init 2019-04-01 06:16:56 +0800 CST

Hot tag

windows-10 linux windows microsoft-excel networking ubuntu worksheet-function bash command-line hard-drive

Explore

  • Início
  • Perguntas
    • Recentes
    • Highest score
  • tag
  • help

Footer

AskOverflow.Dev

About Us

  • About Us
  • Contact Us

Legal Stuff

  • Privacy Policy

Language

  • Pt
  • Server
  • Unix

© 2023 AskOverflow.DEV All Rights Reserve