史上最完整的QQ截图工具,1比1,高仿供学习,MulanPSL-2.0协议,Qt实现,可随意移植国产系统UOS/麒麟。仿最新QQ截图,中国码云独家开源, 可以随意修改使用优化源码
2021-12-15 19:01:44 25.02MB QQ截图 Qt截图 Qt录制 Qt画刷
1
如何进行雷达和摄像头多个话题的数据录制:.md
2021-12-13 18:07:11 221B camera ros-multitopic
1
opencv实现四个视频同时的运动目标的追踪,并用点显示出运动轨迹,同时进行屏幕的录制,向本地服务器上传视频
2021-12-13 09:05:10 184.49MB opencv,追踪
1
Html5网页纯JavaScript录制MP3音频 <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> <title>Html5网页JavaScript录制MP3音频</title> <meta charset="utf-8" /> </head> <body> Html5网页JavaScript录制MP3音频 录制 停止 上传 调试信息: [removed][removed] [removed] var recorder = new MP3Recorder({ debug:true, funOk: function () { btnStart.disabled = false; log('初始化成功'); }, funCancel: function (msg) { log(msg); recorder = null; } }); var mp3Blob; function funStart(button) { btnStart.disabled = true; btnStop.disabled = false; btnUpload.disabled = true; log('录音开始...'); recorder.start(); } function funStop(button) { recorder.stop(); btnStart.disabled = false; btnStop.disabled = true; btnUpload.disabled = false; log('录音结束,MP3导出中...'); recorder.getMp3Blob(function (blob) { log('MP3导出成功'); mp3Blob = blob; var url = URL.createObjectURL(mp3Blob); var div = document.createElement('div'); var au = document.createElement('audio'); var hf = document.createElement('a'); au.controls = true; au.src = url; hf.href = url; hf.download = new Date().toISOString() + '.mp3'; hf[removed] = hf.download; div.appendChild(au); div.appendChild(hf); recordingslist.appendChild(div); }); } function log(str) { recordingslist[removed] += str + ''; } function funUpload() { var fd = new FormData(); var mp3Name = encodeURIComponent('audio_recording_' + new Date().getTime() + '.mp3'); fd.append('mp3Name', mp3Name); fd.append('file', mp3Blob); var xhr = new XMLHttpRequest(); xhr.onreadystatechange = function () { if (xhr.readyState == 4 && xhr.status == 200) { recordingslist[removed] += '上传成功:' + mp3Name + ''; } }; xhr.open('POST', 'upload.ashx'); xhr.send(fd); } [removed] </body> </html> [javascript] view plain copy 在CODE上查看代码片派生到我的代码片 (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);
2021-12-12 20:45:36 59KB 录制MP3音频
1
前端调用麦克风实现开启语音,录制语音功能,前端调用麦克风实现开启语音,录制语音功能,前端调用麦克风实现开启语音,录制语音功能
2021-12-12 20:12:20 6KB 前端 录音 语音麦克风
1
这里面有ffmpeg录制的琵琶行歌曲,一共三首,两种采样率,供读者读博客时,好体验
2021-12-10 20:00:20 2.03MB ffmpeg
1
实现了一个录音的demo支持MP3和arm格式录音 MP3格式录制在MainActivity中 ARM格式录制在RecordActivity中,支持后台录音 文件上传在Uploadutil中,支持单个文件和过个文件上传.rar,太多无法一一验证是否可用,程序如果跑不起来需要自调,部分代码功能进行参考学习。
2021-12-10 14:37:51 2.56MB 对讲机录音机
1
一个简单的视频录制 做了简单的录制按钮,暂停录制,可以调整录制视频的大小
2021-12-09 11:15:16 7.06MB vc/mfc 视频录制功能
1
语音聊天,音质还行,压缩比也挺高,60s也就几十k吧,导入工程的时候必须要按照原来的包结构导入,不然录制和播放都有问题,播放完成可以在播放类写回调,原来自带的是没有播放暂停,和播放完成之类的,这个是一边解码一边播放,需要再播放的时候监听,SpeexPlayer在这类里边加上就行
2021-12-08 14:46:49 1.84MB Speex 语音播放 语音聊天
1
采用surfaceView录制视频,采用surfaceView录制视频,采用surfaceView录制视频
2021-12-06 10:43:46 25KB 录制视频
1