java - 微信公众号开发语言转码问题
黄舟
黄舟 2017-04-17 17:30:38
0
1
717

微信服务号开发,使用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)
Ty80

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

熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板
關於我們 免責聲明 Sitemap
PHP中文網:公益線上PHP培訓,幫助PHP學習者快速成長!