Mam około 70 plików mp4 i chcę wyodrębnić pliki audio bezpośrednio bez dalszego transkodowania. Wszystkie pliki MP4 mają pliki audio AAC.
Rozumiem, że mogę użyć następującego polecenia, aby wyodrębnić plik audio z jednego z plików mp4:
avconv -i "INPUT FILE" -map 0:1 -c:a copy "OUTPUT FILE"
Jak wyodrębnić wszystkie pliki audio ze wszystkich plików 70 mp4, aby otrzymać 70 plików AAC?
bash /path/to/the/script %F
- jak tutaj-map
może nadal powodować, że wideo będzie rozpatrywane po przełączeniu na inny format wyjściowy (jeśli ten format może zawierać zarówno dźwięk, jak i wideo). Bezpieczniej jest zachować go takim, jakim jest.Odpowiedź Xiao jest na ogół najbardziej przydatna, jeśli masz wszystkie pliki w jednym katalogu; ale jeśli pliki MP4 są rozproszone w różnych katalogach, możesz użyć tego
find
polecenia, aby je przekonwertować.Używa nieco innej formy podstawiania ciągu bash na końcu: „$ {0 /% mp4 / m4a}” mówi bashowi, aby zastąpił mp4 m4a, ale tylko jeśli mp4 znajduje się na końcu ciągu.
źródło
%
podstawienie pierwszej instancji znalezionego ciągu; możesz także użyć,#
aby zastąpić ciąg tylko wtedy, gdy jest on na początku zmiennej; więc $ {0 / mp4 / m4a} zamieniłoby pierwszą instancję mp4 na m4a (co może być problemem, jeśli masz naprawdę dziwne nazwy plików); a $ {0 / # mp4 / m4a} zastąpi mp4 zamiast m4a, ale tylko wtedy, gdy wartość ciągu zmiennej zaczyna się od mp4 (oczywiście nie ma tu zastosowania, ale może się przydać gdzie indziej).Aby uniknąć przetwarzania wielu plików jednocześnie (które mogą zużywać zbyt wiele zasobów), użyj
parallel
. Domyślnie wykonuje tylko jedno zadanie na raz. Jeśli chcesz używać wielu rdzeni procesora równolegle, spróbuj wykonaćparallel -j 4 ...
4 zadania równolegle. Sprawdź takżeman parallel
.Ta linia wyodrębni
aac
pliki audio z wybranych filmów i umieści je wm4a
pojemnikach.Podczas pracy bezpośrednio w interfejsie CLI zastąp
%F
listę plików wejściowych. Np*.mp4
.Zainspirowany tą odpowiedzią, poprzednią odpowiedzią na to pytanie oraz komentarzem evilsoup do drugiego (mówiąc: „surowe pliki AAC nie mogą zawierać metadanych; jeśli chcesz zachować metadane z oryginalnych plików, użyj m4a (które to po prostu inna nazwa mp4, ale jest dość powszechnie rozpoznawana przez odtwarzacze audio) zamiast aac jako rozszerzenie pliku ” ).
Używam takich poleceń w niestandardowych akcjach Thunar,
ograniczenie aplikacji do filmów zawierających
aac
dźwięk.Aby okno terminalu było otwarte podczas przetwarzania, które zamyka się na końcu, polecenie można zmienić w następujący sposób:
źródło
Rozszerzyłem odpowiedź @ Xiao-Long Chena, przekształcając ją w skrypt, który pomija pliki, gdy plik wyjściowy jest nowszy:
źródło