社区
JavaScript
帖子详情
html5 实现本地录音上传功能
okimaChen
2017-02-13 05:49:10
最近在做一个农业App 有一个问题上报功能, 需要本地录音并且上传。查了好多资料都是水货, 没有干货。 跪求DEMO实例
...全文
989
5
打赏
收藏
html5 实现本地录音上传功能
最近在做一个农业App 有一个问题上报功能, 需要本地录音并且上传。查了好多资料都是水货, 没有干货。 跪求DEMO实例
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
5 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
吕阿晶,
2019-04-26
打赏
举报
回复
(function (exports) {
var MP3Recorder = function (config) {
var recorder = this;
config = config || {};
config.sampleRate = config.sampleRate || 44100;
config.bitRate = config.bitRate || 128;
navigator.getUserMedia = navigator.getUserMedia ||
navigator.webkitGetUserMedia ||
navigator.mozGetUserMedia ||
navigator.msGetUserMedia;
if (navigator.getUserMedia) {
navigator.getUserMedia({
audio: true
},
function (stream) {
var context = new AudioContext(),
microphone = context.createMediaStreamSource(stream),
processor = context.createScriptProcessor(16384, 1, 1),//bufferSize大小,输入channel数,输出channel数
mp3ReceiveSuccess, currentErrorCallback;
config.sampleRate = context.sampleRate;
processor.onaudioprocess = function (event) {
//边录音边转换
var array = event.inputBuffer.getChannelData(0);
realTimeWorker.postMessage({ cmd: 'encode', buf: array });
};
var realTimeWorker = new Worker('js/worker-realtime.js');
realTimeWorker.onmessage = function (e) {
switch (e.data.cmd) {
case 'init':
log('初始化成功');
if (config.funOk) {
config.funOk();
}
break;
case 'end':
log('MP3大小:', e.data.buf.length);
if (mp3ReceiveSuccess) {
mp3ReceiveSuccess(new Blob(e.data.buf, { type: 'audio/mp3' }));
}
break;
case 'error':
log('错误信息:' + e.data.error);
if (currentErrorCallback) {
currentErrorCallback(e.data.error);
}
break;
default:
log('未知信息:', e.data);
}
};
recorder.getMp3Blob = function (onSuccess, onError) {
currentErrorCallback = onError;
mp3ReceiveSuccess = onSuccess;
realTimeWorker.postMessage({ cmd: 'finish' });
};
recorder.start = function () {
if (processor && microphone) {
microphone.connect(processor);
processor.connect(context.destination);
log('开始录音');
}
}
recorder.stop = function () {
if (processor && microphone) {
microphone.disconnect();
processor.disconnect();
log('录音结束');
}
}
realTimeWorker.postMessage({
cmd: 'init',
config: {
sampleRate: config.sampleRate,
bitRate: config.bitRate
}
});
},
function (error) {
var msg;
switch (error.code || error.name) {
case 'PERMISSION_DENIED':
case 'PermissionDeniedError':
msg = '用户拒绝访问麦客风';
break;
case 'NOT_SUPPORTED_ERROR':
case 'NotSupportedError':
msg = '浏览器不支持麦客风';
break;
case 'MANDATORY_UNSATISFIED_ERROR':
case 'MandatoryUnsatisfiedError':
msg = '找不到麦客风设备';
break;
default:
msg = '无法打开麦克风,异常信息:' + (error.code || error.name);
break;
}
if (config.funCancel) {
config.funCancel(msg);
}
});
} else {
if (config.funCancel) {
config.funCancel('当前浏览器不支持录音功能');
}
}
function log(str) {
if (config.debug) {
console.log(str);
}
}
}
exports.MP3Recorder = MP3Recorder;
})(window);
cn00439805
2017-02-25
打赏
举报
回复
用第三方的腾讯云上传即可, 一步到位,后台都帮你做了,附demo,前台只需加载uploaderh5V3.js <!doctype html> <html lang="zh-cn"> <head> <title>测试腾讯云上传</title> <meta charset="utf-8"> <meta name="viewport" content="width=device-width,initial-scale=1,maximum-scale=1,user-scalable=no,minimal-ui"/> </head> <body> <div class="con"> <a href="javascript:;" id="upBtnId" class="a_demo_three">上传</a> </div> <script src="/uploaderh5V3.js"></script> <script> var ErrorCode = qcVideo.get('ErrorCode'); ErrorCode.UN_SUPPORT_BROWSE !== qcVideo.uploader.initUGC( { upBtnId: "upBtnId", getSignature: function(argObj, callback){ var url = "http://172.17.0.57:8080/openapi/vod/sign"; $.ajax({ url:url, dataType:"json", data:{ f:encodeURIComponent(argObj.f), ft:encodeURIComponent(argObj.ft), fs:encodeURIComponent(argObj.fs) }, success:function(data){ if(data.code === "success"){ callback(data.data.sign); } else{ console.log("接口出现错误"); } } }); } ,after_sha_start_upload: true ,sha1js_path: 'http://www.chuangleren.com/sha/calculator_worker_sha1.js' } , { onFileUpdate: function (args) { console.log(args); }, onFileStatus: function (info) { console.log('各状态总数' , info); }, onFilterError: function (args) { console.log('message:' + args.message + (args.solution ? (';solution==' + args.solution) : '')); } } ); </script> </body> </html>
okimaChen
2017-02-24
打赏
举报
回复
这个是什么额
离子漂浮物
2017-02-17
打赏
举报
回复
context = new (window.webkitAudioContext || window.AudioContext)(); 帮助你,楼主。
文修
2017-02-14
打赏
举报
回复
楼主你好, 恰好我之前做过类似的功能,加我QQ754475551,我把Demo发给你
h5 如何
录音
保存
上传
_
html5
网页
录音
、试听以及
上传
在 long long ago,需要做一个网页
录音
并
上传
的
功能
,网上千万般寻觅,看遍 flash 和
html5
实现
,终于找到了一个很好的库。今天突然想起,谨以此记录,方便日后再用。这个
录音
插件支持
录音
、停止、回放、
上传
等,基本一条龙。关于使用方法,插件的demo 和说明里面都已经很清楚。下面大概记录一下我的使用过程(时间太久远,有些实在记不清了)。。写在开头的提醒:此插件支持大部分已
实现
ge...
HTML5
微信jssdk
录音
播放语音的方法
HTML5
微信jssdk
录音
播放语音的方法 需要注意的2个问题 1 就是一定要判断1秒内
录音
都不算 ps:太短不能
录音
2
录音
超过1分钟 会发现正在
录音
突然消失 所以要写wx.onVoiceRecordEnd 这个是是1分钟会自动出发 然后写
上传
数据 前端代码如下 $('.luyin').on('touchstart',function () { wx
Hybrid
html5
如何
实现
录音
功能
转载原博客地址:(html)前端移动端有什么较好的
录音
及
上传
的方案 描述: 前端移动端有什么较好的
录音
及
上传
的方案?解决方案1:标准的
html5
在pc端和安卓可以
实现
基本
功能
,ios暂时不支持
录音
。想要做的比较好目前需要中间层调用原生的接口,比如Cordova、微信、reactnative和weex解决方案2:如果是微信可以用jssdk,内嵌的估计是底层的东西,毕竟H5只是运行在浏览器里解决方
html中怎么
录音
,
HTML5
怎么
实现
录音
和播放
功能
满意答案oneoldpig2017.11.16采纳率:40%等级:12已帮助:10859人js文件:[javascript] view plain copy(function (window) {//兼容window.URL = window.URL || window.webkitURL;navigator.getUserMedia = navigator.getUserMedia ||...
html5
微信
录音
文件,微信H5
录音
实现
HTML5
原生是提供了音频
录音
的支持的,用到的是这个API--getUserMedia,然而……感人的是,iOS Safari & Safari 直接不支持,面对着庞大的水果系用户,这个方案显然行不通。值得庆幸的是微信的JSSDK提供了音频接口的支持,所以要在微信的H5页面中
实现
录音
等
功能
,直接使用微信的API即可,兼容性也是妥妥的。下面说说在微信中使用
录音
接口的具体
实现
和其中的一些坑。前...
JavaScript
87,987
社区成员
224,684
社区内容
发帖
与我相关
我的任务
JavaScript
Web 开发 JavaScript
复制链接
扫一扫
分享
社区描述
Web 开发 JavaScript
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章