在工作中,有一个业务,公众号,和自建的IM进行打通。
在语音文件上翻车了,找了很多资料,Google也找了,分组后基本上就一个答案,那就是 ffmpeg 这个类库
但是这个类库在.net core 环境未linux下不起作用,没有亲自尝试,但是看到需要exe文件,应该没差了基本上凉了
找了很多种方法,最后无奈想到了一个方法。
1.晚上有命令可以让 amr 文件转成mp3
2.看到 ffmpeg方法的时候发现,其实他也是调用另外一个可执行类库来完成工作的
3..net core也可以执行shell命令的
综上得出解决方法,.net core 调用命令,让系统取转成我们需要的文件,如下是具体操作
1. 完成shell环境
我的参考是这个地址
https://www.cnblogs.com/balyd/p/4802600.html
不同系统安装方法不一样,我用的是第二个sox ,如果是centos的话自行百度这个东西吧
sox test.amr test.mp3
这行命令看得懂吧,空格划分,有三个信息,第一个是命令,第二个是amr文件,第三个是转成后的文件
可以正常执行第一步骤就算完成了
2.开始编码
// amr文件的全路径
var amrFile= Path.GetFullPath("a.amr", AppContext.BaseDirectory);
// 新文件mp3的全路径
var newFilePath = amrFile.Replace(ext, ".mp3");
//创建一个ProcessStartInfo对象 使用系统shell 指定命令和参数 设置标准输出
var psi = new ProcessStartInfo("sox", $" {amrFile} {newFilePath}");
//启动
using var proc = Process.Start(psi);
proc.Close();
好的,祝你没有我的烦恼,这东西找了 我好多个小时