타임라인 오프셋을 사용하여 여러 오디오 파일을 하나의 비디오 파일에 포함하는 방법은 무엇입니까?

타임라인 오프셋을 사용하여 여러 오디오 파일을 하나의 비디오 파일에 포함하는 방법은 무엇입니까?

비디오 파일이 있습니다:

screencast.mpg (100sec)

그리고 여러 오디오 파일(파일 이름은 오프셋을 나타냄):

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

해당 파일을 어떻게 결합할 수 있나요?

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

이 작업을 자동으로 수행하는 스크립트를 작성하고 싶습니다. 옵션을
시도했지만 ffmpeg -itsoffset실패했습니다.

답변1

다음 코드에서는 .wav파일이 4800 Hz및 이라고 가정합니다 stereo.
위의 값을 기반으로 침묵의 세그먼트를 구축합니다.
단일 .wav. 비디오와 함께 다중화될 수 있습니다.

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

비디오와 오디오를 함께 다중화하려면 다음 또는 일부 인코딩 변형이 이를 수행해야 합니다.

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

관련 정보