Jakie narzędzia wiersza polecenia są potrzebne, aby połączyć kilka plików audio i wyprowadzić je jako jeden plik ogg (i / lub mp3)?
Jeśli możesz podać kompletne polecenie konkatenacji i wyjścia do ogg, byłoby to niesamowite.
Edycja : Pliki wejściowe (w moim przypadku obecnie) są w wma
formacie, ale idealnie powinny być wystarczająco elastyczne, aby obsługiwać szeroką gamę popularnych formatów.
Edycja2 : Aby wyjaśnić, nie chcę scalać wszystkich wma
s w określonym katalogu, chcę tylko połączyć 2 lub 3 pliki w jeden.
Dzięki za proponowane rozwiązania, ale wszystkie wydają się wymagać utworzenia plików tymczasowych, jeśli to w ogóle możliwe, chciałbym tego uniknąć.
linux
command-line
audio
hasen
źródło
źródło
mktemp -d /tmp/descriptive_name.XXXXXX
utworzenie katalogu tymczasowego z informacyjną nazwą, następnie przetworzenie tam wszystkich plików tymczasowych, a następnie rm -r katalog tymczasowy.*.wma
w1.wma 2.wma 3.wma 4.wma
wierszu poleceń, z pewnością będzie działać na mniejszej liście, takiej jak (pomijając 5.wma, 6.wma i 7.wma), po prostu przez ich wypisanie w ten sposób (zamiast używać*.wma
).Odpowiedzi:
Oto moja sugestia: użyj mplayer i oggenc połączonych z nazwaną potokiem.
Służy
mplayer
do dekodowania dźwięku. Może odtwarzać wiele różnych formatów audio (i wideo), a także może odtwarzać wiele plików.Służy
oggenc
do kodowania dźwięku w Ogg Vorbis.Aby wyeliminować potrzebę pliku tymczasowego, użyj nazwanego potoku do przesłania danych między koderem a dekoderem.
Umieszczenie tego w skrypcie:
Wyjaśnione:
-really-quiet -slave -nolirc
są opcje, aby wyłączyć wiadomości i uniemożliwić odczytanie klawiatury lub pilota. Dostępne-vc null -vo null
są opcje, aby wyłączyć kodowanie i wyjście wideo.-ao
Opcja kieruje je do wyjścia audio w formacie WAV do nazwanego potoku zapisu.Przejdź do lewej, aby poprawić: Wcześniejsze zakończenie skryptu, jeśli jedno z poleceń nie powiedzie się (użyj
set -e
), ale nadal poprawnie wyczyścisz fifo (przechwytuje niezbędne sygnały).źródło
SoX może obsługiwać wiele formatów audio, w zależności od bibliotek, z którymi jest skompilowany, i może łączyć pliki za pomocą prostego wiersza poleceń
Wierzę, że to działa tylko wtedy, gdy wszystkie źródłowe pliki audio mają tę samą liczbę kanałów, ale nie przetestowałem tego.
O ile mi wiadomo, SoX nie ma obsługi plików .wma, więc konwersja przynajmniej tych plików za pomocą czegoś takiego jak ffmpeg jest prawdopodobnie nieunikniona.
źródło
Chciałbym użyć ffmpeg . Aby przekonwertować wma na ogg vorbis, spróbuj:
lub mp3:
będziesz musiał zainstalować Lame do konwersji mp3.
sudo apt-get install lame libmp3lame0
Cat, a następnie konwersja nie działa dobrze, chociaż można znaleźć wiele odnośników w Internecie, które mówią, że możesz zrobić coś takiego
cat *.wma | ffmpeg -i - -acodec ...
- to nie działa na moim komputerze - przetwarzany jest tylko pierwszy plik. Istnieje kodek „kopiuj” dla ffmpeg, ale nie robi to dużej różnicy.Najpierw konwersja za pomocą ffmpeg, a potem cat * .ogg> output.ogg.
źródło
-acodec libvorbis
aby uniknąć wbudowanego kodera ffmpeg.Aby połączyć i transkodować pliki audio, należy wykonać następujące czynności:
Przetwarzanie w tych krokach wykonuje konkatenację danych WAV, która jest najłatwiejsza w obsłudze i najmniej stratna. A ponieważ i tak chcesz transkodować, będziesz musiał zdekodować do WAV gdzieś w tym procesie; równie dobrze może z tego skorzystać.
Oto kroki, które polecam. Użyjemy
ffmpeg
do dekodowania,sox
konkatenacji ioggenc
kodowania. Możesz zastąpić inne narzędzia dowolnym krokiem -mencoder
a inne działają dobrze jako dekoder, a każde narzędzie, które koduje Ogg, może być użyte jako koder - chociaż myślę, że ciężko będzie ci znaleźć lepsze narzędzie niżsox
dla powiązanie.find *.wma -exec ffmpeg -i {} outfile.{}.wav \;
(działa
ffmpeg -i infile.wma outfile.infile.wma
na każdym pliku WMA w bieżącym katalogu)sox outfile* all.wav
(uwaga
outfile
jest tym samym prefiksem, który podaliśmy w plikach wyjściowych w kroku 1)oggenc all.wav all.ogg
prawdopodobnie chcesz tutaj jakieś ustawienia jakości, ale zapewni to przyzwoitą jakość domyślną. Nie uzyskałem wyników, które mi się podobająffmpeg
, ale możesz go preferować, dlatego poniżej podałem przykład z ffmpeg.Pamiętaj, że
sox
polecenie nie będzie działać poprawnie, chyba że wszystkie pliki WAV mają ten sam format - jeśli na przykład niektóre mają 22 kHz, a inne 44,1 kHz, musisz je zidentyfikowaćsox
za pomocą przełączników wiersza polecenia i określić, który format ma mieć dane wyjściowe. Nie znam żadnych narzędzi wiersza poleceń tak zdolnych jaksox
na etapie konkatenacji. Państwo mogłoby ewentualnie wyjście do surowego formatu PCM w kroku 1 i wykorzystaniacat
do kroku 2, ale to tylko pracę, jeśli są w tym samym formacie, i że trzeba być bardzo specyficzne zarówno dekoder i enkoder, co format, którego powinni się spodziewać.Kodowanie za pomocą ffmpeg: Wiele postów w sieci narzeka, że wbudowany koder Vorbis ffmpeg nie jest zbyt dobry. Jeśli twoja wersja jest zbudowana z obsługą libvorbis, użyj
-acodec libvorbis
zamiast tego. Przykładowy wiersz poleceń:źródło
Nie będzie działać dla plików .ogg, ale mp3wrap może łączyć wiele plików .mp3 w jeden plik. Więc z linii poleceń możesz zrobić coś takiego
Spowoduje to użycie ffmpeg do konwersji wszystkich plików .wma w .mp3, a następnie scalenia wszystkich plików .mp3 w jeden plik.
źródło
Mencoder może łączyć i transkodować wideo bez plików tymczasowych ( prosty przykład tutaj ). Gdzieś nazywa się aconvert, skłaniający mencodera do robienia tylko audio (czego zwykle odmawia). Te dwie rzeczy razem wydają się spełniać twoje wymagania.
Edycja: Znalazłem aconvert.sh. Niestety jest przeznaczony tylko do konwersji jednego pliku audio. Ale i tak oto kod, na wypadek, gdyby ktoś chciał go użyć do stworzenia linii poleceń, która konwertuje wiele plików audio.
źródło
To może nie być dokładnie to, czego potrzebujesz, ale powinno pomóc http://bitzenbytes.com/index.php?name=PNphpBB2&file=viewtopic&t=6538&postdays=0&postorder=asc&sid=f87b364ddbae3ddd9417f5d10fae870c
źródło
Myślałem, że wrzucę swoją odpowiedź. To chyba nie jest najbardziej elegancki sposób, ale spełniło moje oczekiwania.
Etap 1: przeliczyć ogg (zastosowań
mplayer
,pacpl
aruby
wszystkie dostępne są od wolnych repo Debiana I).Krok 2: Połącz pliki OGG
źródło
cat file list… | ffmpeg -f mp3 -i – -acodec copy outfile.mp3
ładnie działało dla mnie z plikami MP3: wyobrażam sobie, że działałoby to również z innymi formatami. Kredyty trafiają do Lindylex .źródło