问小白 wenxiaobai
资讯
历史
科技
环境与自然
成长
游戏
财经
文学与艺术
美食
健康
家居
文化
情感
汽车
三农
军事
旅行
运动
教育
生活
星座命理

FFMPEG常用命令 音视频合并

创作时间:
作者:
@小白创作中心

FFMPEG常用命令 音视频合并

引用
CSDN
1.
https://m.blog.csdn.net/xian0710830114/article/details/130921272

本文将用几个实例,介绍ffmpeg命令的综合使用,主要涉及音频处理、视频处理和音视频合成。

一、音频合并

1.获取音频时长

ffprobe -i 1.mp3 -show_entries format=duration -v quiet -of csv="p=0"

2.合并两段音频

ffmpeg -i 1.mp3 -i 2.mp3 -filter_complex amerge -ac 2 -c:a libmp3lame -q:a 4 output.mp3

参数解释:

  • -ac:设定声音的channel数
  • -c:a:指定音频编码器
  • libmp3lame:mp3音频编码器
  • -q:a:表示输出的音频质量,一般是1到5之间(1 为质量最高)

3.合并音频插入空白

合并三段音频,在每段之间加入一秒的空白。

ffmpeg -i 1.mp3 -i 2.mp3 -i 3.mp3 -filter_complex "[1:a]adelay=1000[a1];[2:a]adelay=1000[a2];[0:a][a1][a2]concat=n=3:v=0:a=1" output.mp3

参数解释:

  • [1:a]adelay=1000[a1]:第2段素材的音频(如果是视频就是[1:v]),延迟1000毫秒播放,并且赋值为a1,供后面使用。同理定义了a2。
  • [0:a][a1][a2]concat=n=3:将第一段素材的音频、a1和a2合并,n=3表示三段。
  • v=0:a=1:不要声音,只要音频。

二、视频加背景图

将横版视频放在一个1080x1920的竖版背景前面,上下距离一样;然后把一个透明背景的字幕图片房子爱最上面,实现如下效果:

ffmpeg -i 1.mp4 -i bg.jpg -i font.png -filter_complex "[0:v]scale=1080:-1[video];[1:v][video]overlay=x=0:y=(1920-h)/2[v1];[v1][2:v]overlay" -codec:a copy  output1.mp4

参数解释:

  • [0:v]scale=1080:-1[video]:第一个素材的只取视频,按比例resize成宽1080,输出赋值为video。
  • [1:v][video]overlay=x=0:y=(1920-h)/2[v1]:将第video放在背景图上层,位置是x,y,输出赋值为v1.
  • [v1][2:v]overlay:将第三个素材的视频放在v1上层。
  • -codec:a copy:指定声音的编码器,需使用能力集列表中的名称(编码器设定为”copy“表示不进行编解码)。

三、音视频合成

1.保留视频声音

原视频有声音,在保持原视频声音不变的情况下,添加背景音,并让背景音音量变小。

ffmpeg -i 1.mp4 -i 1.mp3 -filter_complex "[1:a]volume=0.3[a1];[0:a][a1]amix=inputs=2:duration=first[a]" -map 0:v -map "[a]" -c:v copy -c:a aac -y output.mp4

参数解释:

  • [1:a]volume=0.3[a1]:第二个素材的音频音量取30%,输出赋值为a1;
  • [0:a][a1]amix=inputs=2:duration=first[a]:第一个素材(视频)的声音和背景音混合,时长为第一个素材的声音,输出赋值a;
  • -map 0:v:视频流式拼接,这里只有一个视频;
  • -map "[a]":音频流式拼接,这里取刚刚输出的a;
  • -c:v copy:视频编码不变;
  • -c:a aac :音频编码acc。

2.不保留视频声音

去掉原视频的声音,重新配音,并且声音前增加1秒的空白。

ffmpeg -i 1.mp4 -i 1.mp3 -filter_complex "[0:v]trim=0:10.1[v];[1:a]adelay=1000[a];[v][a]concat=n=1:v=1:a=1" -c:v libx264 -c:a aac -movflags +faststart output.mp4

参数说明:

  • [0:v]trim=0:10.1[v]:视频取1-10.1秒,这里单位是秒,输出赋值v;
  • [1:a]adelay=1000[a]:音频演示1000毫秒播放,这里单位是毫秒;
  • [v][a]concat=n=1:v=1:a=1:音视频合在一起,输出需要视频和音频;
  • -c:v libx264:视频编码使用x264;
  • -c:a aac:音频编码acc;
  • -movflags +faststart :这个参数跟mp4的元数据有关,设为faststart表示会将moov移动到mdat的前面,在线播放的时候会稍微快一些。

四、合并视频

将多个视频进行合并,可以先生成视频列表文件,如merge_video.txt,内容下:

file '1.mp4'
file '2.mp4'
file '3.mp4'
file '4.mp4'

然后使用这个文件进行视频合并:

ffmpeg.exe -f concat -safe 0 -i merge_video.txt -c copy -y merge_video.mp4

参数说明:

  • -f concat:表示拼接操作;
  • -safe 0:标记文件安全检查的级别为0,即不考虑安全因素;
  • -c copy:编码不变;
  • -y:输出文件覆盖
© 2023 北京元石科技有限公司 ◎ 京公网安备 11010802042949号