¿Qué herramientas de línea de comandos necesito para concatenar varios archivos de audio y generarlos como un ogg (y / o mp3)?
Si puede proporcionar el comando completo para concatenar y enviar a ogg, sería increíble.
Editar : los archivos de entrada (en mi caso, actualmente) están en wma
formato, pero idealmente deberían ser lo suficientemente flexibles como para admitir una amplia gama de formatos populares.
Edit2 : solo para aclarar, no quiero fusionar todos wma
los correos electrónicos en un determinado directorio, solo quiero concatenar 2 o 3 archivos en uno.
Gracias por las soluciones propuestas, pero todas parecen requerir la creación de archivos temporales, si es posible, me gustaría evitarlo.
linux
command-line
audio
Hasen
fuente
fuente
mktemp -d /tmp/descriptive_name.XXXXXX
para crear un directorio temporal con un nombre informativo, luego procesar todos mis archivos temporales allí, luego rm -r el directorio temporal después.*.wma
en una línea de comandos, ciertamente funcionará para una lista más pequeña como1.wma 2.wma 3.wma 4.wma
(excluyendo 5.wma, 6.wma y 7.wma), simplemente al enumerarlos así (en lugar de usar*.wma
).Respuestas:
Aquí está mi sugerencia: use mplayer y oggenc conectados con una tubería con nombre.
Use
mplayer
para decodificar el audio. Puede reproducir una amplia variedad de formatos de audio (y video), y también puede reproducir múltiples archivos.Use
oggenc
para codificar el audio a Ogg Vorbis.Para eliminar la necesidad de un archivo temporal, use una tubería con nombre para transferir los datos entre el codificador y el decodificador.
Poniendo eso en un script:
Explicado:
-really-quiet -slave -nolirc
Existen opciones para deshabilitar los mensajes y hacer que no lea el teclado o el control remoto.-vc null -vo null
Hay opciones para deshabilitar la codificación y salida de video. La-ao
opción lo dirige a emitir el audio en formato WAV a la tubería de escritura nombrada.Cosas a la izquierda para mejorar: terminar el script antes de tiempo si falla uno de los comandos (usar
set -e
), pero aún así limpiar adecuadamente el fifo (atrapar las señales necesarias).fuente
SoX puede manejar una gran cantidad de formatos de audio, dependiendo de las bibliotecas con las que se compila, y puede concatenar archivos con una simple línea de comando
Creo que esto solo funciona si todos los archivos de audio de origen tienen la misma cantidad de canales, pero no lo he probado.
Hasta donde yo sé, SoX no tiene soporte para archivos .wma, por lo que la conversión de al menos esos archivos con algo como ffmpeg primero es probablemente inevitable.
fuente
Yo usaría ffmpeg . Para convertir wma a ogg vorbis intente:
o mp3:
necesitará lame instalado para la conversión de mp3.
sudo apt-get install lame libmp3lame0
Cat, luego convertir no parece funcionar bien, aunque puedes encontrar muchas referencias en la web que dicen que puedes hacer algo como
cat *.wma | ffmpeg -i - -acodec ...
esto, esto no funciona en mi máquina, solo se procesa el primer archivo. Hay un códec de 'copia' para ffmpeg, pero no hace mucha diferencia.Hacer la conversión con ffmpeg primero, luego cat * .ogg> output.ogg funcionó para mí.
fuente
-acodec libvorbis
para evitar el codificador incorporado de ffmpeg.Para concatenar y transcodificar archivos de audio, este es el flujo de trabajo que desea seguir:
El procesamiento en estos pasos lleva a cabo la concatenación de los datos WAV, que es la más fácil de manejar y la que tiene menos pérdidas. Y dado que de todos modos desea transcodificar, deberá decodificar a WAV en algún lugar del proceso; bien podría aprovecharlo.
Aquí están los pasos que recomiendo. Lo usaremos
ffmpeg
para decodificar,sox
para concatenación yoggenc
para codificar. Puede sustituir otras herramientas por cualquier paso,mencoder
y otras funcionan bien como decodificador, y cualquier herramienta que codifique Ogg puede usarse como codificador, aunque creo que le será difícil encontrar una herramienta mejor quesox
para el concatenación.find *.wma -exec ffmpeg -i {} outfile.{}.wav \;
(esto se ejecuta
ffmpeg -i infile.wma outfile.infile.wma
en cada archivo WMA en el directorio actual)sox outfile* all.wav
(nota
outfile
es el mismo prefijo que le dimos a los archivos de salida en el paso 1)oggenc all.wav all.ogg
probablemente desee algunas configuraciones de calidad aquí, pero esto dará valores predeterminados de calidad decentes. No obtuve resultados que me gustaronffmpeg
, pero es posible que lo prefiera, así que he incluido un ejemplo con ffmpeg a continuación.Tenga en cuenta que el
sox
comando no funcionará correctamente a menos que todos los archivos WAV tengan el mismo formato; si algunos son de 22 kHz y otros de 44.1 kHz, por ejemplo, debe identificarlossox
mediante los interruptores de línea de comandos y especificar qué formato desea que salida. No conozco ninguna herramienta de línea de comandos tan capaz comosox
para el paso de concatenación. Usted podría , posiblemente, la salida a un formato PCM sin procesar en el paso 1 y el usocat
para el paso 2, pero que lo haría sólo funcionan si están en el mismo formato, y que había necesidad de ser muy específicos tanto para el descodificador y codificador en cuanto a lo formato que deben esperar.Codificación con ffmpeg: muchas publicaciones en la red se quejan de que el codificador Vorbis incorporado de ffmpeg no es muy bueno. Si su versión está construida con soporte para libvorbis, use
-acodec libvorbis
en su lugar. Línea de comando de muestra:fuente
No funcionará para archivos .ogg, pero mp3wrap puede concatenar múltiples archivos .mp3 en un solo archivo. Entonces, desde la línea de comando, podrías hacer algo como esto
Esto usará ffmpeg para convertir todos sus archivos .wma a .mp3, y luego combinar todos los archivos .mp3 en un solo archivo.
fuente
Mencoder puede concatenar y transcodificar videos sin archivos temporales ( ejemplo trivial aquí ). Hay un script flotando en algún lugar llamado aconvert que engaña a mencoder para que solo haga audio (que normalmente se niega a hacer). Estas dos cosas combinadas parecen satisfacer sus necesidades.
Editar: encontré aconvert.sh. Desafortunadamente, solo está diseñado para convertir un archivo de audio. Pero aquí está el código de todos modos, en caso de que alguien quiera usarlo para crear una línea de comando que convierta múltiples archivos de audio.
fuente
Puede que esto no sea exactamente lo que necesita, pero debería ayudar http://bitzenbytes.com/index.php?name=PNphpBB2&file=viewtopic&t=6538&postdays=0&postorder=asc&sid=f87b364ddbae3ddd9417f5d10fae870c
fuente
Pensé en tirar mi respuesta. Probablemente esta no sea la forma más elegante, pero hizo lo que quería.
Paso 1: convertir a OGG (usos
mplayer
,pacpl
yruby
, todas disponibles en los repositorios libres Debian I).Paso 2: concatenar archivos ogg
fuente
cat file list… | ffmpeg -f mp3 -i – -acodec copy outfile.mp3
funcionó muy bien para mí con MP3: imagino que también funcionaría con otros formatos. Los créditos van a Lindylex .fuente