Odpowiedzi:
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 .
ffmpeg -i input.avi -vf scale=-1:720 output.avi
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 film
Opcja podane powyżej mogą zostać pominięte lub można spróbować -tune animation
w 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 ...
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...
-map 0:0 -map 0:1 -map 0:2 -map 0:3 -map 0:4
Zamiast tego możesz po prostu określić -map 0
zamiast 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”.
ffmpeg -i input.mkv -map 0 -vf scale=-1:720 -c:copy -c:v libx264 -crf 18 -preset veryslow output.mkv