Chciałem móc to teraz robić wiele razy, więc pytam.
Jeśli mam istniejący plik wideo lub audio ffmpeg
, mplayer
a inne odtwarzacze multimedialne mogą wykryć przynajmniej niektóre z jego „właściwości”, takich jak używany kontener, kodek i szybkość transmisji, prawdopodobnie różne ustawienia jakości i kodowania itp.
Jak mogę wyodrębnić te ustawienia z istniejącego pliku, aby użyć ich (bezpośrednio) do kodowania za pomocą ffmpeg?
Na przykład mam mkv
wideo zakodowane x264
z pewnymi ustawieniami i innym nieskompresowanym avi
plikiem. Chciałbym „skopiować” ustawienia kodowania używane w pliku x264 mkv w celu transkodowania avi przy użyciu tych samych ustawień.
Uwaga: szukam sposobu, który nie powinien obejmować ludzkiej pracy z „tłumaczeniem” ustawień z dekodera na koder. W porządku, jeśli najpierw muszę wyodrębnić ustawienia i zapisać je gdzieś, ale chciałbym móc po prostu podać opcje odczytu do wiersza poleceń lub wstępnie skonfigurowanego pliku konfiguracyjnego dla ffmpeg.
ffprobe
(zwłaszcza z-show_streams
i-show_format
opcji) oraz wykorzystywać te informacje do skryptu ważne rzeczy-crf
ogólnie zaleca się użycie tej opcji. Zobacz Podręcznik kodowania FFmpeg i x264 .channels:6
z pliku wideo, ale aby go zakodować, musisz użyć przełącznika-ch:6
. Niektóre przełączniki używają 1 litery, niektóre używają dwóch itd.Odpowiedzi:
Nie ma na to automatycznego sposobu. Musisz spojrzeć na parametry oryginalnego pliku i zastosować je do pliku wyjściowego.
W większości przypadków będą to:
-filter:v scale
lub-s:v
-filter:v fps
-r
-pix_fmt
(np.-pix_fmt yuv420p
Powinna zapewnić najlepszą kompatybilność)-g
Ale nawet jeśli wszystko jest w porządku, niektóre urządzenia mogą wymagać określonych, zastrzeżonych informacji osadzonych w strumieniu bitów.
Jeśli chodzi o konkretne zadanie użycia
x264
, nie będzie to trywialne. Nie znam żadnego skryptu, który zająłby się tymi zadaniami, które zwykle wykonuje się ręcznie. Aby uzyskać więcej informacji o ustawieniach kodowania, w systemach Unix / Linux lub OS X można użyćmediainfo
niektórych sztuczek Bash.Na przykład dla wideo zakodowanego w formacie x264 w pliku MP4:
Spowoduje to wyświetlenie listy opcji x264:
Następnie możesz ręcznie przekazać te opcje do pliku binarnego x264.
Jeśli przejdziesz przez FFmpeg, jest to trochę bardziej skomplikowane, ponieważ nie wszystkie opcje x264 mogą lub powinny być odwzorowane w ten sposób. Należy zauważyć, że często prosta opis stacji, i dostosować profil zrobi, jak również (jak widać
x264 --fullhelp
i prowadnicy kodowania x264 ), określający poziom CRF jest wystarczające.I to nawet nie bierze pod uwagę dźwięku, gdzie na szczęście nie ma tak wielu opcji.
źródło
mediainfo
wyjściowych i zamapowałbym te opcje na ffmpeg-x264-params
. (Zobacz także przewodnik kodowania x264 ). Ale jeśli potrzebujesz ogólnego rozwiązania dla wszystkich rodzajów kodeków / koderów lub formatów kontenerów, musisz napisać średnio zaawansowany skrypt, który dokonuje konwersji.