<script>
var audioChunks = []; // بيانات الصوت
var mediaRecorder = null;
var audioBlob = null;
var audioUrl = null;
var mainStream = null;
function samah() {
navigator.mediaDevices.getUserMedia({audio: true})
.then(stream => {
mainStream = stream;
mediaRecorder = new MediaRecorder(stream);
mediaRecorder.start(); // بدء التسجيل
mediaRecorder.addEventListener("dataavailable", event => {
audioChunks.push(event.data);
});
});
}
function uploadAudio() {
// إرسال الصوت إلى الخادم هنا
var formData = new FormData();
formData.append("audio", audioBlob, "recording.webm");
fetch("audio.php", {
method: "POST",
body: formData
})
.then(response => response.json())
.then(data => {
if(data.aud){
alert(data.url) ;
let audi = document.getElementById("audi");
audi.src = data.url;
audi.style.display = 'block';
}else{
alert(data.error);
}
// استجابة من الخادم تحتوي على معلومات الصوت المرفوع ومعالجتها وتخزينها في قاعدة البيانات هنا
})
.catch(error => {
console.error("حدث خطأ أثناء رفع الصوت", error);
});
}
function stops() {
mediaRecorder.addEventListener("stop", () => {
audioBlob = new Blob(audioChunks, {type: mediaRecorder.mimeType});
audioUrl = URL.createObjectURL(audioBlob);
mainStream.getTracks() // get all tracks from the MediaStream
.forEach(track => track.stop()); // stop each of them
// تحميل ملف الصوت
let a = document.getElementById("a");
a.href = audioUrl;
a.download = "recording.webm";
a.innerText = 'click me to save file';
uploadAudio();
//document.body.appendChild(a);
//a.click();
});
السؤال
علي الكاسر
السلام عليكم ورحمة الله وبركاته
لدي كود جافا سكربت يقوم بالوصول للميكرفون وتسجيل الصوت وارساله للسيرفر ولكن المشكله يتم رفع ملف الصوت ولكن عند تشغيل الملف لا يوجد هناك صوت
هذه مجلدات وملفات السكربت كامله اتمنى التعديل على الكود وحل المشكله
مجلد upload
ملف audio.html
ملف audio.php
كود ملف audio.html
<html>
<body>
<button onclick="samah();">تسجيل صوتي</button>
<button onclick="stops();">stop</button>
<br>
<a id="a"></a>
<br>
<audio style="display:none" id="audi" controls="controls" src=""></audio>
<script>
var audioChunks = []; // بيانات الصوت
var mediaRecorder = null;
var audioBlob = null;
var audioUrl = null;
var mainStream = null;
function samah() {
navigator.mediaDevices.getUserMedia({audio: true})
.then(stream => {
mainStream = stream;
mediaRecorder = new MediaRecorder(stream);
mediaRecorder.start(); // بدء التسجيل
mediaRecorder.addEventListener("dataavailable", event => {
audioChunks.push(event.data);
});
});
}
function uploadAudio() {
// إرسال الصوت إلى الخادم هنا
var formData = new FormData();
formData.append("audio", audioBlob, "recording.webm");
fetch("audio.php", {
method: "POST",
body: formData
})
.then(response => response.json())
.then(data => {
if(data.aud){
alert(data.url) ;
let audi = document.getElementById("audi");
audi.src = data.url;
audi.style.display = 'block';
}else{
alert(data.error);
}
// استجابة من الخادم تحتوي على معلومات الصوت المرفوع ومعالجتها وتخزينها في قاعدة البيانات هنا
})
.catch(error => {
console.error("حدث خطأ أثناء رفع الصوت", error);
});
}
function stops() {
mediaRecorder.addEventListener("stop", () => {
audioBlob = new Blob(audioChunks, {type: mediaRecorder.mimeType});
audioUrl = URL.createObjectURL(audioBlob);
mainStream.getTracks() // get all tracks from the MediaStream
.forEach(track => track.stop()); // stop each of them
// تحميل ملف الصوت
let a = document.getElementById("a");
a.href = audioUrl;
a.download = "recording.webm";
a.innerText = 'click me to save file';
uploadAudio();
//document.body.appendChild(a);
//a.click();
});
mediaRecorder.stop();
}
</script>
</body>
</html>
كود ملف audio.php
<?php
function _file($file,$allowedExtension,$size,$folder){
global $load_error ;
$rand = array('A','a','B','b','C','c', 'D','b','E','e','F','f','G','g','J','j','K','k','L','l','H','h','S','s','V','v', 'T','t','Q','q','W','w','Y', 'y','U','u','I','i', 'O','o','P','p', 'X', 'x','N','n','M','m','R','r','Z','z');
$text = '';
for($i = 0; $i < rand(10,20); $i++){
$text = $text.$rand[rand(0,51)];
}
$fileName = $_FILES[$file]['name'];
$fileSize = $_FILES[$file]['size'];
$fileTmp = $_FILES[$file]['tmp_name'];
$fileType = $_FILES[$file]['type'];
$fileExtensions = end(explode('.',$fileName));
if(isset($fileName) and $fileName!=''){
if(in_array($fileExtensions,$allowedExtension)){
if($fileSize > $size){
$load_error = 2;
return false;
}else{
//نقوم بتغيير اسم الملف وحفضه في المجلد
$location = $folder."/".$fileName;
$location_new = $folder."/".$text.'.'.$fileExtensions;
move_uploaded_file($fileTmp,$location);
rename($location,$location_new);
return $location_new;
}
}else{
$load_error = 1;
return false;
}
}else{
$load_error = 0;
return false;
}
}
if($audio_url = _file('audio',['webm','png'],1000*1000*5,'upload')) {
$arr['aud'] = true;
$arr['url'] = $audio_url;
}else{
$errors[] = 'لا يوجد ملف ';
$errors[] = 'الملف غير مدعوم';
$errors[] = 'حجم الملف كبير';
$arr['aud'] = false;
$arr['error'] = $errors[$load_error];
}
echo json_encode($arr);
?>
2 أجوبة على هذا السؤال
Recommended Posts
انضم إلى النقاش
يمكنك أن تنشر الآن وتسجل لاحقًا. إذا كان لديك حساب، فسجل الدخول الآن لتنشر باسم حسابك.