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

发布时间 2023-12-20 21:32:41作者: 蓝色星辰1993

一、视频添加旁白

添加旁白需要将音频文件和视频文件的声音叠加在一起,可以使用 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)实现同时添加旁白和字幕

ffmpeg()
.input(waterFile)
.input(audioFile) 
.complexFilter([
  '[0:a]volume=0.5[a0]',
  '[1:a]volume=3[a1]',
  '[a0][a1]amix=inputs=2:duration=first[aout]'
])
.outputOptions([
  '-vf',
  `subtitles=${srtFile}:force_style='Fontsize=12,PrimaryColour=&H00FFFFFF,MarginV=50'`,
  '-map 0:v:0', 
  '-map [aout]'
])
.output(outFile)
.on("progress", (progress) => {
  console.log('视频字幕,进度: ' + progress.percent + '% done');
})
.on("end", () => {
  console.log("视频视频字幕完成"); 
})
.run();