社区
JavaScript
帖子详情
html5 实现本地录音上传功能
okimaChen
2017-02-13 05:49:10
最近在做一个农业App 有一个问题上报功能, 需要本地录音并且上传。查了好多资料都是水货, 没有干货。 跪求DEMO实例
...全文
964
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发给你
HTML5
视频
上传
(包含
html5
自带拍照,录像,音频,附件)
在实际开发中,你需要根据提供的代码示例,结合自己的后端接口,搭建一个完整的视频、拍照、录像和
录音
上传
的前端应用。确保考虑文件大小限制、错误处理、预览
功能
、多文件
上传
等实际需求。 总的来说,
HTML5
的...
Jrecorder前端HTML JS
实现
录音
总的来说,Jrecorder是一个强大且兼容性良好的前端
录音
解决方案,它利用
HTML5
的特性,为Web开发者提供了一种简单的方式来
实现
用户在浏览器内的
录音
功能
。无论你是新手还是经验丰富的开发者,掌握Jrecorder都能帮助你...
php+flash 网页
录音
并
上传
7. **兼容性和替代方案**:由于Flash逐渐被淘汰,开发者也可以考虑使用
HTML5
的Web Audio API和MediaRecorder API来
实现
录音
功能
,这样可以提供更好的跨平台支持和更好的用户体验。 总的来说,"php+flash 网页
录音
并...
ASP.NET MVC 在线
录音
录像(音视频录制并
上传
)
10. **前端交互**:用户界面(UI)的
实现
也至关重要,需要使用HTML、CSS和JavaScript来创建一个友好的交互式
录音
录像组件,并向用户显示录制和
上传
状态。 总之,
实现
ASP.NET MVC中的在线
录音
录像
功能
,需要结合...
VB网络编程实例
◆ 171.htm 开发网络应用的5个技巧 ◆ 172.htm 利用RAS调用在VB6.0中
实现
拨号上网 ◆ 173.htm 利用VB提取HTML文件中的EMAIL地址 ◆ 174.htm 枚举出局域网上所有网络资源 ◆ 175.htm 面向...
JavaScript
87,995
社区成员
224,693
社区内容
发帖
与我相关
我的任务
JavaScript
Web 开发 JavaScript
复制链接
扫一扫
分享
社区描述
Web 开发 JavaScript
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章