Вопрос по javascript – Запись аудио html5

9

Можно ли записывать звук с помощью html5? Я скачал последнюю версию Chrome для канареек и использую следующий код:

navigator.getUserMedia = navigator.webkitGetUserMedia || navigator.getUserMedia; navigator.getUserMedia ({audio: true}, gotAudio, noStream);

После этого пользователю предлагается разрешить запись звука, и если вы скажете «да», появится сообщение о том, что Chrome выполняет запись. Однако возможно ли получить доступ к аудиобуферу с необработанными данными в нем? Кажется, я не могу узнать как. Существуют предлагаемые спецификации, которые еще не были реализованы, кто-нибудь знает, можно ли это сделать в любом браузере сейчас, и дает инструкции?

Это обсуждается в предыдущем вопросе. Stackoverflow.com / вопросы / 4227313 / аудио захвата-с-html5 AurA
Да, но с тех пор появилась новая информация, и предыдущий вопрос устарел. Thor Russell

Ваш Ответ

3   ответа
2

но он не работает (частично). Потому что AUDIO запись еще не реализована в Chrome. Вот почему вы получите ошибку 404, которая говорит, что не может найти BLOB.

Также есть форма ниже, потому что моей целью было отправить этот BLOB в php файл, но так как он не работает, я не могу попробовать. Сохраните его, вы можете использовать позже.

<audio></audio>
<input onclick="startRecording()" type="button" value="start recording" />
<input onclick="stopRecording()" type="button" value="stop recording and play" />
<div></div>
<!--
<form enctype="multipart/form-data">
<input name="file" type="file" />
<input type="button" value="Upload" />
</form>
-->

<script>
  var onFailed = function(e) {
    console.log('sorry :(', e);
  };

window.URL = window.URL || window.webkitURL;
navigator.getUserMedia  = navigator.getUserMedia || navigator.webkitGetUserMedia ||
                          navigator.mozGetUserMedia || navigator.msGetUserMedia || 
var localStream

var audio = document.querySelector('audio');
var stop = document.getElementById('stop');


    function startRecording(){
        if (navigator.getUserMedia) {
          navigator.getUserMedia({audio: true, video: false, toString : function() {return "video,audio";}}, function(stream) {
            audio.src = window.URL.createObjectURL(stream);
        document.getElementsByTagName('div')[0].innerHTML = audio.src;
            localStream = stream;
          }, onFailed);
        } else {
            alert('Unsupported');
          //audio.src = 'someaudio.ogg'; // fallback.
        }
    }



    function stopRecording(){
        localStream.stop();
        audio.play();
    }


    function sendAudio(){

    }
</script>

Примечание: некоторая информация и инструкции для Firefox:https: //hacks.mozilla.org/2012/07/getusermedia-is-ready-to-roll

все еще невозможно? Thomas
согласно списку вопросов: Code.google.com / р / хром / вопросы / детали? ID = 113676 это не так, но вы можете проверить это: Github.com / thomasboyt / веб-аудио-записи, демо Я только что видел, не пытался. siniradam
3

однако по мере развития их API будет сложно поддерживать код, который их использует.

Активный проект с открытым исходным кодом под названием Sink.js позволяет записывать, а также позволяет отправлять необработанные сэмплы:https: //github.com/jussi-kalliokoski/sink.js. Поскольку проект довольно активен, им удалось следить за изменениями в Webkit и Chrome по мере их выхода.

0

а и getChannelData ().

Вот проект на gitHub, который записывает аудио прямо в формате MP3 и сохраняет его на веб-сервере:https: //github.com/nusofthq/Recordmp3j

In Recorder.js вы увидите, как аудио-буфер доступен индивидуально с помощью таких каналов:

this.node.onaudioprocess = function(e){
      if (!recording) return;
      worker.postMessage({
        command: 'record',
        buffer: [
          e.inputBuffer.getChannelData(0),
          //e.inputBuffer.getChannelData(1)
        ]
      });
    }

Для более подробного объяснения реализации вы можете прочитать следующий пост в блоге:http: //nusofthq.com/blog/recording-mp3-using-only-html5-and-javascript-recordmp3-js

Похожие вопросы