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 / unix / Perguntas / 415430
Accepted
Nicola Sap
Nicola Sap
Asked: 2018-01-08 10:06:44 +0800 CST2018-01-08 10:06:44 +0800 CST 2018-01-08 10:06:44 +0800 CST

H.264/MPEG-4 de quadros PNG: como fazer e como ajustar a compressão

  • 772

Costumo criar animações digitais preparando todos os quadros em formato .png (com compressão mínima), que preciso converter para formato de vídeo para upload em sites como reddit, instagram, gfycat.

Conheço muito pouco sobre todos os diferentes padrões de compactação e esses sites não são muito claros quanto ao formato que aceitam, mas encontrei uma receita que geralmente funciona para mim e que cria arquivos que são aceitos por esses sites :

# step 1
mencoder mf://frame*.png -mf w=$WIDTH:h=$HEIGHT:fps=$FPS:type=png \
         -ovc lavc -lavcopts vcodec=msmpeg4v2:vbitrate=16000:keyint=15:mbd=2:trell \
         -oac copy -o step1.avi

# step 2
mencoder step1.avi -o step2.mp4 -of lavf -lavfopts format=mp4 -ovc x264 -sws 9  \
         -x264encopts nocabac:level_idc=30:bframes=0:bitrate=2048:threads=auto:turbo=1:global_header:threads=auto:subq=5:frameref=6:partitions=all:trellis=1:chroma_me:me=umh

No entanto, não tenho certeza do que ele faz *, portanto não sou capaz de:

  • torná-lo uma única instrução

  • ajuste a taxa de compressão.

Na verdade, muitas vezes prefiro um resultado menos compactado.

Que rota posso seguir para passar de quadros PNG para um arquivo de vídeo compatível com a Web (que acredito ser um H.264/MPEG-4 MP4 ) que me permite ajustar a compactação?


* por exemplo: este é um quadro de exemplo

insira a descrição da imagem aqui (nota: honestamente, parece-me que parece muito pior ao assistir no VLC do que ao tirar um instantâneo através da ferramenta VLC - isso torna muito difícil tornar a pergunta compreensível e os resultados comparáveis)

Mesmo que no passo 1 eu tenha especificado $WIDTHe $HEIGHTcorrespondido aos da imagem original, aparentemente alterou ambos e não preservou a proporção. Há também mais desfoque na imagem final, que pode ser apenas um efeito desse redimensionamento.


editar: veja a captura de tela real do sistema da janela do mplayer abaixo (seria o mesmo com o VLC). As argamassas dos ladrilhos estão muito desfocadas em comparação com a fonte PNG e o recurso de captura de tela "interno" do VLC

insira a descrição da imagem aqui

Detalhe:

insira a descrição da imagem aqui

video ffmpeg
  • 1 1 respostas
  • 1653 Views

1 respostas

  • Voted
  1. Best Answer
    Nicola Sap
    2018-01-10T01:21:12+08:002018-01-10T01:21:12+08:00

    ffmpeg

    Conforme apontado nos comentários, ffmpegoferece uma boa solução de uma etapa com um parâmetro simples de "qualidade": crf, ou "fator de taxa constante" (leia este post explicando o crf).

    Veja este post para obter instruções simples para passar de PNG para H.264 usando ffmpeg.

    Resumidamente:

    # Assuming the frames are called frame0000.png, frame0001.png ...
    # 
    # set $FPS, $WIDTH, $HEIGHT, $FIRSTFRAME, 
    # $CRF (see above) to the desired value, then run:
    
    ffmpeg -r $FPS -f image2 -s ${WIDTH}x$HEIGHT -start_number $FIRSTFRAME \
           -i frame%04d.png -vcodec libx264 -crf $CRF -pix_fmt yuv420p output.mp4
    

    $CRFé 23 por padrão; valores menores que 23 dão melhor qualidade e arquivos maiores, valores maiores que 23 aumentam a compressão.

    • 1

relate perguntas

  • O comando ffmpeg falha silenciosamente dentro do script, mas funciona quando executado diretamente

  • Converta áudio dentro de MKV para AC3 ou DTS preservando 6.1 canais

  • ffmpeg: 'Protocolo não encontrado' para nome de arquivo normal

  • Gire a webcam e a tela (modo retrato)

Sidebar

Stats

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

    Como exportar uma chave privada GPG e uma chave pública para um arquivo

    • 4 respostas
  • Marko Smith

    ssh Não é possível negociar: "nenhuma cifra correspondente encontrada", está rejeitando o cbc

    • 4 respostas
  • Marko Smith

    Como podemos executar um comando armazenado em uma variável?

    • 5 respostas
  • Marko Smith

    Como configurar o systemd-resolved e o systemd-networkd para usar o servidor DNS local para resolver domínios locais e o servidor DNS remoto para domínios remotos?

    • 3 respostas
  • Marko Smith

    Como descarregar o módulo do kernel 'nvidia-drm'?

    • 13 respostas
  • Marko Smith

    apt-get update error no Kali Linux após a atualização do dist [duplicado]

    • 2 respostas
  • Marko Smith

    Como ver as últimas linhas x do log de serviço systemctl

    • 5 respostas
  • Marko Smith

    Nano - pule para o final do arquivo

    • 8 respostas
  • Marko Smith

    erro grub: você precisa carregar o kernel primeiro

    • 4 respostas
  • Marko Smith

    Como baixar o pacote não instalá-lo com o comando apt-get?

    • 7 respostas
  • Martin Hope
    rocky Como exportar uma chave privada GPG e uma chave pública para um arquivo 2018-11-16 05:36:15 +0800 CST
  • Martin Hope
    Wong Jia Hau ssh-add retorna com: "Erro ao conectar ao agente: nenhum arquivo ou diretório" 2018-08-24 23:28:13 +0800 CST
  • Martin Hope
    Evan Carroll status systemctl mostra: "Estado: degradado" 2018-06-03 18:48:17 +0800 CST
  • Martin Hope
    Tim Como podemos executar um comando armazenado em uma variável? 2018-05-21 04:46:29 +0800 CST
  • Martin Hope
    Ankur S Por que /dev/null é um arquivo? Por que sua função não é implementada como um programa simples? 2018-04-17 07:28:04 +0800 CST
  • Martin Hope
    user3191334 Como ver as últimas linhas x do log de serviço systemctl 2018-02-07 00:14:16 +0800 CST
  • Martin Hope
    Marko Pacak Nano - pule para o final do arquivo 2018-02-01 01:53:03 +0800 CST
  • Martin Hope
    Kidburla Por que verdadeiro e falso são tão grandes? 2018-01-26 12:14:47 +0800 CST
  • Martin Hope
    Christos Baziotis Substitua a string em um arquivo de texto enorme (70 GB), uma linha 2017-12-30 06:58:33 +0800 CST
  • Martin Hope
    Bagas Sanjaya Por que o Linux usa LF como caractere de nova linha? 2017-12-20 05:48:21 +0800 CST

Hot tag

linux bash debian shell-script text-processing ubuntu centos shell awk ssh

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