搜索

首页  >  问答  >  正文

java - 微信公众号开发语言转码问题

微信服务号开发,使用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();
        }
    }
黄舟黄舟2767 天前720

全部回复(1)我来回复

  • PHP中文网

    PHP中文网2017-04-17 17:32:38

    不清楚你指的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/

    回复
    0
  • 取消回复