社区
JavaScript
帖子详情
html5 实现本地录音上传功能
okimaChen
2017-02-13 05:49:10
最近在做一个农业App 有一个问题上报功能, 需要本地录音并且上传。查了好多资料都是水货, 没有干货。 跪求DEMO实例
...全文
1003
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
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 ||...
Hybrid
html5
如何
实现
录音
功能
转载原博客地址:(html)前端移动端有什么较好的
录音
及
上传
的方案 描述: 前端移动端有什么较好的
录音
及
上传
的方案?解决方案1:标准的
html5
在pc端和安卓可以
实现
基本
功能
,ios暂时不支持
录音
。想要做的比较好目前需要中间层调用原生的接口,比如Cordova、微信、reactnative和weex解决方案2:如果是微信可以用jssdk,内嵌的估计是底层的东西,毕竟H5只是运行在浏览器里解决方
Recorder.js
HTML5
+JS
实现
网页
录音
最近项目有个需求,想要通过网页形式
实现
录音
功能
,经过多方查阅资料。总结可得,目前IOS系统不支持此
功能
,一部分浏览器和安卓支持。我们在网页端
实现
播放音频/视频现在已经没那么难了,但是有的奇怪需求,比如想要你
实现
在网页上
录音
/录视频/拍照,这些就没那么轻而易举了。 1. 经过查阅得知,以前进行媒体音视频得录制,通常是使用Flash和Sliverlight等等进行的。如果想进行网页
录音
/录视频,M...
JavaScript
87,984
社区成员
224,681
社区内容
发帖
与我相关
我的任务
JavaScript
Web 开发 JavaScript
复制链接
扫一扫
分享
社区描述
Web 开发 JavaScript
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章