GNU/Linux >> Znalost Linux >  >> Linux

Linuxový příkaz pro spojení zvukových souborů a jejich výstup do ogg

SoX zvládne velké množství zvukových formátů v závislosti na knihovnách, s nimiž je kompilován, a dokáže zřetězit soubory pomocí jednoduchého příkazového řádku

sox file1.wav file2.mp3 file3.flac outfile.ogg

Věřím, že to funguje pouze v případě, že všechny zdrojové zvukové soubory mají stejný počet kanálů, ale toto jsem netestoval.

Pokud vím, SoX nemá nulovou podporu pro soubory .wma, takže převedení alespoň těchto souborů pomocí něčeho jako ffmpeg first je pravděpodobně nevyhnutelné.

ffmpeg -i infile.wma outfile.wav

Zde je můj návrh:Použijte mplayer a oggenc připojeno k pojmenovanému kanálu.

  • Použijte mplayer k dekódování zvuku. Dokáže přehrávat širokou škálu audio (a video) formátů a také může přehrávat více souborů.

  • Použijte oggenc pro kódování zvuku do Ogg Vorbis.

  • Chcete-li eliminovat potřebu dočasného souboru, použijte pro přenos dat mezi kodérem a dekodérem namedpipet.

Vložení do skriptu:

#!/bin/sh
# Usage: ./combine2ogg destination.ogg source1.wma source2.wma ...
# Requires: mplayer, oggenc
destination="$1"
shift
readpipe="$destination.tmpr"
writepipe="$destination.tmpw"
mkfifo "$readpipe"
mkfifo "$writepipe"
cat "$writepipe" > "$readpipe" &
mplayer -really-quiet -slave -nolirc -vc null -vo null -ao "pcm:fast:file=$writepipe" "[email protected]" &
oggenc --quiet -o "$destination" "$readpipe"
rm -f "$readpipe"
rm -f "$writepipe"

Vysvětleno:

  1. Převezměte název cílového souboru z prvního parametru příkazového řádku.
  2. Odstraňte první parametr příkazového řádku a ponechte pouze názvy zdrojových souborů.
  3. Vytvořte název kanálu, ze kterého bude oggenc číst.
  4. Vytvořte název kanálu, do kterého bude mplayer zapisovat
  5. Vytvořte potrubí.
  6. Použijte cat k nepřetržitému výpisu z kanálu pro zápis do readpipe (to pomůže vyhnout se problémům, při kterých může mplayer ukončit, ale zabrání tomu, aby si oggenc myslel, že je hotovo, když k tomu dojde)
  7. Dekódujte zvuk ze zdrojových souborů pomocí mplayeru. Možnosti -really-quiet -slave -nolirc jsou zde k deaktivaci zpráv a k tomu, aby nečetly klávesnici nebo dálkové ovládání. Možnosti -vc null -vo null existují pro deaktivaci kódování a výstupu videa. -ao volba jej nasměruje k výstupu zvuku ve formátu WAV do pojmenovaného zapisovacího kanálu.
  8. Zatímco běží předchozí příkaz, současně zakódujte z pojmenovaného čtecího kanálu do Ogg pomocí oggenc.
  9. Odstraňte pojmenované kanály.

Věci doleva pro zlepšení:Předčasné ukončení skriptu, pokud některý z příkazů selže (použijte set -e ), ale stále řádně vyčistit fifo (zachyťte potřebné signály).


Použil bych ffmpeg. Chcete-li převést wma na ogg vorbis, zkuste:

ffmpeg -i sample.wma -acodec vorbis -aq 100 sample.ogg

nebo mp3:

ffmpeg -i input.wma -acodec libmp3lame output.mp3

budete muset nainstalovat lame pro převod mp3. sudo apt-get install lame libmp3lame0

Cat, then convert, zdá se, nefunguje dobře, i když na webu můžete najít spoustu odkazů, které říkají, že můžete udělat něco jako cat *.wma | ffmpeg -i - -acodec ... - na mém počítači to nefunguje - zpracuje se pouze první soubor. Existuje kodek 'copy' pro ffmpeg, ale nedělá to velký rozdíl.

Nejprve jsem provedl konverzi pomocí ffmpeg a poté cat *.ogg> output.ogg.


Linux
  1. Linux ls Command - Seznam souborů

  2. 10 příkladů příkazů Linux DU (velikost využití disku souborů a složek)

  3. Příkaz mcopy v Linuxu

  1. Najděte soubory a adresáře v Linuxu pomocí příkazu find

  2. Převádějte zvukové soubory pomocí tohoto všestranného příkazu Linux

  3. Najděte více souborů a přejmenujte je v Linuxu

  1. Najít příkaz v Linuxu (Najít soubory a adresáře)

  2. Příkaz Ls v Linuxu (seznam souborů a adresářů)

  3. Linux – uložené v souborech /dev/pts a můžeme je otevřít?