【ffmpeg】使用 FFmpeg 给视频文件添加旁白和字幕

一、视频添加旁白

添加旁白需要将音频文件和视频文件的声音叠加在一起,可以使用 FFmpeg 的 amix 过滤器,以下是一个示例命令

ffmpeg -i a.mp4 -i a.mp3 -filter_complex "[0:a]volume=0.5[a0];[1:a]volume=3[a1];[a0][a1]amix=inputs=2:duration=first[aout]" -map 0:v -map "[aout]" -c:v copy -c:a aac -strict experimental output.mp4

 

二、视频添加字幕

参数说明:

subtitles:字幕文件

Fontsize:字幕大小

PrimaryColour:字幕颜色

MarginV:具体屏幕下方距离

ffmpeg -i output.mp4 -vf "subtitles=a.srt:force_style='Fontsize=12,PrimaryColour=&H00FF0000,MarginV=50'" -c:a copy output1.mp4

 

三、nodejs(fluent-ffmpeg)实现同时添加旁白和字幕

// 旁白语音的背景音乐音量降低
let lowAudioTime = '';
lowAudioTime = `:enable='between(t,0,13)'`;

ffmpeg()
  .input(waterFile)
  .input(audioFile) // 添加音频文件
  .complexFilter([
    `[0:a]volume=0.2${lowAudioTime}[a0]`,
    '[1:a]volume=4[a1]',
    '[a0][a1]amix=inputs=2:duration=first[aout]'
  ])
  .outputOptions([
    '-vf',
    `subtitles=${srtFile}:force_style='Fontsize=10,PrimaryColour=&H00FFFFFF,MarginV=50,MarginR=120,MarginL=120'`,
    '-map 0:v:0', 
    '-map [aout]'
  ])
  .output(outFile)
  .on("progress", (progress) => {
    console.log('视频字幕,进度: ' + progress.percent + '% done');
  })
  .on("end", () => {
    console.log("视频视频字幕完成"); 
    resolve();
  })
  .run();

 

posted @ 2023-12-20 21:27  蓝色星辰1993  阅读(1395)  评论(0编辑  收藏  举报