วิธีการฝังหลายไฟล์เสียงลงในไฟล์วิดีโอหนึ่งไฟล์ที่มีไทม์ไลน์ชดเชย


1

ฉันมีไฟล์วิดีโอ:

screencast.mpg (100sec)

และไฟล์เสียงหลายไฟล์ (ชื่อไฟล์บ่งบอกถึง offset):

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

ฉันจะรวมไฟล์เหล่านั้นเข้าด้วยกันได้อย่างไร:

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

ฉันต้องการเขียนสคริปต์เพื่อทำงานนี้โดยอัตโนมัติ
ฉันลองffmpeg -itsoffsetตัวเลือกแล้ว แต่ล้มเหลว

คำตอบ:


1

รหัสต่อไปนี้อนุมานว่าคุณ.wavไฟล์และ4800 Hz มันสร้างส่วนของความเงียบขึ้นอยู่กับค่าข้างต้น มันผลิตเดียว ซึ่งสามารถ muxed กับวิดีโอ 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

หากต้องการ mux วิดีโอและเสียงเข้าด้วยกันชุดการเข้ารหัสนี้หรือบางตัวควรทำ:

ffmpeg -i "100sec.mpg" \
       -i "100sec.wav" \
          -vcodec copy \
 -y "100sec.muxed.mpg"
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.