2015-11-10 12 views
3

Я хочу сделать простой веб-сайт, который отображает интерактивные визуальные эффекты, и я хотел бы, чтобы некоторые из них были аудио-управляемыми. Я хочу, чтобы посетители могли управлять видео с помощью собственного выбора музыки. Мне трудно находить много документации ни на что иное, кроме как получать аудио вход от микрофонов.Есть ли способ захватить звук браузера с помощью Javascript или любого другого веб-языка?

Например, на моей веб-странице (на вкладке 1) представлен код javascript X, который позволяет обрабатывать аудиопоток, воспроизводимый на другой вкладке веб-браузера. Это возможно?

+0

С расширением chrome вы можете получить доступ к другим вкладкам и обмениваться данными между ними, но я не думаю, что вы можете между веб-страницами – TankorSmash

+0

Почему ваш сайт получит доступ к другим вкладкам веб-браузера? Если один веб-браузер позволяет кому-либо сделать это, он больше не будет моим веб-браузером. – Kaiido

+0

Изучая эту тему, я застрял на http://dinahmoelabs.com/plink. Путь весело. Где мы были сейчас? – zipzit

ответ

-1

Вы можете взять поток микрофона с WebRTC API

if (!navigator.getUserMedia) 
    navigator.getUserMedia = navigator.getUserMedia || navigator.webkitGetUserMedia || 
    navigator.mozGetUserMedia || navigator.msGetUserMedia; 

if (navigator.getUserMedia) { 
    navigator.getUserMedia({audio:true}, success, function(e) { 
    }); 
} 

...............

function success(e) { 
     audioContext = window.AudioContext || window.webkitAudioContext; 
     context = new audioContext(); 

     // the sample rate is in context.sampleRate 
     audioInput = context.createMediaStreamSource(e); 

     var bufferSize = 2048; 
     recorder = context.createScriptProcessor(bufferSize, 1, 1); 
     recorder.onaudioprocess = function(e){ 

     console.log ('recording'); 
     var left = e.inputBuffer.getChannelData(0); 
    // stream 
     window.Stream.write(convertoFloat32ToInt16(left)); 
    } 
    audioInput.connect(recorder) 
    recorder.connect(context.destination); 


function convertoFloat32ToInt16(buffer) { 
    var l = buffer.length; 
    var buf = new Int16Array(l) 
    while (l--) { 
    buf[l] = buffer[l]*0xFFFF; //convert to 16 bit 
    } 
    return buf.buffer 
} 

Если вы любите только визуализации аудиопотока вы могут использовать плагины javascript, такие как enter link description here

+0

Wavesurfer выглядит для меня большим компромиссом. Благодаря! –

1

Если я правильно понял ваш вопрос, вы хотите захватить аудио из источников за пределами текущей вкладки.

Существует не такой api, как часть W3C the spec, возможно, из-за проблем с целостностью пользователя, которые возникли бы, если бы это было. Поскольку браузер, по сути, выполняет внешние браузеры кода, как правило, строго sandboxed и требует согласия на предотвращение любых нарушений конфиденциальности пользователей.

Если вы или пользователь получили доступ к средствам массовой информации, попробуйте использовать API-интерфейсы Audio и File. Если ни то, ни другое, ни использование API-интерфейсов захвата аудио, как вы упомянули, достаточно, вам придется либо перейти на создание расширения браузера, либо на другую платформу.

+0

Звуковые и файловые API кажутся достойным компромиссом. Я думаю, что я также рассмотрю API soundcloud для потоковой передачи аудио. Спасибо за подробный ответ! –