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

 MrBatista 发布于 2022-10-29 11:10

微信服务号开发,使用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();
        }
    }
1 个回答
  • 不清楚你指的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/

    2022-10-30 14:01 回答
撰写答案
今天,你开发时遇到什么问题呢?
立即提问
热门标签
PHP1.CN | 中国最专业的PHP中文社区 | PNG素材下载 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有