Jump to content

x[استفسارات]xبخصوص المايك


Recommended Posts

المايك ماتقدر تسجل صوته

لكن...

تقدر اذا كانت لك خبرة عالية نسبياً

لانها تحتاج متصفحات وجافسكربت واتش ام ال

بما ان ام تي ايه اضافت المتصفحات تقدر تسفيد منها

مثلا اقرا الاقتباس هذا

 

Quote

 

The code shown below is copyrighted to Matt Diamond and available for use under MIT license. The original files are here:

Save this files and use


 
  1. (function(window){
  2.  
  3. var WORKER_PATH = 'recorderWorker.js';
  4. var Recorder = function(source, cfg){
  5. var config = cfg || {};
  6. var bufferLen = config.bufferLen || 4096;
  7. this.context = source.context;
  8. this.node = this.context.createJavaScriptNode(bufferLen, 2, 2);
  9. var worker = new Worker(config.workerPath || WORKER_PATH);
  10. worker.postMessage({
  11. command: 'init',
  12. config: {
  13. sampleRate: this.context.sampleRate
  14. }
  15. });
  16. var recording = false,
  17. currCallback;
  18.  
  19. this.node.onaudioprocess = function(e){
  20. if (!recording) return;
  21. worker.postMessage({
  22. command: 'record',
  23. buffer: [
  24. e.inputBuffer.getChannelData(0),
  25. e.inputBuffer.getChannelData(1)
  26. ]
  27. });
  28. }
  29.  
  30. this.configure = function(cfg){
  31. for (var prop in cfg){
  32. if (cfg.hasOwnProperty(prop)){
  33. config[prop] = cfg[prop];
  34. }
  35. }
  36. }
  37.  
  38. this.record = function(){
  39.  
  40. recording = true;
  41. }
  42.  
  43. this.stop = function(){
  44.  
  45. recording = false;
  46. }
  47.  
  48. this.clear = function(){
  49. worker.postMessage({ command: 'clear' });
  50. }
  51.  
  52. this.getBuffer = function(cb) {
  53. currCallback = cb || config.callback;
  54. worker.postMessage({ command: 'getBuffer' })
  55. }
  56.  
  57. this.exportWAV = function(cb, type){
  58. currCallback = cb || config.callback;
  59. type = type || config.type || 'audio/wav';
  60. if (!currCallback) throw new Error('Callback not set');
  61. worker.postMessage({
  62. command: 'exportWAV',
  63. type: type
  64. });
  65. }
  66.  
  67. worker.onmessage = function(e){
  68. var blob = e.data;
  69. currCallback(blob);
  70. }
  71.  
  72. source.connect(this.node);
  73. this.node.connect(this.context.destination); //this should not be necessary
  74. };
  75.  
  76. Recorder.forceDownload = function(blob, filename){
  77. var url = (window.URL || window.webkitURL).createObjectURL(blob);
  78. var link = window.document.createElement('a');
  79. link.href = url;
  80. link.download = filename || 'output.wav';
  81. var click = document.createEvent("Event");
  82. click.initEvent("click", true, true);
  83. link.dispatchEvent(click);
  84. }
  85.  
  86. window.Recorder = Recorder;
  87.  
  88. })(window);
  89.  
  90. //ADDITIONAL JS recorderWorker.js
  91. var recLength = 0,
  92. recBuffersL = [],
  93. recBuffersR = [],
  94. sampleRate;
  95. this.onmessage = function(e){
  96. switch(e.data.command){
  97. case 'init':
  98. init(e.data.config);
  99. break;
  100. case 'record':
  101. record(e.data.buffer);
  102. break;
  103. case 'exportWAV':
  104. exportWAV(e.data.type);
  105. break;
  106. case 'getBuffer':
  107. getBuffer();
  108. break;
  109. case 'clear':
  110. clear();
  111. break;
  112. }
  113. };
  114.  
  115. function init(config){
  116. sampleRate = config.sampleRate;
  117. }
  118.  
  119. function record(inputBuffer){
  120.  
  121. recBuffersL.push(inputBuffer[0]);
  122. recBuffersR.push(inputBuffer[1]);
  123. recLength += inputBuffer[0].length;
  124. }
  125.  
  126. function exportWAV(type){
  127. var bufferL = mergeBuffers(recBuffersL, recLength);
  128. var bufferR = mergeBuffers(recBuffersR, recLength);
  129. var interleaved = interleave(bufferL, bufferR);
  130. var dataview = encodeWAV(interleaved);
  131. var audioBlob = new Blob([dataview], { type: type });
  132.  
  133. this.postMessage(audioBlob);
  134. }
  135.  
  136. function getBuffer() {
  137. var buffers = [];
  138. buffers.push( mergeBuffers(recBuffersL, recLength) );
  139. buffers.push( mergeBuffers(recBuffersR, recLength) );
  140. this.postMessage(buffers);
  141. }
  142.  
  143. function clear(){
  144. recLength = 0;
  145. recBuffersL = [];
  146. recBuffersR = [];
  147. }
  148.  
  149. function mergeBuffers(recBuffers, recLength){
  150. var result = new Float32Array(recLength);
  151. var offset = 0;
  152. for (var i = 0; i < recBuffers.length; i++){
  153. result.set(recBuffers[i], offset);
  154. offset += recBuffers[i].length;
  155. }
  156. return result;
  157. }
  158.  
  159. function interleave(inputL, inputR){
  160. var length = inputL.length + inputR.length;
  161. var result = new Float32Array(length);
  162.  
  163. var index = 0,
  164. inputIndex = 0;
  165.  
  166. while (index < length){
  167. result[index++] = inputL[inputIndex];
  168. result[index++] = inputR[inputIndex];
  169. inputIndex++;
  170. }
  171. return result;
  172. }
  173.  
  174. function floatTo16BitPCM(output, offset, input){
  175. for (var i = 0; i < input.length; i++, offset+=2){
  176. var s = Math.max(-1, Math.min(1, input[i]));
  177. output.setInt16(offset, s < 0 ? s * 0x8000 : s * 0x7FFF, true);
  178. }
  179. }
  180.  
  181. function writeString(view, offset, string){
  182. for (var i = 0; i < string.length; i++){
  183. view.setUint8(offset + i, string.charCodeAt(i));
  184. }
  185. }
  186.  
  187. function encodeWAV(samples){
  188. var buffer = new ArrayBuffer(44 + samples.length * 2);
  189. var view = new DataView(buffer);
  190.  
  191. /* RIFF identifier */
  192. writeString(view, 0, 'RIFF');
  193. /* file length */
  194. view.setUint32(4, 32 + samples.length * 2, true);
  195. /* RIFF type */
  196. writeString(view, 8, 'WAVE');
  197. /* format chunk identifier */
  198. writeString(view, 12, 'fmt ');
  199. /* format chunk length */
  200. view.setUint32(16, 16, true);
  201. /* sample format (raw) */
  202. view.setUint16(20, 1, true);
  203. /* channel count */
  204. view.setUint16(22, 2, true);
  205. /* sample rate */
  206. view.setUint32(24, sampleRate, true);
  207. /* byte rate (sample rate * block align) */
  208. view.setUint32(28, sampleRate * 4, true);
  209. /* block align (channel count * bytes per sample) */
  210. view.setUint16(32, 4, true);
  211. /* bits per sample */
  212. view.setUint16(34, 16, true);
  213. /* data chunk identifier */
  214. writeString(view, 36, 'data');
  215. /* data chunk length */
  216. view.setUint32(40, samples.length * 2, true);
  217.  
  218. floatTo16BitPCM(view, 44, samples);
  219.  
  220. return view;
  221. }

 
  1. <html>
  2. <body>
  3. <audio controls autoplay></audio>
  4. <script type="text/javascript" src="recorder.js"> </script>
  5. <fieldset><legend>RECORD AUDIO</legend>
  6. <input onclick="startRecording()" type="button" value="start recording" />
  7. <input onclick="stopRecording()" type="button" value="stop recording and play" />
  8. </fieldset>
  9. <script>
  10. var onFail = function(e) {
  11. console.log('Rejected!', e);
  12. };
  13.  
  14. var onSuccess = function(s) {
  15. var context = new webkitAudioContext();
  16. var mediaStreamSource = context.createMediaStreamSource(s);
  17. recorder = new Recorder(mediaStreamSource);
  18. recorder.record();
  19.  
  20. // audio loopback
  21. // mediaStreamSource.connect(context.destination);
  22. }
  23.  
  24. window.URL = window.URL || window.webkitURL;
  25. navigator.getUserMedia = navigator.getUserMedia || navigator.webkitGetUserMedia || navigator.mozGetUserMedia || navigator.msGetUserMedia;
  26.  
  27. var recorder;
  28. var audio = document.querySelector('audio');
  29.  
  30. function startRecording() {
  31. if (navigator.getUserMedia) {
  32. navigator.getUserMedia({audio: true}, onSuccess, onFail);
  33. } else {
  34. console.log('navigator.getUserMedia not present');
  35. }
  36. }
  37.  
  38. function stopRecording(

 

طبعا تقدر تسفيد من امكانيات المكتبة وتسجل الصوت

الطريقة انك تسوي متصفح وتحط فيه صفحة تسجيل الصوت( اذا كان متصفح اللعبة نفسه يدعم تسجيل الصوت ) وبعدين تحفظه لكن الحفظ مو امن نسبيا تقدر تشفره وتحفظه وتفك تشفيره وهذي الية العمل

اعرف انك راح تقول صعبة وماتقدر تسوي

  • Like 2
Link to comment
2 hours ago, said:

المايك ماتقدر تسجل صوته

لكن...

تقدر اذا كانت لك خبرة عالية نسبياً

لانها تحتاج متصفحات وجافسكربت واتش ام ال

بما ان ام تي ايه اضافت المتصفحات تقدر تسفيد منها

مثلا اقرا الاقتباس هذا

 

طبعا تقدر تسفيد من امكانيات المكتبة وتسجل الصوت

الطريقة انك تسوي متصفح وتحط فيه صفحة تسجيل الصوت( اذا كان متصفح اللعبة نفسه يدعم تسجيل الصوت ) وبعدين تحفظه لكن الحفظ مو امن نسبيا تقدر تشفره وتحفظه وتفك تشفيره وهذي الية العمل

اعرف انك راح تقول صعبة وماتقدر تسوي

لا بالعكس مافي شي يجيك بالساهل حتى لو صعبه بسعى وراها اما بالنسبه ل 

html

عندي خبره ليست سيئه فيها

يعني اعرف وش الاتربيوت واعرف اتصل بالmysql

وهكذا

لكن اول مره اعرف ان 

mta

ترتبط مع 

html

يعطيك العافيه بسوي عدة محاولات باذن الله لو ما عرفت شي او وقف بوجهي بسالكم وما تقصرون+_+

@</Mr.Tn6eL>

الياس من اول محاوله مهو الخيار الصحيح

لكن كل فشل بدايه لنجاح

لكن نبدا نفهم حبه حبه معليش

اول شي ابي طريقة التسجيل كيف اسوي صفحه على موقع لتسجيل الصوت؟

Edited by Master_MTA
Link to comment
Just now, </Mr.Tn6eL> said:

صحيح لكن ماله شغل في قواعد البيانات  والسيرفر سايد

اها

يب اسف لغبطت بالنسبه لقواعد البيانات

اما بالنسبه للسيرفر سايد كيف ماله شغل وتقلي جب من الصفحه؟

Link to comment
3 minutes ago, said:

صعب عليك؟ ليش تسويه؟

لاني لو عطيك مثال اخذته ولصقته

اذا هو صعب عليه, ليه ما تساعدة وتخليه سهل عليه؟

انا لو اقدر اساعده بساعدة

Edited by Abu-Solo
Link to comment
8 minutes ago, Abu-Solo said:

اذا هو صعب عليه, ليه ما تساعدة وتخليه سهل عليه؟

انا لو اقدر اساعده بساعدة

يبغى مثال على تسجيل الصوت كذا سوى 75% من الكود وثانياً انا مني متأكد من الطريقة 100% عطيه اقتراح فقط 

Link to comment
31 minutes ago, </Mr.Tn6eL> said:

يبغى مثال على تسجيل الصوت كذا سوى 75% من الكود وثانياً انا مني متأكد من الطريقة 100% عطيه اقتراح فقط 

يا غالي انت فهمت غلط

انا فقط ابي مثال لاي شي

يعني اجلب ملف من موقع او اي شي مو شرط صوت كيف

46 minutes ago, </Mr.Tn6eL> said:

صعب عليك؟ ليش تسويه؟

لاني لو عطيك مثال اخذته ولصقته

خلاص اخوي حاول تفهمني وحده وحده ؟

اكيد بحاول لاني ما بوقف على شي واحد

خلاص اخوي جاتني فكره روعه +_=

بحاول اطبقها اذا ما اقدر اخليك تساعدني معليش

بتعبك

كذا الاتش تي ام ال صحيح؟


<!doctype html>
<html>
<head>
	<meta name="viewport" content="width=device-width,initial-scale=1">
	<title>Audio Recorder</title>

	<script src="js/audiodisplay.js"></script>
	<script src="js/recorderjs/recorder.js"></script>
	<script src="js/main.js"></script>
	<style>
	html { overflow: hidden; }
	body { 
		font: 14pt Arial, sans-serif; 
		background: lightgrey;
		display: flex;
		flex-direction: column;
		height: 100vh;
		width: 100%;
		margin: 0 0;
	}
	canvas { 
		display: inline-block; 
		background: #202020; 
		width: 95%;
		height: 45%;
		box-shadow: 0px 0px 10px blue;
	}
	#controls {
		display: flex;
		flex-direction: row;
		align-items: center;
		justify-content: space-around;
		height: 20%;
		width: 100%;
	}
	#record { height: 15vh; }
	#record.recording { 
		background: red;
		background: -webkit-radial-gradient(center, ellipse cover, #ff0000 0%,lightgrey 75%,lightgrey 100%,#7db9e8 100%); 
		background: -moz-radial-gradient(center, ellipse cover, #ff0000 0%,lightgrey 75%,lightgrey 100%,#7db9e8 100%); 
		background: radial-gradient(center, ellipse cover, #ff0000 0%,lightgrey 75%,lightgrey 100%,#7db9e8 100%); 
	}
	#save, #save img { height: 10vh; }
	#save { opacity: 0.25;}
	#save[download] { opacity: 1;}
	#viz {
		height: 80%;
		width: 100%;
		display: flex;
		flex-direction: column;
		justify-content: space-around;
		align-items: center;
	}
	@media (orientation: landscape) {
		body { flex-direction: row;}
		#controls { flex-direction: column; height: 100%; width: 10%;}
		#viz { height: 100%; width: 90%;}
	}

	</style>
</head>
<body>
	<div id="viz">
		<canvas id="analyser" width="1024" height="500"></canvas>
		<canvas id="wavedisplay" width="1024" height="500"></canvas>
	</div>
	<div id="controls">
		<img id="record" src="img/mic128.png" onclick="toggleRecording(this);">
		<a id="save" href="#"><img src="img/save.svg"></a>
	</div>
</body>
</html>

 

+فهمت جزء من كلامك

وهو ان هذي الشركه لها رخصه وهي متاحه

لmta

لكن المشكلة الان في الحفظ كيف احفظ؟

Link to comment
15 hours ago, </Mr.Tn6eL> said:

السكربتات موجودة

  1. 
    <script src="js/audiodisplay.js"></script>
    
    <script src="js/recorderjs/recorder.js"></script>
    
    <script src="js/main.js"></script>
    

يب بحاول اسويها او اجيبها من الانترنت باذن الله لكن المشكله بالحفظ الان؟

Link to comment

mysql مايحتاج

تقدر تحفظها بملف عادي

للحماية md5 استخدم

طبعا بما انك مسوي بصمة صوت للوحة التسجيل تقدر تجيب الصوت وتحقق ان الملفات المحفوظة لها نفس البصمة او لا

Edited by </Mr.Tn6eL>
Link to comment
20 minutes ago, </Mr.Tn6eL> said:

mysql مايحتاج

تقدر تحفظها بملف عادي

للحماية md5 استخدم

طبعا بما انك مسوي بصمة صوت للوحة التسجيل تقدر تجيب الصوت وتحقق ان الملفات المحفوظة لها نفس البصمة او لا

اسف معليش ما فهمت منك اي شي اعذرني صراحه

لكن وش هو

md5

 

Link to comment

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
  • Recently Browsing   0 members

    • No registered users viewing this page.
×
×
  • Create New...