Comment puis-je convertir une vidéo wmv 1080p en une vidéo 720p?

14

J'ai une vidéo wmv 1080p que j'aimerais convertir en une vidéo de qualité inférieure (de préférence 720p). Je voudrais garder l'audio intact. Comment puis-je accomplir cela dans Ubuntu?

James
la source

Réponses:

16

Puisque vous avez utilisé une balise ffmpeg, je vais l'utiliser pour la réponse.

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

Modifiez la qualité vidéo en spécifiant un paramètre CRF différent. Voir le guide d'encodage x264 pour plus d'informations.

duffydack
la source
1
L'option 'sameq' a été supprimée. Si vous recherchez une option pour préserver la qualité (ce qui n'est pas le cas pour -sameq), utilisez -qscale 0 ou une option de facteur de qualité équivalent.
juanmah
Selon le wiki de ffmpeg , cela peut être aussi simple que:ffmpeg -i input.avi -vf scale=-1:720 output.avi
andersonvom
4

Le temps a un peu avancé depuis la réponse acceptée à l'origine pour cette question en 2012. Les nouvelles versions de FFmpeg seraient mieux d'utiliser le filtre vidéo «échelle» de FFmpeg.

Je donne un exemple ci-dessous, en utilisant ce filtre, qui copie également simplement la piste audio comme vous l'avez demandé:

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

L' -tune filmoption donnée ci-dessus peut être omise ou vous pouvez essayer -tune animationselon le type de clip vidéo que vous utilisez.

Si vous avez décidé que vous voulez vous transcoder le un bon choix audio serait d'utiliser la libfdk_aac bibliothèque externe comme suit:

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

C'est certainement ce que je ferais avec un fichier wmv que je dimensionnais, vous trouverez les résultats plus qu'acceptables ...

andrew.46
la source
1

Si vous souhaitez conserver intactes toutes les pistes audio, sous-titres, etc., vous devez utiliser quelque chose comme ceci:

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

Dans ce cas, le fichier input.mkv a deux pistes audio et deux sous-titres. Vous pouvez spécifier toutes les pistes audio (ou sous-titres, ou vidéos, etc.) une par une ou en tant qu'entité unique (comme je l'ai spécifié pour les sous-titres).

J'espère que cela aide...

adsuar
la source
1
Vous n'avez pas besoin de spécifier chaque flux de la manière ci-dessus: à la -map 0:0 -map 0:1 -map 0:2 -map 0:3 -map 0:4 place, vous pouvez simplement spécifier à la -map 0place. Cela sélectionnera automatiquement tous les flux dans l'entrée 0. similaire aux codecs de copie audio. Les seules options de codec que vous devez spécifier sont -c:copy -c:v libx264. Cela signifie: "définissez tous les codecs de flux à copier, sauf la vidéo qui doit transcoder en x264."
Cheekysoft
Équivalent (montrant l'ordre des paramètres):ffmpeg -i input.mkv -map 0 -vf scale=-1:720 -c:copy -c:v libx264 -crf 18 -preset veryslow output.mkv
Cheekysoft