Mencoder com a mesma saída de qualidade

5

Eu gosto de mencoder para converter arquivos de vídeo porque mostra quanto tempo resta até o final da conversão (ao contrário de ffmpeg ).

mencoder file.wmv -ofps 23.976 -ovc lavc -oac copy -o file.avi

O problema é que o arquivo resultante não é da mesma qualidade que o arquivo de entrada. Com ffmpeg , há sameq opção. Existe uma opção semelhante para que mencoder atinja a mesma qualidade?

Isso é apenas o meu sentimento ou é mais rápido do que o mfoder ffmpeg quando eu vou conseguir a mesma qualidade?

obrigado

    
por xralf 13.11.2011 / 17:11

2 respostas

9

Ok, as primeiras coisas primeiro ...

A opção sameq do ffmpeg não significa a mesma qualidade e, em muitos casos, não fará nada relevante.

Isto é da página de manual do ffmpeg:

-sameq
       Use same quantizer as source (implies VBR).

Isto é, na verdade, da documentação on-line do ffmpeg

‘-same_quant’
Use same quantizer as source (implies VBR).

Note that this is NOT SAME QUALITY. Do not use this option unless you know you need it.

Você pode verificar aqui link , pesquisar por same_quant (é o mesmo que o sameq).

Ok, agora isso está fora do caminho,

Eu não sei exatamente o que você está tentando alcançar com a sua conversão, mas existem duas possibilidades, que eu vou enumerar e tentar ajudar:

  1. Você está apenas tentando alterar o Container e não o codec do vídeo. O container é o bit de dados que está lá para dizer ao software que está tentando reproduzir o vídeo como as coisas estão organizadas. Ele tem as informações sobre o FPS, codec de vídeo, codecs de áudio, como os dados são armazenados. Se o seu vídeo fosse água, o recipiente poderia ser uma garrafa de vidro, um desenho animado ou uma garrafa de plástico. Nesse caso, os contêineres são wmv, avi, mp4, mov, etc. Os contêineres são importantes porque nem todos eles suportam todos os codecs e nem todos os softwares oferecem suporte a todos os contêineres. Lembre-se de que você ainda pode acertar o contêiner, mas se o vídeo contido no codec errado você ainda está sem sorte. Então, se você quiser apenas trocar contêineres, pode usar:

        mencoder file.wmv -ofps 23.976 -ovc copy -oac copy -o file.avi
    
  2. Você está tentando alterar o Codec . O Codec é o algoritmo ou conjunto de especificações que realmente diz como um vídeo é codificado, diferentes codecs têm diferentes saídas de qualidade, tamanhos, parâmetros, etc. Agora as coisas ficam um pouco complicadas, enquanto mudando o container você pode realmente copiar o vídeo e não perder qualidade (porque você só muda o container) ao trocar codecs você certamente perderá alguma qualidade, mas na maioria das vezes se ambos os codecs forem bons e os parâmetros certos são configurados, você não notaria muito depois de apenas uma conversão (isso é inerente à forma como os codecs comprimem o vídeo).

A qualidade diferente entre ffmpeg e mencoder só posso adivinhar, mas uma de duas coisas deve estar acontecendo:

  1. Você só precisa alterar os contêineres, e o ffmpeg está detectando isso e copiando apenas o vídeo. (se este for o caso use -ovc copy no mencoder)
  2. Você precisa mudar os codecs e o ffmpeg está escolhendo melhores codecs / parâmetros para recomprimir o vídeo. Neste caso tente verificar qual codec o ffmpeg está usando (se você não pode postar aqui e eu vou dar uma olhada) ou tente um código diferente com o mencoder (por enquanto você não está especificando nada) por exemplo:

    mencoder file.wmv -ofps 23.976 -ovc lavc -lavcopts vcodec=mpeg4 -oac copy -o file.avi
    

Isto usaria o padrão ISO MPEG-4 (DivX 5, compatível com XVID), é claro que você ainda pode precisar alterar a taxa de bits que a reconversão está usando, verificando a taxa de bits da fonte seria um bom indicador.

Também o mencoder suporta muitas bibliotecas diferentes, algumas são multi codec como lavc, outras não, tente

mencoder -ovc help

para obter uma lista de codecs suportados, nos meus tenho:

MEncoder SVN-r33094-4.5.3 (C) 2000-2011 MPlayer Team

Available codecs:
   copy     - frame copy, without re-encoding. Doesn't work with filters.   
   frameno  - special audio-only file for 3-pass encoding, see DOCS.
   raw      - uncompressed video. Use fourcc option to set format explicitly.
   nuv      - nuppel video
   lavc     - libavcodec codecs - best quality!
   libdv    - DV encoding with libdv v0.9.5
   xvid     - XviD encoding
   x264     - H.264 encoding

Então eu pude fazer:

    mencoder file.wmv -ofps 23.976 -ovc xvid -oac copy -o file.avi

ou

    mencoder file.wmv -ofps 23.976 -ovc x264 -oac copy -o file.avi

Para um tamanho de arquivo menor e tempo de compactação muito menor

    
por 23.11.2011 / 23:21
1

Eu acho que você não respondeu a pergunta dele, especialmente quando falamos de ffmpeg.
Isso fará com que o mencoder produza uma boa codificação divx com a mesma taxa de bits, qualidade e tamanho de arquivo que a fonte.
n = filename = parâmetro posicional do script
Você pode usá-lo como um script do Nautilus para clicar com o botão direito do mouse no ícone do arquivo para convertê-lo. Você ajusta os parâmetros de saída ao seu gosto.

#!/bin/bash -x
if [ ! -t 1 ]; then gnome-terminal -x "$0" "$@"; exit; fi
n="$@"
bitrate='mediainfo --Inform="Video;%BitRate%" "$n"'<br>
nice mencoder -ovc xvid -xvidencopts max_key_interval=50:bitrate=$bitrate -mc 0 -vf harddup -oac mp3lame -lameopts cbr:aq=0:br=64  -o "${n%.*}.new.avi" "$n"
    
por 25.03.2012 / 03:11