Hola, buenas.
Yo suele usar frecuentemente SoX para editar audios desfasados y sincronizarlos con vídeos. A veces requieren de muchas ediciones e interesa poder agilizar o automatizar procesos.
SoX puede cortar un archivo en diferentes partes y después unirlas en uno solo. Así se puede excluir partes de audio (para así adelantar el audio con respecto al vídeo). Ejemplo:
$ sox infile.wav outfile.wav trim 0 =00:01:25 =00:01:25.25
Lo anterior corta el archivo infile.wav primero desde el principio hasta el 1min 25s, luego lo corta desde 1min 25s y 25 centésimas hasta su final. Por último une las dos partes en outfile.wav. Todo automáticamente, en un solo comando. Así de esta manera estoy suprimiendo 25 centésimas del audio atrasado.
Pero cuando lo que quiero es, no quitar audio, sino añadir, para así atrasar el audio (p.e., 1 segundo del mismo duplicándolo) me da este fallo:
$ sox infile.wav outfile.wav trim 0 =00:01:25 =00:01:24
(sox FAIL trim: Position 2 is behind the following position)
Evidentemente, parece que SoX solamente corta de forma consecutiva: no puede empezar a cortar la segunda parte empezando antes del final de la primera (en el ejemplo no puede empezar a cortar la segunda parte desde 1min 24s, ya que la primera termina en 1min 25s). Al intentar cortar así quiero añadir un segundo más de tiempo al audio (duplico un segundo).
Siempre tengo que hacerlo por separado.
La primera parte (trim 0 =00:01:25):
$ sox infile.wav part01.wav trim 0 =00:01:25
la segunda parte (trim =00:01:24 1):
$ sox infile.wav part02.wav trim =00:01:24 =00:01:25
y la tercera parte (trim =00:01:24 {hasta el final}):
$ sox infile.wav part03.wav trim =00:01:24
Finalmente se unen las tres partes:
$ sox part01.wav part02.wav part03.wav finalfile.wav
PERO yo desearía hacer todo en un solo comando (como en $ sox infile.wav outfile.wav trim 0 =00:01:25 =00:01:25.25).
(Sincronizo muchos audio/video)
Gracias por las respuestas. Un saludo.