Кодирование аудио и материалов в локальную папку - PullRequest
0 голосов
/ 27 мая 2020

Я попытался записать аудиофайл и экспортировал его в локальную папку. Я использовал WebAudioRecorder. js API. В первый раз я попытался закодировать этот звук и отправить его в локальную папку, но он не воспроизводился. Затем я попробовал приведенный ниже код, и он совсем не работал. Вот мой сценарий js:

<script>
    var recorder, gumStream;
    function toggleRecording() {
        if (recorder && recorder.state == "recording") {
            recorder.stop();
            gumStream.getAudioTracks()[0].stop();

        } else {
            navigator.mediaDevices.getUserMedia({
                audio: true
            }).then(function(stream) {
                gumStream = stream;
                recorder = new MediaRecorder(stream);
                recorder.ondataavailable = function(e) {
                var blobDataInWebaFormat = e.data; // .weba = webaudio; subset of webm
                var b = new Blob([blobDataInWebaFormat], { type : 'audio/wav; codecs=0' });
                var dataUrl = URL.createObjectURL(b);
                //console.log(dataUrl);
                var filename =new Date().toISOString();
                var fd=new FormData();
                fd.append("audio",b,filename);
                var link = document.createElement("a");
                link.href = dataUrl;
                link.download = 'audio' + new Date().getTime() + '.wav';
                link.innerHTML = "download file";
                document.body.appendChild(link);
                var reader = new FileReader();
                reader.readAsDataURL(b);
                reader.onloadend = function() {
                var base64data = reader.result;
                //console.log(base64data);
                var xhr=new XMLHttpRequest();

                xhr.onload=function(e) {
                  alert(e.target.responseText);
                       if(this.readyState === 4) {
                           console.log("Server returned: ",e.target.responseText);
                       }
                };

                var fd=new FormData();
                fd.append("audio",base64data);
                xhr.open("POST","upload_wav.php",true);
                xhr.send(fd);
                };
                return;}

                recorder.start();
            });
        }
    }

    $(document).ready(function(){
      $("#recordButton").click(function(){
         toggleRecording()
      })
    })
    </script>

, а вот мой php сценарий:

<?php
if(isset($_POST['execute'])){
define('UPLOAD_DIR', 'C:/AppServ/www/solrengine/vocal_search/');
$audio = str_replace('data:audio/wav;base64,', '', $audio);
$data = base64_decode($audio);
$file = UPLOAD_DIR . uniqid() . '.wav';
$success = file_put_contents($file, $data);
echo $success;
}
 ?>

, а здесь моя html часть:

   <h1 id="brand">micro <img  src="images/electronics.png" alt=""></h1>
     <div class="container">
      <form  method="POST">
        <div id="micro" style="text-align: center;">
         <img id="recordButton" src="images/radio.png" alt="">
         <button type="submit" class="btn btn-info" name="execute"> Goo </button>
       </div><br>
     </form>
    </div>

Как я могу это получить?

...