t***@sina.com
t***@sina.com
  • 发布:2017-12-13 22:25
  • 更新:2019-03-12 15:49
  • 阅读:7793

完美解决ios网络音频播放问题,解决音频自动播放问题,解决网络音频自动播放问题

分类:HTML5+

潘顺昌 2017-12-13

```javascript  

受到ios中的提示  
iOS - 4.3+ (支持): 支持"aac"、"aiff"、"mp3"、"mid"、"wav"、"amr"等格式文件。 暂不支持播放网络路径音频。  

那么就是说播放本地视频是可以的,因此只要把音频下载到ios不就行了么?哈哈,微信里不是很多文件都保存在本地么,说干就干  

代码如下:  

```javascript  
/**  
 * 下载mp3文件到本地  
 * @mp3Id id  
 * @loadUrl 网络路径  
 * @relativePath 自己存储的相对路径  
 */  
function downloadMp3toLocalByUrl(mp3Id,loadUrl,relativePath)  
{  
    /*联网下载mp3*/  
    //创建下载任务  
    var dtask = plus.downloader.createDownload(loadUrl, {}, function(d, status) {  
        if (status == 200) {  
            //下载成功并播放音频  
            console.log("下载成功");  
            var mp3src = getImgFromLocal(mp3Id, d.filename);  
            if ( plus.audio == undefined ) {  
                mui.toast( "音频播放器加载失败." );  
            }  
            console.log("mp3 download dir="+mp3src+",mp3="+d.filename);  
            p = plus.audio.createPlayer(d.filename);  
            p.play( function () {  
                p.stop();//播放完停止  
                console.log( "Audio play success!" );   
            }, function ( e ) {  
                console.log( "Audio play error: " + e.message );   
            } );   
        }   
        else  
        {  
            //下载失败,需删除本地临时文件,否则下次进来时会检查到图片已存在  
            console.log("下载失败status=" + status+"=="+relativePath);  
            //dtask.abort();//文档描述:取消下载,删除临时文件;(但经测试临时文件没有删除,故使用delFile()方法删除);  
            if (relativePath!=null)  
            {  
                delFile(relativePath);  
            }  
        }  
    });  
    //启动下载任务  
    dtask.start();  
}  

/*删除指定文件*/  
function delFile(relativePath) {  
    plus.io.resolveLocalFileSystemURL(relativePath, function(entry) {  
        entry.remove(function(entry) {  
            console.log("文件删除成功==" + relativePath);  
    }, function(e) {  
        console.log("文件删除失败=" + relativePath);  
        });  
    });  
}  

 /*获取本地mp3文件最终路径完整地址  
 * mp3Id mp3文件id  
 * relativePath 本地相对路径 例如:"_downloads/demo.mp3"  
 */  
function getImgFromLocal(mp3Id, relativePath) {  
    //本地相对路径("_downloads/logo.jpg")转成SD卡绝对路径("/storage/emulated/0/Android/data/io.dcloud.HBuilder/.HBuilder/downloads/logo.jpg");  
    var sd_path = plus.io.convertLocalFileSystemURL(relativePath);  
    //返回路径全地址  
   return sd_path;  
}

测试代码如下:
startPlay("http://bos.nj.bpc.baidu.com/v1/developer/73bbf22c-7511-4e87-bdc8-d8d0b5b0c47e.mp3");

4 关注 分享
移动达人 HelloBug 1***@qq.com s***@163.com

要回复文章请先登录注册

7***@qq.com

7***@qq.com

用这个方法,ios会返回 播放音频文件失败:文件不存在,http://ask.dcloud.net.cn/article/282,请问要怎么解决呢
2019-03-12 15:49