Mam pliki zakodowane w formacie H.265, które są tak intensywne pod względem zasobów, że nie odtwarzają się dobrze, a moje oprogramowanie do konwersji (mencoder) nie obsługuje (obecnie) formatu H.265. Czy mogę przekonwertować je na H.264 w pliku wsadowym wiersza polecenia, aby szybko przekonwertować pliki do ponownej kompresji za pomocą Devede / OGMrip? Podczas przeszukiwania tej witryny nie znalazłem jej omówionej, więc opublikuję to, co uważam za przydatne pytanie i odpowiedź na to pytanie.
źródło
sleep 3
jest niepotrzebny (ale możliwy do zakończenia pętli) iINPUT=$1
nie ma znaczenia, ponieważ uruchamiasz go bezpośrednio w interaktywnej powłoce.-c:a copy
zamiast ponownego kodowania. Ponadto0:0
nie zawsze może odnosić się do wideo i0:1
nie zawsze może odnosić się do dźwięku. Możesz użyć specyfikatora strumienia, aby uniknąć potencjalnych problemów:-map 0:v -map 0:a
jeśli chcesz wszystkich strumieni wideo i audio z wejścia 0 lub-map 0:v:0 -map 0:a:0
jeśli chcesz tylko pierwszych strumieni wideo i audio z wejścia 0. Jeśli chcesz tylko angielski strumień audio:-map 0:m:language:eng
(zakładając, że jest oznaczony).ffmpeg -i $INPUT -vcodec h264 -acodec copy $OUTPUT
. Coś, z czego korzystam na co dzień i które potrafię zapamiętać, w przeciwieństwie do zapory bezsensownych flag, dla której każda odpowiedź ffmpeg jest tak niesławna.Konwersja partii z H.265 na H.264
Te przykłady zostały napisane dla ostatnich
ffmpeg
. Zaoszczędź sobie kłopotów i pobierz najnowszą wersję. Następnie umieśćffmpeg
plik binarny w~/bin
lub/usr/local/bin
(może być konieczne wylogowanie, a następnie zalogowanie się, aby zostać zauważonym).Wyjście Matroska
Ten przykład wyświetli się w katalogu o nazwie
h264vids
.W tym przykładzie założono, że dane wejściowe są
.mp4
. Jeśli nie, zmień.mp4
instancję w przykładzie na typ pliku wejściowego lub po prostu użyj sam chciwości*
.Dostosuj
-crf
jakość i-preset
szybkość / wydajność kodowania. Lub po prostu usuń te opcje i zastosuj wartości domyślne, które są dość dobre i powinny wystarczyć dla większości (w przykładzie zastosowano wartości domyślne dla tych opcji). Zobacz FFmpeg Wiki: H.264, aby uzyskać więcej informacji na temat tych opcji.Wyjście MP4
Ten jest trochę bardziej skomplikowany. Spowoduje to wykonanie kodowania warunkowego w zależności od tego, czy wejściowym dźwiękiem jest AAC, czy nie. Jeśli wejściowym dźwiękiem jest AAC, wówczas dźwięk zostanie skopiowany strumieniowo (ponownie zmiksowany) tak, jak jest, i można uniknąć niepotrzebnego ponownego kodowania. Jeśli wejściowy dźwięk nie jest AAC, zostanie ponownie zakodowany w AAC.
Oto prosty skrypt pokazujący, jak to zrobić za pomocą
ffprobe
iffmpeg
. Skopiuj i zapisz go w katalogu zawierającym filmy, które chcesz przekonwertować, daj mu uprawnieniachmod +x yourscriptname
, a następnie uruchom je./yourscriptname
.Ten przykład wyświetli się w katalogu o nazwie
h264vids
.W tym przykładzie założono, że dane wejściowe są
.mkv
. Jeśli nie, zmień.mkv
instancję w przykładzie na typ pliku wejściowego lub po prostu użyj sam chciwości*
.Uwaga powyżej dotycząca
-crf
i-preset
.Możesz wstrzymać kodowanie za pomocą ctrl+ zi wznowić za pomocą
fg
.źródło
Biorąc pod uwagę poprzednie odpowiedzi, wpadłem na następujące:
Zakłada się, że pliki mają zawsze nazwę kończącą się na
265.mkv
. To zakończenie zostanie zastąpione przez264.mkv
.Jeśli nazwa pliku jest inna, musisz odpowiednio dostosować polecenie.
źródło