前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Base64转amr音频文件

Base64转amr音频文件

原创
作者头像
用户10280106
发布2022-12-23 09:53:52
1.7K0
发布2022-12-23 09:53:52
举报
文章被收录于专栏:点滴代码点滴代码
代码语言:javascript
复制
function dataURL2Audio(fname, base64Str, callback) { //base64转amr文件
    var mv = base64Str || '';
    if (typeof callback != 'function' || mv == '') return;
    fname = fname || ((new Date()).getTime());
    fname = (fname.indexOf('.amr') == fname.length - 4) ? fname : fname + '.amr';
    var audioName = '_doc/audio/' + fname;
    plus.io.requestFileSystem(plus.io.PRIVATE_DOC, function (fs) {
        fs.root.getFile(audioName, {
            create: true
        }, function (entry) {
            var fullPath = entry.fullPath;
            if (mui.os.android) {
                var Str = plus.android.importClass("java.lang.String");
                var FileOutputStream = plus.android.importClass("java.io.FileOutputStream");
                try {
                    var myatb, bstr;
                    var out = new FileOutputStream(fullPath);
                    var mystr = atob(mv);
                    var mlen = mystr.length;
                    var sstr = '';
                    //分块处理传入base64串
                    while (mlen > 0) {
                        mysub = mystr.substr(0, 1000);
                        mystr = mystr.substr(1000);
                        mlen = mystr.length;
                        myatb = new Str(mysub);
                        bstr = myatb.getBytes("ISO8859-1");
                        out.write(bstr);
                    }
                    out.close();
                    callback && callback(entry); // 回调
                } catch (ex) {
                    console.log('写入失败');
                }
            } else if (mui.os.ios) {
                var NSData = plus.ios.importClass('NSData');
                var nsData = new NSData();
                nsData = nsData.initWithBase64EncodedStringoptions(mv, 0);
                if (nsData) {
                    nsData.plusCallMethod({
                        writeToFile: fullPath,
                        atomically: true
                    });
                    plus.ios.deleteObject(nsData);
                }
                callback && callback(entry); // 回调
            }
        })
    })
}

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档