¿Cómo incrustar varios archivos de audio en un archivo de vídeo con desplazamiento de la línea de tiempo?

¿Cómo incrustar varios archivos de audio en un archivo de vídeo con desplazamiento de la línea de tiempo?

Tengo un archivo de vídeo:

screencast.mpg (100sec)

Y varios archivos de audio (el nombre del archivo indica desplazamiento):

10.wav (10sec)
30.wav (5sec)
45.wav (8sec)

¿Cómo puedo combinar esos archivos?

V:||||||||||||||||||||||||||||||||||||||||||||||||||
A:    .....     ...     ....

Quiero escribir un script para hacer este trabajo automáticamente.
Probé ffmpeg -itsoffsetla opción, pero fallé.

Respuesta1

El siguiente código supone que sus .wavarchivos son 4800 Hzy stereo.
Construye segmentos de silencio, a partir de los valores anteriores.
Produce un solo .wav. que se puede mezclar con el vídeo.

nrChannels=2
sampleRate=48000

rawSilence() {
  local nrSeconds=$1
  local sampleRate=$2
  local nrChannels=${3:-2}
  ffmpeg -acodec pcm_s16le \
         -ar $sampleRate \
         -ac $nrChannels \
         -f s16le \
         -i <(dd if=/dev/zero bs=$((sampleRate*2*nrChannels)) count=$nrSeconds) \
         -f s16le -
}

{ 
  rawSilence 10 $sampleRate $nrChannels 
  cat "10.wav" |ffmpeg -f wav -i - -f s16le -
  rawSilence 10 $sampleRate $nrChannels
  cat "30.wav" |ffmpeg -f wav -i - -f s16le -
  rawSilence 10 $sampleRate $nrChannels
  cat "45.wav" |ffmpeg -f wav -i - -f s16le -
  rawSilence 47 $sampleRate $nrChannels
} |
  ffmpeg -acodec pcm_s16le \
         -ar $sampleRate \
         -ac $nrChannels \
         -f s16le \
         -i - \
         -f wav -y 100sec.wav

Para mezclar el vídeo y el audio, esta o alguna variante de codificación debería hacerlo:

ffmpeg -i "100sec.mpg" \
       -i "100sec.wav" \
          -vcodec copy \
 -y "100sec.muxed.mpg"

información relacionada