2012-05-28 19 views
16

Había buscado una gran cantidad de DEMO y ejemplos sobre getUserMedia, pero la mayoría solo capturan la cámara, no el micrófono.¿Funciona ahora la getUserMedia de HTML5 para grabación de audio?

lo que he descargado algunos ejemplos y trataron en mi propio ordenador, la captura de la cámara es trabajo, Pero cuando cambié

navigator.webkitGetUserMedia({video : true},gotStream); 

a

navigator.webkitGetUserMedia({audio : true},gotStream); 

El navegador me pregunta para permitir el acceso al micrófono primero , y luego falló en

document.getElementById("audio").src = window.webkitURL.createObjectURL(stream); 

El desastre edad es:

GET blob:http%3A//localhost/a5077b7e-097a-4281-b444-8c1d3e327eb4 404 (Not Found) 

Este es mi código: getUserMedia_simple_audio_test

¿He hecho algo mal? ¿O solo getUserMedia puede funcionar para la cámara ahora?

+0

te metan [ ' "de vídeo, audio"', que] (http://jsfiddle.net/DerekL/JV996/) sigue sin conseguir la 'parte audio' (si lo ha notado) –

+0

En la versión 19 de Chrome, trabajo 'xxx'. Pero en la versión 21, solo funciona {xxx: true}, esto es lo que encontré después de actualizar Chrome. – user1422542

Respuesta

10

Actualmente no está disponible en Google Chrome. Ver Issue 112367.

Se puede ver en the demo, siempre generará un error diciendo

GET blob: http% 3A // whatever.it.is/b0058260-9579-419b-b409-18024ef7c6da 404 (no encontrado)

Y también que no puede escuchar el micrófono, ya sea en

{ 
    video: true, 
    audio: true 
} 
+2

¡Gracias!Espero que pronto esté disponible en Chrome. – user1422542

0

está funcionando, sólo tiene que añadir toString parámetro después audio : true

Comprobar este artículo - link

+3

La cosa 'toString' es un truco para soportar el formato de parámetros anterior (' "video, audio" ') y el nuevo formato (' {video: true, audio: true} ') juntos. En Chrome, todavía no se ha implementado el audio, por lo que no existe un "truco" para que funcione de repente. – pimvdb

5

Se admite actualmente en Chrome Canary. Debe escribir about: flags en la barra de direcciones y luego habilitar la entrada de audio web.

El siguiente código conecta la entrada de audio a los altavoces. ¡CUIDADO CON LA RETROALIMENTACIÓN!

<script> 
// this is to store a reference to the input so we can kill it later 
var liveSource; 
// creates an audiocontext and hooks up the audio input 
function connectAudioInToSpeakers(){ 
    var context = new webkitAudioContext(); 
    navigator.webkitGetUserMedia({audio: true}, function(stream) { 
    console.log("Connected live audio input"); 
    liveSource = context.createMediaStreamSource(stream); 
    liveSource.connect(context.destination); 
    }); 
} 
// disconnects the audio input 
function makeItStop(){ 
    console.log("killing audio!"); 
    liveSource.disconnect(); 
} 
// run this when the page loads 
connectAudioInToSpeakers(); 
</script> 
<input type="button" value="please make it stop!" onclick="makeItStop()"/> 
+0

no creo que sea ... reproducción de audio forma micrófono sí; (y solo en cromo para Mac; y cromo canario) ¿pero grabando? no pienses que eso es posible – Thomas

1

(lo siento, me olvidé de iniciar sesión, lo que la publicación con mi nombre de usuario adecuada ...)

Se admite actualmente en Chrome Canary. Debe escribir about:flags en la barra de direcciones y luego habilitar la entrada de audio web.

El siguiente código conecta la entrada de audio a los altavoces. ¡CUIDADO CON LA RETROALIMENTACIÓN!

http://jsfiddle.net/2mLtM/

<script> 
// this is to store a reference to the input so we can kill it later 
var liveSource; 
// creates an audiocontext and hooks up the audio input 
function connectAudioInToSpeakers(){ 
    var context = new webkitAudioContext(); 
    navigator.webkitGetUserMedia({audio: true}, function(stream) { 
    console.log("Connected live audio input"); 
    liveSource = context.createMediaStreamSource(stream); 
    liveSource.connect(context.destination); 
    }); 
} 
// disconnects the audio input 
function makeItStop(){ 
    console.log("killing audio!"); 
    liveSource.disconnect(); 
} 
// run this when the page loads 
connectAudioInToSpeakers(); 
</script> 
<input type="button" value="please make it stop!" onclick="makeItStop()"/> 
Cuestiones relacionadas