1. 需求,amr转成mp3,再将此mp3和其他mp3合成
2. 问题:拼接后的第一段音频可以播放,第二段自动跳过,无法播放。
3. 解决:
3.1 查看各文件属性
# 查看amr转为mp3文件的属性:ffprobe 文件名;
ffprobe amr2mp3.mp3
- 命令格式及参数格式说明
ffprobe [OPTION] file
常用参数说明:• -show_format 显示输入多媒体流的容器格式信息• -show_streams 显示输入多媒体流中每一个流的信息• -show_packets 显示每个packet• -show_frames 显示每个帧• -i input_file 指定输入文件• -print_format json json 形式输出• -of 或者 -print_format default/compact/csv/flat/ini/json/xml
通过 > tests.log 可以将结果输出到指定的文件中。
- amr2mp3.MP3输出为
- 原本就是mp3的输出为:
对比可发现Hz不一致
3.2 解决
- 将amr转mp3是设置Hz和bitrate,将两个文件属性保持一致
ffmpeg -i ./20240201112239.amr -ar 48000 -ac 2 -ab 64k -f mp3 -acodec libmp3lame -y ./20240201112239.mp3
- 合成MP3
ffmpeg -i "concat:20240201112239.mp3|20240201112247.mp3" -acodec copy output3.mp3
-
ffmpeg对以上参数介绍
-i代表输入参数-acodec aac(音频编码用AAC) -ar 设置音频采样频率-ac 设置音频通道数-ab 设定声音比特率-vol <百分比> 设定音量
3.3 网页打开合成视频不能观看第二段音频问题
- 因为声道数不一样导致
- 通过ffprobe -show_frames 20240201112247.mp3查看通道数
- arm转mp3时将通道数ac设置为1即可
ffmpeg -i ./20240201112239.amr -ar 48000 -ac 1 -ab 64k -f mp3 -acodec libmp3lame -y
4. 参考文档
- 中文官网:https://ffmpeg.p2hp.com/ffmpeg.html#Audio-Options
- ffprobe 查看媒体信息
- 使用ffmpeg拼接两端音频第二段自动跳过无法播放的问题解决方案
- FFmpeg命令行工具学习(一):查看媒体文件头信息工具ffprobe
- 【ffmpeg基础】ffmpeg音频编码