zoukankan      html  css  js  c++  java
  • 钉钉小程序中苹果手机/iphone/IOS端音频无法播放和音频每次播放速度都加快的原因及解决方法

    问题:

    1. 钉钉小程序的IOS端无法播放后台接口返回来的音频文件,但是文件在安卓端和模拟器端均可播放;

    2. 每次点击播放,音频播放速度加快一倍,导致音频无法听清;

    原因:

    1. IOS端的dd.getBackgroundAudioManager()接口创建的音频管理器,manager.play()方法只能播放钉钉返回的临时的临时文件路径;

    2. 没有实例化音频的title和播放速度playbackRate。

    解决方法:
    第一个问题提交了工单询问客服,客服的回答是这样的:

    方法是在播放之前,需要先将接口返回的文件下载,然后传入播放接口才能播放。

    第二个问题在客服给我回复之前就解决了:

    方法是实例化音频的title和播放速度playbackRate,最好也每次播放都重新实例化manager对象(记得手机端测试的时候一定要清除缓存关闭钉钉APP再重新启动!!!!);

    附上代码片段:

        // 点击播放
        onInternalAudioTap() {
          dd.downloadFile({                           // 走dd下载接口
            url: detail.cYyms,                        // 参数url是从接口返回的音频链接detail.cYyms
            success: ({ filePath }) => {              // 下载成功后返回音频文件的临时路径filePath 
              let manager = dd.getBackgroundAudioManager();          、// 重新实例化manager对象    
              manager.src = filePath;                 // 将临时路径的值赋给manager的src 
              manager.playbackRate = 1;               // 指定播放速度为 1 
              manager.title = '';                     // 给每个音频重新赋值title, 防止IOS端重复调用play()使播放速度累加
              manager.play();                         // 播放
            },
            fail: (res) => {
              dd.showToast({
                content: res.errorMessage || res.error,
                type: "fail",
                duration: 3000
              })
            }
          })
        }
    

    后记

    小程序的文档到底能不能写完整一点.......

    播放速度playbackRate这个字段完全没有在dd.getBackgroundAudioManager()这个接口的文档里出现过,还是我找微信小程序的文档才找到

    而且也没有任何提示说IOS端的语音播放需要下载成临时文件, 麻了

  • 相关阅读:
    centos7 双网卡设置(先NAT和后桥接)
    centos7 nginx搭建及其反向代理
    centos7 出现please make your choice from 1 to enter..
    centos7 keepalive双机热备~
    多线程【转】
    多进程的基本使用--multiprocessing 【转】
    http--一次完整的HTTP事务是怎样一个过程?【转】
    【转】Python操作MongoDB
    文件操作
    Log4j 日志操作包配置详解
  • 原文地址:https://www.cnblogs.com/lzb1234/p/13535094.html
Copyright © 2011-2022 走看看