GNU/Linux >> Linux Esercitazione >  >> Linux

Comando Linux per concatenare i file audio e inviarli a ogg

SoX può gestire un gran numero di formati audio, a seconda delle librerie su cui è compilato, e può concatenare i file con una semplice riga di comando

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

Credo che funzioni solo se i file audio di origine hanno tutti lo stesso numero di canali, ma non l'ho testato.

Per quanto ne so, SoX non ha alcun supporto per i file .wma, quindi la conversione di almeno quei file con qualcosa come ffmpeg è probabilmente inevitabile.

ffmpeg -i infile.wma outfile.wav

Ecco il mio suggerimento:usa mplayer e oggenc connesso con una named pipe.

  • Usa mplayer per decodificare l'audio. Può riprodurre un'ampia varietà di formati audio (e video) e può anche riprodurre più file.

  • Usa oggenc per codificare l'audio in Ogg Vorbis.

  • Per eliminare la necessità di un file temporaneo, usa una named pipe per trasferire i dati tra codificatore e decodificatore.

Mettendolo in uno script:

#!/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"

Spiegato:

  1. Prendi il nome del file di destinazione dal primo parametro della riga di comando.
  2. Rimuovi il primo parametro della riga di comando, lasciando solo i nomi dei file di origine.
  3. Crea un nome per una pipe da cui leggere oggenc.
  4. Crea un nome per una pipe in cui mplayer possa scrivere
  5. Crea le pipe.
  6. Usa cat per scaricare continuamente il writepipe nel readpipe (questo aiuta a evitare problemi in cui mplayer potrebbe terminare, ma impedisce a oggenc di pensare che sia finito quando ciò accade)
  7. Decodifica l'audio dai file sorgente usando mplayer. Opzioni -really-quiet -slave -nolirc servono per disabilitare i messaggi e per fargli non leggere la tastiera o il telecomando. Opzioni -vc null -vo null sono lì per disabilitare la codifica e l'output video. Il -ao l'opzione lo indirizza all'output dell'audio in formato WAV nella pipe di scrittura denominata.
  8. Mentre il comando precedente è in esecuzione, codifica simultaneamente dalla pipe di lettura denominata in Ogg usando oggenc.
  9. Rimuovi le named pipe.

Cose da migliorare:terminare lo script in anticipo se uno dei comandi fallisce (usa set -e ), ma comunque ripulire correttamente il fifo (intrappolare i segnali necessari).


Userei ffmpeg. Per convertire wma in ogg vorbis prova:

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

o mp3:

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

avrai bisogno di lame installato per la conversione mp3. sudo apt-get install lame libmp3lame0

Cat, quindi convertire non sembra funzionare bene, anche se puoi trovare molti riferimenti sul web che dicono che puoi fare qualcosa come cat *.wma | ffmpeg -i - -acodec ... - questo non funziona sulla mia macchina - viene elaborato solo il primo file. Esiste un codec "copia" per ffmpeg, ma non fa molta differenza.

Fare prima la conversione con ffmpeg, poi cat *.ogg> output.ogg ha funzionato per me.


Linux
  1. Trova file e directory su Linux con il comando find

  2. Converti file audio con questo versatile comando Linux

  3. Linux:archiviato nei file /dev/pts e possiamo aprirli?

  4. 10 Esempi di comandi DU Linux (dimensioni di utilizzo del disco di file e cartelle)

  5. Comando mcopy in Linux

40 “lsof Command” semplice ed efficace nel sistema Linux

Cat Command in Linux:esempi essenziali e avanzati

Spiegazione:input, output e reindirizzamento degli errori in Linux

comando ls in Linux/UNIX

Comando tar di Linux per comprimere ed estrarre file

Comando SCP Linux per trasferire file in modo sicuro