我想使用 ffmpeg 对用户上传上来的音频文件进行重采样,执行的命令是:
ffmpeg -i 1.mp3 -ac 2 -ar 44100 -y 2.mp3
现在的问题是当用户上传的音频文件采样率小于 44100khz 时,ffmpeg也会转换成 44100khz的音频文件,这将导致音频文件的体积增大不少。
有什么办法可以在命令中判断当音频文件本身的采样率小于 44100khz 时候就使用默认的采样率吗?
我想使用 ffmpeg 对用户上传上来的音频文件进行重采样,执行的命令是:
ffmpeg -i 1.mp3 -ac 2 -ar 44100 -y 2.mp3
现在的问题是当用户上传的音频文件采样率小于 44100khz 时,ffmpeg也会转换成 44100khz的音频文件,这将导致音频文件的体积增大不少。
有什么办法可以在命令中判断当音频文件本身的采样率小于 44100khz 时候就使用默认的采样率吗?
2 回答4.3k 阅读✓ 已解决
4 回答4.3k 阅读
2 回答1.7k 阅读✓ 已解决
4 回答2.5k 阅读✓ 已解决
7 回答1.8k 阅读
1 回答4.1k 阅读✓ 已解决
2 回答2.2k 阅读✓ 已解决
先用
ffprobe
命令(ffmpeg组件之一,通常ffmpeg编译的时候会带有ffmpeg
,ffprobe
,ffplay
三个可执行程序)判断下音频的采样率就行了:如果你期望格式化解析,也可以考虑使用
ffprobe
的格式化输出的功能,以下是JSON格式范例:ffprobe
所有支持的输出格式参考官方文档: https://ffmpeg.org/ffprobe.ht...快速上手可以直接看别人的总结: https://ottverse.com/ffprobe-...
如果你期望将
ffmpeg
作为依赖静态打包到你的发行包里,可能不希望额外增加ffprobe
的包,那你也可以直接用ffmpeg
的输出来判断一次,但是注意必须忽略命令错误,因为这不是ffmpeg的合法执行参数,命令会非零退出码退出:当然你也可以用其他更易用的程序比如
mediainfo
之类的代替,这就需要增加额外的依赖了