2011-03-11 19 views
13

Estoy tratando de crear un mp3 silencioso/vacío de (x) segundos usando la línea de comando. ¡Una tarea sencilla, pensé!Crear un mp3 silencioso desde la línea de comandos

Parece que lame es capaz de hacer algo así, pero no puedo encontrar nada que me lleve a conseguirlo.

¿Alguien ha podido hacer algo como esto?

+1

En un mundo ideal, podría hacer esto directamente con ffmpeg y no necesitar usar otra biblioteca. – Stephen

Respuesta

9

Descargo de responsabilidad: Este es un enfoque orientado a Unix (aunque sox es multiplataforma y también debería hacerlo en Windows).

  • Tendrá sox - "el cuchillo [multiplataforma] Suizo de los programas de procesamiento de sonido".

  • Este script envoltorio perl, le ayuda a generar ningún segundos de silencio: http://www.boutell.com/scripts/silence.html

    $ perl silence.pl 3 silence.wav 
    

silence.pl es bastante corto, por lo que incluimos aquí, ya que es el ámbito público:

#!/usr/bin/perl 

$seconds = $ARGV[0]; 
$file = $ARGV[1]; 
if ((!$seconds) || ($file eq "")) { 
     die "Usage: silence seconds newfilename.wav\n"; 
} 

open(OUT, ">/tmp/$$.dat"); 
print OUT "; SampleRate 8000\n"; 
$samples = $seconds * 8000; 
for ($i = 0; ($i < $samples); $i++) { 
     print OUT $i/8000, "\t0\n"; 
} 
close(OUT); 

# Note: I threw away some arguments, which appear in the original 
# script, and which did not worked (on OS X at least) 
system("sox /tmp/$$.dat -c 2 -r 44100 -e signed-integer $file"); 
unlink("/tmp/$$.dat"); 

Entonces solo lame él:

$ lame silence.wav silence.mp3 
+0

Esta es una solución perfecta SoX se ve interesante, pero más que probablemente lo que estoy buscando. Logré guardar silencio usando http://sourceforge.net/projects/wavi-avi2wav/. Esto tiene un silent.exe pre construido que será más fácil de poner en uso. – Stephen

+0

Muy bueno, el script incluso puede tomar el valor decimal como entrada. Para mi requerimiento, necesitaba un wav muy corto (casi vacío): silence.pl 0.1 silence.wav –

2

Evitar la molestia de crear un encabezado WAV, y vamos mango cojo un archivo RAW:?

entorno
dd if=/dev/zero bs=1M count=? | lame -r - - > silence.mp3 

= 2 da un segundo archivo 11 (@ 44 kHz estándar, etc ... parámetros).

Nota: esto se probó en Unix; Entiendo que también hay dd y cojo para Windows.

+1

dd if =/dev/zero bs = 1 count = 100 | lame -s 8 -r --bitwidth 8 --signed -b 8 - a.mp3 – agsamek

18

Puede usar este comando.

ffmpeg -f lavfi -i anullsrc=r=44100:cl=mono -t <seconds> -q:a 9 -acodec libmp3lame out.mp3 

Cambio <seconds> a un número que indica el número de segundos de silencio que necesite (por ejemplo, 60 creará un minuto).

+0

¡Funciona como un encanto! ¡¡Gracias hombre!! – JRichardsz

Cuestiones relacionadas