Como posso converter um vídeo wmv de 1080p em um vídeo de 720p?

14

Eu tenho um vídeo 1080p wmv que gostaria de converter para um vídeo de qualidade inferior (de preferência 720p). Eu gostaria de manter o áudio intacto. Como posso fazer isso no Ubuntu?

James
fonte

Respostas:

16

Como você usou uma tag ffmpeg, usarei isso para a resposta.

ffmpeg -i input.wmv -s hd720 -c:v libx264 -crf 23 -c:a aac -strict -2 output.mp4

Altere a qualidade do vídeo especificando um parâmetro CRF diferente. Consulte o guia de codificação x264 para obter mais informações.

duffydack
fonte
1
A opção 'sameq' foi removida. Se você estiver procurando por uma opção para preservar a qualidade (que não era o que -sameq era), use -qscale 0 ou uma opção de fator de qualidade equivalente.
Juanmah #
De acordo com o wiki de ffmpeg , isso pode ser tão simples quanto:ffmpeg -i input.avi -vf scale=-1:720 output.avi
andersonvom
4

O tempo mudou um pouco desde a resposta original aceita para esta pergunta em 2012. Versões mais recentes do FFmpeg seria melhor usar o filtro de vídeo em 'escala' do FFmpeg.

Dou um exemplo abaixo, usando este filtro, que também simplesmente copia a faixa de áudio conforme solicitado:

ffmpeg -i input.wmv \
       -c:v libx264 -preset veryslow -tune film -crf 22 -vf scale=-2:720 \
       -c:a copy \
       output.mp4

A -tune filmopção fornecida acima pode ser omitida ou você pode tentar, -tune animationdependendo do tipo de videoclipe que está usando.

Se você decidiu que você iria gostar de transcodificar o uma boa escolha de áudio seria usar o libfdk_aac biblioteca externa da seguinte forma:

ffmpeg -i input.wmv \
       -c:v libx264 -preset veryslow -tune film -crf 22 -vf scale=-2:720 \
       -c:a libfdk_aac -b:a 128k \
       output.mp4

Isso é certamente o que eu faria com um arquivo wmv que estava escalando, você encontrará os resultados mais do que aceitáveis ​​...

andrew.46
fonte
1

Se você deseja manter intactas todas as faixas de áudio, legendas e assim por diante, use algo como isto:

ffmpeg -i input.mkv \
       -map 0:0 -map 0:1 -map 0:2 -map 0:3 -map 0:4 \
       -vf scale=-1:720 -c:v libx264 -crf 18 -preset veryslow \
       -c:a:0 copy -c:a:1 copy -c:s copy \
       output.mkv

Nesse caso, o arquivo input.mkv possui duas faixas de áudio e duas legendas. Você pode especificar todas as faixas de áudio (ou legendas, vídeos, etc.) uma por uma ou como uma única entidade (como eu especifiquei para legendas).

Espero que ajude...

adsuar
fonte
1
Você não precisa especificar cada fluxo da maneira acima: -map 0:0 -map 0:1 -map 0:2 -map 0:3 -map 0:4 Em vez disso, você pode simplesmente especificar -map 0. Isso selecionará automaticamente todos os fluxos na entrada 0. semelhante aos codecs de cópia de áudio. As únicas opções de codec que você precisa especificar são -c:copy -c:v libx264. Isso significa: "configure todos os codecs de fluxo para copiar, exceto o vídeo que deve transcodificar para x264".
Cheekysoft 26/16
Equivalente (mostrando a ordem dos parâmetros):ffmpeg -i input.mkv -map 0 -vf scale=-1:720 -c:copy -c:v libx264 -crf 18 -preset veryslow output.mkv
Cheekysoft