Jak przekonwertować film w formacie 1080p wmv na film w formacie 720p?

14

Mam wideo wmv 1080p, które chciałbym przekonwertować na wideo o niższej jakości (najlepiej 720p). Chciałbym zachować nienaruszony dźwięk. Jak mogę to zrobić w Ubuntu?

James
źródło

Odpowiedzi:

16

Ponieważ użyłeś tagu ffmpeg, użyję go do odpowiedzi.

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

Zmień jakość wideo, określając inny parametr CRF. Więcej informacji znajdziesz w przewodniku kodowania x264 .

plecak
źródło
1
Opcja „sameq” została usunięta. Jeśli szukasz opcji zachowania jakości (która nie jest tym, do czego służyło -sameq), użyj opcji -qscale 0 lub równoważnej opcji współczynnika jakości.
juanmah
Według wiki ffmpeg może to być tak proste, jak:ffmpeg -i input.avi -vf scale=-1:720 output.avi
andersonvom
4

Minęło trochę czasu, odkąd pierwotnie zaakceptowano odpowiedź na to pytanie w 2012 roku. Nowsze wersje FFmpeg lepiej byłoby użyć filtru wideo „skalowanego” FFmpeg.

Podam przykład poniżej, używając tego filtra, który również po prostu kopiuje ścieżkę audio, tak jak prosiłeś:

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

-tune filmOpcja podane powyżej mogą zostać pominięte lub można spróbować -tune animationw zależności od typu pliku wideo, którego używasz.

Jeśli zdecydujesz, że chcesz transkodować dźwięk, dobrym wyborem będzie skorzystanie z zewnętrznej biblioteki libfdk_aac w następujący sposób:

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

Z pewnością to właśnie zrobiłbym z plikiem wmv, który skalowałem, wyniki będą bardziej niż dopuszczalne ...

andrew.46
źródło
1

Jeśli chcesz zachować nienaruszone wszystkie ścieżki audio, napisy itp., Powinieneś użyć czegoś takiego:

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

W takim przypadku plik input.mkv ma dwie ścieżki audio i dwa napisy. Możesz określić wszystkie ścieżki dźwiękowe (lub napisy, wideo itp.) Jeden po drugim lub jako pojedynczy byt (tak jak określiłem dla napisów).

Mam nadzieję, że to pomoże...

adsuar
źródło
1
Nie musisz określać każdego strumienia w powyższy sposób: -map 0:0 -map 0:1 -map 0:2 -map 0:3 -map 0:4 Zamiast tego możesz po prostu określić -map 0zamiast tego. Spowoduje to automatyczne wybranie wszystkich strumieni na wejściu 0. podobnie jak w przypadku kodeków kopiujących audio. Jedyne opcje kodeka, które musisz określić, to -c:copy -c:v libx264. Oznacza to: „ustaw kopiowanie wszystkich kodeków strumieniowych, z wyjątkiem wideo, które powinno transkodować na x264”.
Cheekysoft
Odpowiednik (pokazujący kolejność parametrów):ffmpeg -i input.mkv -map 0 -vf scale=-1:720 -c:copy -c:v libx264 -crf 18 -preset veryslow output.mkv
Cheekysoft