2020年更新,这是4前写的了文章了,今天找东西,登录账号发现一堆几年前的评论,真抱歉,我没回复你们
如果有需要,尽量参考评论中的解决办法吧. https://blog.csdn.net/dadiyang/article/details/85003240
我没有确认过是否可行,大致看了下应该是可以的. 毕竟如果让现在的我再实现音视频格式转换,我会直接使用ffmpeg
以下原文
------------------------
最近一直都在做微信相关的项目
有个需求是上传录音,然后再播放
实现方法是,调用微信接口,录音,上传到微信服务器,当用户保存的时候,从微信服务器下载下来,然后再转码成为MP3格式,在页面使用audio标签播放
原因,ios和安卓的录音格式不同,而audio标签不能直接播放ios的录音文件(或者ios无法播放amr格式文件,忘记了),为了实现兼容性,将音频转码后,再给用户查看播放
使用jave实现,上网找了很久,很久前也就想弄的,一直没实现,今天找到了一直想关文章看了下,调试了下,发现可以用,就想记下来
上网下载jave-1.0.2.jar ,一般该jar包只能在window下正常工作,要在linux下工作,需要替换改jar里面的文件,如果以后忘记了,百度下就好
java代码,
package convertVoice;
import it.sauronsoftware.jave.AudioAttributes;
import it.sauronsoftware.jave.Encoder;
import it.sauronsoftware.jave.EncoderException;
import it.sauronsoftware.jave.EncodingAttributes;
import it.sauronsoftware.jave.InputFormatException;
import java.io.File;
/**
* @exception
* @author zs
* @version 2016年1月31日 下午6:12:20
* @description
* @version 1.0
*/
public class convertVoice {
public static void main(String[] args) throws Exception {
change();
}
public static void change() {
File source = new File("E:\\gtGEHFWPLYxlsJmjaMJJYwuvvQxh6qHcZxzV-FuvCtkWM9XFimee0L2Zi9sCepqS.amr");
File target = new File("D:\\1381370093615.mp3");
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();
}
}
}
只需要传入两个路径即可,另外,运行时会报错,但是生成的文件照样可以正常运行,报错原因,amr编码未设置,不懂怎么设置,就不设置了.
转码前,34KB的amr文件,转码后,386KB的MP3文件 →_→ 我都不知道说什么,不理他,反正不是我用的功能
html代码
我试了下,这样写就行了,在页面点击播放,就能播放,但是进度条无法调戏,点不到,只有开始/暂停按钮,音量调节按钮
弄了两个jar,一个window版本的,一个是linux版本的,但是发现linux版本的jar在window下也能正常工作,想把它们两个也传上来的,但是不知道怎么传,不理它