Como incorporar vários arquivos de áudio em um arquivo de vídeo com deslocamento na linha do tempo?

Como incorporar vários arquivos de áudio em um arquivo de vídeo com deslocamento na linha do tempo?

Eu tenho um arquivo de vídeo:

screencast.mpg (100sec)

E vários arquivos de áudio (o nome do arquivo indica o deslocamento):

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

Como posso combinar esses arquivos:

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

Quero escrever um script para fazer esse trabalho automaticamente.
Eu tentei ffmpeg -itsoffseta opção, mas falhei.

Responder1

O código a seguir pressupõe que seus .wavarquivos são 4800 Hze stereo.
Constrói segmentos de silêncio, com base nos valores acima.
Produz um único arquivo .wav. que pode ser mixado com o 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 misturar o vídeo e o áudio, esta ou alguma variante de codificação deve servir:

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

informação relacionada