ffmpeg操作mp3合并、截取、混合、格式转换

2020-12-24 10:40:01

参考地址 ffmpeg 多个音频合并 截取 拆分

1 多个mp3文件合并成一个mp3文件

一种方法是连接到一起

ffmpeg64.exe -i "concat:123.mp3|124.mp3" -acodec copy output.mp3


(我用的这个方法并美誉合并成功,不知道为啥,我是这么解决的)

/usr/local/ffmpeg/bin/ffmpeg -i 1.mp3 -i 2.mp3 -filter_complex '[0:0] [1:0] concat=n=2:v=0:a=1 [a]' -map [a] new.mp3

其中 concat=n=2 中的 2是指输入的mp3数量。

解释:-i代表输入参数

          contact:123.mp3|124.mp3代表着需要连接到一起的音频文件

           -acodec copy output.mp3 重新编码并复制到新文件中

另一种方法是混合到一起

ffmpeg64.exe -i 124.mp3 -i 123.mp3 -filter_complex amix=inputs=2:duration=first:dropout_transition=2 -f mp3 remix.mp3

解释:-i代表输入参数

           -filter_complex ffmpeg滤镜功能,非常强大,详细请查看文档

           amix是混合多个音频到单个音频输出

           inputs=2代表是2个音频文件,如果更多则代表对应数字

           duration 确定最终输出文件的长度

               longest(最长)|shortest(最短)|first(第一个文件)

            dropout_transition

The transition time, in seconds, for volume renormalization when an input stream ends. The default value is 2 seconds.

            -f mp3  输出文件格式

 

2 音频文件截取指定时间部分

 

毫秒级别的截取 00:00:00.11

如果音频非常小,可能会失败,可以先拼接一个长的,再截取的小一点


ffmpeg64.exe -i 124.mp3 -vn -acodec copy -ss 00:00:00 -t 00:01:32 output.mp3

解释:-i代表输入参数

          -acodec copy output.mp3 重新编码并复制到新文件中

           -ss 开始截取的时间点

           -t 截取音频时间长度

           

3 音频文件格式转换

 

ffmpeg64.exe -i null.ape -ar 44100 -ac 2 -ab 16k -vol 50 -f mp3 null.mp3

解释:-i代表输入参数

           -acodec aac(音频编码用AAC) 

          -ar 设置音频采样频率

          -ac  设置音频通道数

          -ab 设定声音比特率

           -vol <百分比> 设定音量

 


  • 2020-11-08 08:31:51

    meteor在不同端口启动服务

    当没有任何参数时,run是默认行为,在幕后,它3000端口开启node.js服务器实例,同时开启监听3001端口的MongoDB服务

  • 2020-11-11 15:05:39

    nuxt如何在其它js文件中使用store

    在新建的js文件中想用store里面的数据,比如token想在封装的axios里面,请求头里面去使用,亦或者通过app的JS接口获取token并存储在store里面。我们都知道如何在vue中如何使用。

  • 2020-11-12 14:01:46

    使用postMessage来实现父子通信跨域

    1.子向父,子postMessage,父监听message; 2.父向子,父postMessage,子监听message; 3.测试发现,子向父postMessage的时候,源可以写为‘*’,父向子postMessage的时候,源需要写成子的源,(也就是子页面的协议+主机号+端口) 测试代码部分:

  • 2020-11-12 14:24:39

    Object.entries()

    Object.entries()方法返回一个给定对象自身可枚举属性的键值对数组,其排列与使用 for...in 循环遍历该对象时返回的顺序一致(区别在于 for-in 循环还会枚举原型链中的属性)