Запись аудио и жить


мне нужно записать аудио-и жить, я обнаружил, что с HTML5 и JavaScript/jQuery, и возможно, что есть плагины, которые могут помочь мне. Я использую один из них - MediaStreamRecorder, и я, записывая и передавая мне даже жить, просто не могу передать, чтобы все, кто-нибудь знает, как я могу эту передачу ? Вероятно, с помощью сокета ? Где находится файл, что записан ? Как отправить файл в реальном времени pro сервер ?

EDIT: Как отправить blob-объектов в реальном времени pro сервер ?

ССЫЛКА НА JSFIDDLE: http://jsfiddle.net/C8WHd/2/

используется Код (плагин это на github по этой ссылке: MediaStreamRecorder):

<script src="//www.webrtc-experiment.com/MediaStreamRecorder.js"> </script>

<h1>
    Audio Recording using <a href="https://github.com/streamproc/MediaStreamRecorder"
                             target="_blank">MediaStreamRecorder</a>
</h1>
<div id="audios-container">
</div>   



 <script>
        var mediaConstraints = { audio: true };
        navigator.getUserMedia(mediaConstraints, onMediaSuccess, onMediaError);

        function onMediaSuccess(stream) {
            var audio = document.createElement('audio');
            audio = mergeProps(audio, {
                controls: true,
                src: URL.createObjectURL(stream)
            });
            audio.play();

            audiosContainer.appendChild(audio);
            audiosContainer.appendChild(document.createElement('hr'));

            var mediaRecorder = new MediaStreamRecorder(stream);
            mediaRecorder.mimeType = 'audio/ogg';
            mediaRecorder.ondataavailable = function(blob) {
                var a = document.createElement('a');
                a.target = '_blank';
                a.innerHTML = 'Open Recorded Audio No. ' + (index++);

                a.href = URL.createObjectURL(blob);

                audiosContainer.appendChild(a);
                audiosContainer.appendChild(document.createElement('hr'));
            };

            // get blob after each 5 second!
            mediaRecorder.start(5 * 1000);
        }

        function onMediaError(e) {
            console.error('media error', e);
        }

        var audiosContainer = document.getElementById('audios-container');
        var index = 1;
 </script
Author: Alan PS, 2014-06-01

2 answers

После долгих исследований я получил результаты, используя WebRTC-Experiment (https://github.com/muaz-khan/WebRTC-Experiment) и (http://www.rtcmulticonnection.org/docs/).

Код сервера: (http://jsfiddle.net/C8WHd/3/)

<script src="http://www.rtcmulticonnection.org/latest.js"></script>
<button id="audio">Audio stream</button>
<script>

var connection = new RTCMultiConnection('channel-654654-34434-12121');
connection.session = {
    data: true
};
connection.open();


document.querySelector('#audio').onclick = function() {
    connection.addStream({audio:true,oneway:true});
};
</script>

Код потребителя: (http://jsfiddle.net/C8WHd/4/)

<script src="http://www.rtcmulticonnection.org/latest.js"></script>
<script>

var connection = new RTCMultiConnection('channel-654654-34434-12121');
connection.session = {
    audio: true
};
connection.connect();

</script>
 8
Author: Alan PS, 2014-06-06 23:43:29

Не имеет, куда бежать, когда дело доходит до передачи данных через поток клиентов должен подключиться к вам или вы-это сервер, который распределяет(трансляции) данных для всех, кто связан с вами!

В действительности вы раскроете аудио чистом виде (raw audio) в устройства ввода(микрофон или другой источник) и отправляет клиентам в блоки фиксированного размера, так что в целом 2048, 4096 другой стороны, каждый клиент получает значения для этого вектора и дает play кодирование для некоторых формате (wav, mp3, etc)!

В javascript, который представил только получаем данные от микрофона, чтобы чисто, не смотрел с нежностью, но эти значения должны быть в вектор, short, int или float32 фиксированного размера, только для вас, чтобы понять процесс:

Значения в плен микрофон, вообще говоря, могут быть на коротких заезда или float32 они являются фиксированный размер вектора, 2048 или 4096, etc Эти значения передаются для энкодера, который кодирует этот вектор для формат, владение вектор кодируется проигрыватель играет этот вектор. Этот процесс работает в цикле, и это достаточно быстро, чтобы не способствовать задержке

 6
Author: ederwander, 2014-06-02 20:10:08