użyć ffmpeg do przekształcenia mp4 w ten sam wysokiej jakości plik avi?

28

Chciałbym użyć ffmpeg do przekształcenia pliku wideo MP4 na AVI, ale o tej samej jakości, nawet jeśli zajmuje więcej miejsca. Jeśli po prostu zrobię:

ffmpeg -i file.mp4 file.mp4.avi

Wynikowy plik avi jest bardzo niskiej jakości i pikselowany. Jak mogę dokonać tej transformacji, zachowując jakość obrazu i dźwięku?

719016
źródło
3
Możesz użyć -sameqprzełącznika, który umieści ten sam kodek wideo (przy założeniu H264) w kontenerze AVI. Jeśli twój odtwarzacz nie obsługuje H264 w AVI, musisz transkodować najlepszy możliwy format wideo (H264) do jakiegoś przeciętnego formatu, co nie jest dobre. Następnie przypisujesz wyższy bitrate wideo XVID (powiedzmy 2000 Kb / s). Dźwięk nie ma tak wielkiego znaczenia dla IMHO, ale lepiej przekonwertować go na MP3 niż AC3
zetah,

Odpowiedzi:

16

Zawsze tracisz trochę jakość za każdym razem, gdy transkodujesz z jednego kodeka na inny, wideo lub audio, ale być może możesz tego uniknąć, jeśli chcesz tylko zmienić typ kontenera MP4 na kontener AVI. codec:copymoże być pomocny, jeśli nie masz powodu do transkodowania (i powinno to być szybsze).

Jeśli musisz transkodować, ponieważ musisz użyć konkretnego kodeka wideo, mam nadzieję, że możesz użyć sugestii Zetah powyżej w jego komentarzu i użyć -sameqprzełącznika. Możesz też skorzystać z qscaleopcji ręcznego ustawienia jakości. Im niższa liczba, tym lepsza jakość, ale więcej miejsca zajmie plik.

Ostatni raz transkodowałem wideo, którego użyłem qscale=8.0, ale sugeruję eksperymentowanie w celu znalezienia optymalnego dopasowania do jakości twojego wejścia.

Marty Jay pomaga wspomnieć, że sameq oznacza ten sam kwantyzator co na wejściu, co może nie dać tej samej jakości. W cytowanym przez niego artykule wspomina się o konwersji wieloprzebiegowej, która jest dobrym sposobem na uzyskanie lepszej kompresji bez utraty jakości.

John S Gruber
źródło
Dzięki za wskazówki, spróbuję -sameqzobaczyć, jak to będzie.
719016
8
-sameq NIE oznacza tej samej jakości; ffmpeg.org/trac/ffmpeg/wiki/…
3
Wydaje się zalecane użycie -qscale 0opcji
989762
Dość stary, ale dostałem to ostrzeżenie, próbując to zrobić dzisiaj:Option 'sameq' was removed. If you are looking for an option to preserve the quality (which is not what -sameq was for), use -qscale 0 or an equivalent quality factor option.
Dave Lugg
10

Moje rozwiązanie:

ffmpeg -i filename.mp4 -vcodec copy -acodec copy filename.avi

Cieszyć się!!

Kuba
źródło
2
Należy pamiętać, że osadzanie strumieni AVC w kontenerach AVI wymaga włamania obsługiwanego przez wiele odtwarzaczy wideo napędzanych przez społeczność (np. VLC, MPlayer, wszystko FFmpeg / Libav lub GStreamer, Media Player Classic), ale nie przez wiele komercyjnych odtwarzaczy (np. Windows Media Player i QuickTime / iTunes nie obsługują tego).
David Foerster,
4

Oto mój 2-przebiegowy (Advanced Simple Profile), którego używam od czasu do czasu.

zaliczenie 1:

ffmpeg -i file.mp4 -vcodec mpeg4 -vtag XVID -b 990k -bf 2 -g 300 -s 640x360 -pass 1 -an -threads 0 -f rawvideo -y /dev/null

zaliczenie 2:

ffmpeg -i file.mp4 -vcodec mpeg4 -vtag XVID -b 990k -bf 2 -g 300 -s 640x360 -acodec libmp3lame -ab 128k -ar 48000 -ac 2 -pass 2 -threads 0 -f avi file.avi
plecak
źródło
To świetnie, wyprodukowałem bardzo małe avi o bardzo dobrej jakości!
jpo38