- 创建一个文本文件,列出要合并的音频文件。例如,如果要合并名为“audio1.mp3”、“audio2.mp3”和“audio3.mp3”的文件,可以在文本文件中写入以下内容:
file 'audio1.mp3'
file 'audio2.mp3'
file 'audio3.mp3'
把
文本文件保存为
input.txt
注意:文件名和路径应该根据实际情况进行修改。
- 使用“concatenate”功能合并音频。使用以下命令:
ffmpeg -f concat -safe 0 -i input.txt -c copy output.mp3
其中,“-f concat”表示使用concat协议进行合并,-safe 0
表示禁用安全检查,-i input.txt
表示输入要合并的文件列表,-c copy
表示复制原始编解码器,output.mp3
表示输出文件名。
完成以上步骤后,多个mp3文件将被合并到一个新的MP3文件中。
注意:在实际使用中,可能需要根据实际情况进行调整。
ref: https://juejin.cn/post/7224125445272076325
--------------------------------------------------------------------------------
基础命令:
1.将xxx.amr转成xxx.mp3:
ffmpeg -i xxx.amr xxx.mp3
2.多个音频拼接为一个:
ffmpeg -i "concat:xxx1.mp3|xxx2.mp3|xxx3.mp3" -acodec copy xxx4.mp3
解释:
-i代表输入参数
contact:xxx1.mp3|xxx2.mp3|xxx3.mp3 代表着需要连接到一起的音频文件
-acodec copy xxx4.mp3 重新编码并复制到新文件xxx4.mp3中
3.多个合成为一个,比如给某用户录音添加背景音乐
ffmpeg -i xxx.mp3 -i xxxbg1.mp3 -i xxxbg2.mp3 -filter_complex amix=inputs=3:duration=first:dropout_transition=2 xxxsave.mp3
解释:
-i代表输入参数
-filter_complex ffmpeg滤镜功能
amix是混合多个音频到单个音频输出
inputs=3代表是3个音频文件,如果更多则代表对应数字
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 输出文件格式
xxxsave.mp3 保存文件
在代码中使用(这里演示的为php的用法):
$amr = $dirname.$filename; 源文件路径
$mp3 = $dirname.$name.'_wgc.mp3'; 保存路径
$command = "/usr/local/bin/ffmpeg -i $amr $mp3";
system($command,$error);
返回结果:
成功返回0,
失败(命令不存在等原因) 返回 非0值
安装方法:
window:
先去官网下载window版的ffmpeg, 把bin目录放到环境变量中,然后cmd,具体使用命令请自行百度
linux(centos),一般情况可以跳过:
安装依赖包
yum install -y automake autoconf libtool gcc gcc-c++
创建编译源码的目录
mkdir ~/ffmpeg_sources
编译&安装
Note: 如果您不需要特定的编码器,可以跳过相关部分,然后删除编译ffmpeg 时相应的./configure选项。例如,如果不需要libvorbis ,可以跳过这一节,然后从安装ffmpeg的部分去掉--enable-libvorbis
yasm:汇编器,新版本的ffmpeg增加了汇编代码
wget http://www.tortall.net/projects/yasm/releases/yasm-1.3.0.tar.gz
tar -xzvf yasm-1.3.0.tar.gz
cd yasm-1.3.0 && ./configure && make && make install
lame:Mp3音频解码
wget http://jaist.dl.sourceforge.net/project/lame/lame/3.99/lame-3.99.5.tar.gz
tar -xzvf lame-3.99.5.tar.gz
cd lame-3.99.5 && ./configure && make && make install
amr支持
wget http://downloads.sourceforge.net/project/opencore-amr/opencore-amr/opencore-amr-0.1.3.tar.gz
tar -xzvf opencore-amr-0.1.3.tar.gz
cd opencore-amr-0.1.3 && ./configure && make && make install
amrnb支持
wget http://www.penguin.cz/~utx/ftp/amr/amrnb-11.0.0.0.tar.bz2
tar -xjvf amrnb-11.0.0.0.tar.bz2
cd amrnb-11.0.0.0 && ./configure && make && make install
amrwb支持
wget http://www.penguin.cz/~utx/ftp/amr/amrwb-11.0.0.0.tar.bz2
tar -xjvf amrwb-11.0.0.0.tar.bz2
cd amrwb-11.0.0.0 && ./configure && make && make install
x264
git clone https://code.videolan.org/videolan/x264.git
// 假设装在 xxx 目录下
./configure --disable-asm --enable-shared --enable-static --prefix=xxx
make && make install
// 然后在 xxx/share 下建一个 x264 目录,把 x264 源码目录下的 x264.pc 拷到 xxx/share/x264 下
export PKG_CONFIG_PATH=xxx/share/x264
如上操作需要注意安装目录哦,如果需要安装其他特定的编码器可以自行百度然后编译ffmpeg时加入相应的./configure选项##
###如果需要安装其他特定的编码器可以自行百度然后编译ffmpeg时加入相应的./configure选项
ffmpeg: 最好去官网下载最新的安装包 FFmpeg 使用最新版注意命令操作名称
wget https://ffmpeg.org/releases/ffmpeg-4.1.tar.bz2
tar -xjvf ffmpeg-4.1.tar.bz2
cd ffmpeg-4.1
./configure --enable-libmp3lame --enable-libopencore-amrnb --enable-libopencore-amrwb --enable-version3 -enable-shared --enable-libx264 --enable-gpl
make && make install
加载配置,最后写入config后,终端运行ffmpeg命令,出现success和已安装的扩展,则运行成功。
ldconfig
附录:
ffmpeg默认安装目录为“/usr/local/lib”,有些64位系统下软件目录则为“/usr/lib64”,编译过程中可能会出现
“ffmpeg: error while loading shared libraries: libmp3lame.so.0: cannot open shared object file: No such file or directory”等类似的错误,
解决办法是建立软链接:
ln -s /usr/local/lib/libmp3lame.so.0.0.0 /usr/lib64/libmp3lame.so.0
No comments:
Post a Comment