微信服务号开发,使用jssdk上传语音,然后再利用下载接口将语音下载到本地服务器为amr格式,ios无法直接播放,所以在网上找了实现转码功能的代码.
但是在使用ffmpeg转码为MP3格式后,转码后的文件可以在安卓端,
PC端正常使用,在ios上无法正常播放,点击播放,没有声音,这问题该怎么解决呢,还是我转码中有什么问题?
使用java做为开发语言,以下是实现转码功能的代码
/**
* @param nowPath 转码前文件保存路径
* @param afterPath 转码后文件保存路径
* @param choice 是否删除原文件,true为删除
*/
public static void convertVoice(String nowPath,String afterPath,boolean choice) {
File source = new File(nowPath);
File target = new File(afterPath);
AudioAttributes audio = new AudioAttributes();
Encoder encoder = new Encoder();
audio.setCodec("libmp3lame");
EncodingAttributes attrs = new EncodingAttributes();
attrs.setFormat("mp3");
attrs.setAudioAttributes(audio);
try {
encoder.encode(source, target, attrs);
} catch (IllegalArgumentException e) {
//e.printStackTrace();
} catch (InputFormatException e) {
//e.printStackTrace();
} catch (EncoderException e) {
//e.printStackTrace();
}
//如果传入布尔类型为真,删除原文件
if(choice){
source.delete();
}
}
不清楚你指的ios上的播放 是指用的h5的audio标签播放,还是其他的方式。
如果是h5,首先请确保你打开这个播放页面的浏览器支持h5(微信自带的是支持的)。如果依然不能播放,再在MP3文件上面找原因。
ffmpeg 在不同的服务器上面要求不一样,如果你的服务器是linux,请确保你的ffmeg位数和linux位数一样,并且linux内核版本需要在2.6.32及以上。
最后,不建议你删除源文件,ffmpeg转换后的mp3 音质很差,源文件的amr格式,可以保存着,用于群发语音消息或被动回复语音消息。
附上一篇ffmpeg的文章:http://linjie.org/2015/08/06/amr%E6%A0%BC%E5%BC%8F%E8%BD%ACmp3%E6%A0%BC%E5%BC%8F-%E5%AE%8C%E7%BE%8E%E8%A7%A3%E5%86%B3Linux%E4%B8%8B%E8%BD%AC%E6%8D%A20K%E9%97%AE%E9%A2%98/