FFMPEG常用命令 音视频合并

简介: FFMPEG常用命令 音视频合并

       本文将用几个实例,介绍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:输出文件覆盖

相关文章
|
4月前
|
Web App开发 5G Linux
FFmpeg开发笔记(四十四)毕业设计可做的几个拉满颜值的音视频APP
一年一度的毕业季来临,计算机专业的毕业设计尤为重要,不仅关乎学业评价还积累实战经验。选择紧跟5G技术趋势的音视频APP作为课题极具吸引力。这里推荐三类应用:一是融合WebRTC技术实现视频通话的即时通信APP;二是具备在线直播功能的短视频分享平台,涉及RTMP/SRT等直播技术;三是具有自定义动画特效及卡拉OK歌词字幕功能的视频剪辑工具。这些项目不仅技术含量高,也符合市场需求,是毕业设计的理想选择。
93 6
FFmpeg开发笔记(四十四)毕业设计可做的几个拉满颜值的音视频APP
|
3月前
|
Android开发 计算机视觉 C++
FFmpeg开发笔记(五十一)适合学习研究的几个音视频开源框架
音视频编程对许多程序员来说是一片充满挑战的领域,但借助如OpenCV、LearnOpenGL、FFmpeg、OBS Studio及VLC media player等强大的开源工具,可以降低入门门槛。这些框架不仅覆盖了计算机视觉、图形渲染,还包括多媒体处理与直播技术,通过多种编程语言如Python、C++的应用,使得音视频开发更为便捷。例如,OpenCV支持跨平台的视觉应用开发,FFmpeg则擅长多媒体文件的处理与转换,而VLC media player则是验证音视频文件质量的有效工具。
104 0
FFmpeg开发笔记(五十一)适合学习研究的几个音视频开源框架
|
3月前
用ffmpeg提取合并音视频
用ffmpeg提取合并音视频
|
5月前
|
达摩院 语音技术 异构计算
语音识别-免费开源的语音转文本软件Whisper的本地搭建详细教程,python版本是3.805,ffmpeg是专门处理音视频的,ffmpeg的下载链接,现在要求安装python和ffmpeg
语音识别-免费开源的语音转文本软件Whisper的本地搭建详细教程,python版本是3.805,ffmpeg是专门处理音视频的,ffmpeg的下载链接,现在要求安装python和ffmpeg
|
6月前
|
存储 编解码 Linux
rodert教你学FFmpeg实战这一篇就够了 - 音视频处理入门篇
rodert教你学FFmpeg实战这一篇就够了 - 音视频处理入门篇
68 1
|
6月前
|
Linux 开发工具
Linux下视频截取命令 使用【ffmpeg】使用
Linux下视频截取命令 使用【ffmpeg】使用
59 1
|
5月前
|
C#
C#进程调用FFmpeg操作音视频
因为公司需要对音视频做一些操作,比如说对系统用户的发音和背景视频进行合成,以及对多个音视频之间进行合成,还有就是在指定的源背景音频中按照对应的规则在视频的多少秒钟内插入一段客户发音等一些复杂的音视频操作。本篇文章主要讲解的是使用C#进程(Process)调用FFmpeg.exe进行视频合并、音频合并、音频与视频合并成视频这几个简单的音视频操作。
|
7月前
|
存储 缓存 调度
FFmpeg开发笔记(十九)FFmpeg开启两个线程分别解码音视频
《FFmpeg开发实战》第10章示例playsync.c在处理音频流和视频流交错的文件时能实现同步播放,但对于分开存储的格式,会出现先播放全部声音再快速播放视频的问题。为解决此问题,需改造程序,增加音频处理线程和队列,以及相关锁,先将音视频帧读入缓存,再按时间戳播放。改造包括声明新变量、初始化线程和锁、修改数据包处理方式等。代码修改后在playsync2.c中,编译运行成功,控制台显示日志,SDL窗口播放视频并同步音频,证明改造有效。
120 0
FFmpeg开发笔记(十九)FFmpeg开启两个线程分别解码音视频
|
2月前
|
Linux 开发工具 Android开发
FFmpeg开发笔记(六十)使用国产的ijkplayer播放器观看网络视频
ijkplayer是由Bilibili基于FFmpeg3.4研发并开源的播放器,适用于Android和iOS,支持本地视频及网络流媒体播放。本文详细介绍如何在新版Android Studio中导入并使用ijkplayer库,包括Gradle版本及配置更新、导入编译好的so文件以及添加直播链接播放代码等步骤,帮助开发者顺利进行App调试与开发。更多FFmpeg开发知识可参考《FFmpeg开发实战:从零基础到短视频上线》。
144 2
FFmpeg开发笔记(六十)使用国产的ijkplayer播放器观看网络视频
|
2月前
|
编解码 语音技术 内存技术
FFmpeg开发笔记(五十八)把32位采样的MP3转换为16位的PCM音频
《FFmpeg开发实战:从零基础到短视频上线》一书中的“5.1.2 把音频流保存为PCM文件”章节介绍了将媒体文件中的音频流转换为原始PCM音频的方法。示例代码直接保存解码后的PCM数据,保留了原始音频的采样频率、声道数量和采样位数。但在实际应用中,有时需要特定规格的PCM音频。例如,某些语音识别引擎仅接受16位PCM数据,而标准MP3音频通常采用32位采样,因此需将32位MP3音频转换为16位PCM音频。
74 0
FFmpeg开发笔记(五十八)把32位采样的MP3转换为16位的PCM音频