社区
JavaScript
帖子详情
html5 实现本地录音上传功能
okimaChen
2017-02-13 05:49:10
最近在做一个农业App 有一个问题上报功能, 需要本地录音并且上传。查了好多资料都是水货, 没有干货。 跪求DEMO实例
...全文
982
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
网页
录音
、试听以及
上传
本文记录了一种使用
HTML5
实现
网页
录音
、试听、停止及
上传
到服务器的完整流程,包括如何检测浏览器支持、引入
录音
库、
录音
操作、试听、停止以及将
录音
文件保存到服务器的方法。适合需要在网页中集成
录音
功能
的开发者参考。
HTML5
微信jssdk
录音
播放语音的方法
本文介绍了在
HTML5
中使用微信jssdk进行
录音
和播放语音的
实现
方法,包括处理
录音
时间限制、
上传
语音到服务器及后端处理核心代码。需要注意的是,
录音
必须至少1秒,且不能超过1分钟,否则会出现问题。前端和后端的关键代码已给出。
Hybrid
html5
如何
实现
录音
功能
本文探讨了前端移动端
录音
及
上传
的多种方案,包括
HTML5
的基本
功能
、Cordova等中间层技术、微信JSSDK、以及纯前端和服务器端
录音
的方法。由于浏览器兼容性和iOS限制,推荐使用混合应用开发框架。
html中怎么
录音
,
HTML5
怎么
实现
录音
和播放
功能
本文介绍了如何使用
HTML5
的getUserMedia接口和AudioContext API
实现
网页
录音
和播放
功能
。通过创建AudioContext实例,连接声音源,设置音量节点,并使用ScriptProcessor节点进行声音缓存和压缩。最后,通过encodeWAV方法将
录音
数据转换为WAV文件,
实现
录音
文件的获取、播放和
上传
。
html5
微信
录音
文件,微信H5
录音
实现
本文介绍了如何在微信H5页面中
实现
录音
功能
,包括使用微信JSSDK的
录音
接口,如startRecord、stopRecord等,以及处理长按
录音
、
上传
语音到微信服务器并保存到自己的服务器的方法。同时,文章提到了授权、资源有效期和格式转换等问题。
JavaScript
87,990
社区成员
224,684
社区内容
发帖
与我相关
我的任务
JavaScript
Web 开发 JavaScript
复制链接
扫一扫
分享
社区描述
Web 开发 JavaScript
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章