Jak używać FFMPEG do konwersji wielu plików multimediów jednocześnie w Linux
- 2130
- 225
- Klaudia Woś
Cel
Napisz prosty skrypt bash dla konwersji plików wsadowych FFMPEG.
Rozkłady
Będzie to działać na wszystkich dystrybucjach Linux.
Wymagania
Działający instalacja Linux z zainstalowanym FFMPEG.
Konwencje
- # - Wymaga, aby podane polecenia Linux są wykonywane z uprawnieniami root bezpośrednio jako użytkownik root lub za pomocą
sudo
Komenda - $ - Wymaga, aby podane polecenia Linux zostały wykonane jako zwykły użytkownik niepewny
Wstęp
FFMPEG niezwykle potężny, jeśli chodzi o manipulowanie i przekształcanie plików multimedialnych, ale brakuje mu jednej ważnej funkcji. FFMPEG nie ma możliwości obsługi wielu plików jednocześnie. Więc co możesz z tym zrobić? Jesteś użytkownikiem Linuksa. Nie będziesz tam siedzieć i ręcznie pisać w tym samym poleceniu w kółko, jesteś?
FFMPEG jest całkowicie podlegający scenariuszowi. Możesz więc napisać prosty skrypt bash, aby zapętlić zawartość określonego katalogu i wykonać konwersję, którą chcesz na każdym pliku. Chociaż może to brzmieć bardzo, tak naprawdę nie jest. Skrypt będzie mniej niż 20 wierszy Bash.
Skonfiguruj plik
Zacznij od skonfigurowania pliku. Zrób to gdziekolwiek lubisz.
$ Touch Ffmpeg Batch.cii
Następnie spraw, aby był wykonywalny.
$ chmod +x ffmpeg partia.cii
Otwórz plik i skonfiguruj go, aby rozpocząć pisanie.
#! /bin/bash
Zaplanuj swoje zmienne
Będziesz musiał przekazać wiele argumentów do swojego skryptu, jeśli chcesz, aby był wystarczająco elastyczny, aby obsłużyć większość scenariuszy, do których używałbyś FFMPEG. Z tego powodu będziesz potrzebować sporo zmiennych. Jasne, możesz użyć surowych wejść, ale będzie o wiele trudniej śledzić.
srcext = 1 $ vestext = 2 $ srcdir = 3 $ destdir = 4 $ opts = 5 $
W sumie masz pięć zmiennych; rozszerzenie źródła, miejsce docelowe lub wynikowe, katalog źródłowy, katalog docelowy i opcje. Opcje to dowolne opcje, które chcesz w swoim poleceniu FFMPEG. Istnieją inne sposoby, aby to zrobić, ale po prostu przekazanie ich jako sznurek działa i jest to bardzo proste.
Pętla
Ten skrypt koncentruje się wokół Do
pętla iteracja nad zawartością określonego katalogu. Musisz stworzyć tę pętlę. Zacznij od konfiguracji pomysłu.
dla nazwy pliku w folderze; gotowe
Oczywiście, TECZKA
jest niczym. Musisz skonfigurować pętlę, aby iterować nad zawartością katalogu, a ten katalog jest przechowywany w srcdir
. Musisz także powiedzieć, że musi to zapętlać tylko przez pliki z określonym rozszerzeniem, srcext
. Więc kombinacja, której szukasz, wygląda tak:
„$ srcdir”/*.$ srcext
Wieloznaczna karta (*
) mówi to wszystkim plikom, a następnie .$ srcext
Daje mu pełne rozszerzenie, które należy szukać. Cytaty są niezbędne $ srcdir
Aby zapobiec traktowaniu całości jako sznurek i nie działa prawidłowo.
Cała sprawa razem wygląda tak:
dla nazwy pliku w „$ srcdir”/*.$ srcext; gotowe
Twoje polecenie FFMPEG
Znasz podstawową składnię FFMPEG, ale to nie idzie za daleko. Cała sprawa składa się ze zmiennych. Mówiąc o zmiennych, będziesz potrzebować jeszcze kilku. Aby uzyskać prawidłowe elementy dla folderu docelowego i plików, oryginalne nazwy plików należy posiekać i zreorganizować.
Najpierw utwórz nową zmienną, BasePath
i ustaw go równe temu wyrażeniem regularnym: $ nazwa pliku%.*
.
BasePath = $ nazwa pliku%.*
Wyrażenie pasuje wszystko po .
ze ścieżki, co oznacza rozszerzenie.
Teraz musisz pozbyć się samej ścieżki. Aby to zrobić, ustaw Basename
równy $ Basepath ##*/
.
Basename = $ Basepath ##*/
To dba o wszystko inne, aż do samej nazwy pliku.
Możesz teraz zebrać elementy, aby sformułować połączenie do FFMPEG.
ffmpeg -i „$ filename” $ opts "$ destdir"/"$ basename".„$ vestext”
Jak widać, jest to takie samo jak normalne wywołanie FFMPEG, ale używając zmiennych. Najbardziej skomplikowanym elementem jest miejsce docelowe, ale po prostu łączy poszczególne kawałki miejsca docelowego, tworząc całą ścieżkę z nazwą pliku i rozszerzeniem.
Owinięcie
Jeśli chcesz, możesz przyczynić się do komunikatu sukcesu po zakończeniu konwersji. Rzuć go na koniec swojego skryptu po Do
pętla.
echo „Konwersja z $ srcext na $ vestext kompletne!"
Cała sprawa powinna wyglądać mniej więcej tak:
#! /bin/bash srcext = 1 $ vestext = 2 $ srcdir = 3 $ destdir = 4 $ opts = 5 $ dla nazwy pliku w „$ srcdir”/*.$ srcext; Do Basepath = $ nazwa pliku%.* basename = $ Basepath ##*/ ffmpeg -i „$ filename” $ opts "$ destdir"/"$ basename".„$ vestext” DODE Echo ”Konwersja z $ srcext na $ vestext kompletne!"
Uruchom swój skrypt
Na koniec możesz teraz uruchomić swój skrypt, aby wykonać konwersje plików wsadowych. Spójrz na ten przykład, aby zobaczyć, jak wygląda składnia.
$ Ffmpeg Batch.sh flac mp3/ścieżka/do/pliki/ścieżka/do/dest '-AB 320K'
To nie jest o wiele więcej niż zwykle. Dopiero teraz przekształcasz cały katalog plików, zamiast jednego.
Zamykanie myśli
Ten skrypt powinien być wystarczająco elastyczny w przypadku większości sytuacji, w tym wideo. Możesz dodać skrypt do lokalnego lub szerokiego systemu kosz
ścieżka, aby była łatwiej dostępna spoza jego katalogu.
Powiązane samouczki Linux:
- Rzeczy do zainstalowania na Ubuntu 20.04
- Ubuntu 20.04 Instalacja FFMPEG
- Rzeczy do zrobienia po zainstalowaniu Ubuntu 20.04 Focal Fossa Linux
- Polecenia Linux: Top 20 najważniejsze polecenia, które musisz…
- Jak przeliczyć pliki muzyczne z FFMPEG
- Pobierz Linux
- Wprowadzenie do automatyzacji, narzędzi i technik Linuksa
- Najlepszy Linux Distro dla programistów
- Podstawowe polecenia Linux
- Linux Pliki konfiguracyjne: Top 30 Najważniejsze
- « Zainstaluj i odtwarzaj Overwatch na Linux z winem
- Posłuchaj swojej ulubionej stacji radiowej z jednym poleceniem na Linux »