2012-05-23 23 views
9

Henüz html5 ile ses kaydetmek mümkün mü? Ben krom son kanarya sürümünü indirip şu kodu kullanabilirsiniz adres:Kayıt html5 ses

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

Bu da ses kaydını ayırmasını ister ve siz derseniz "evet" bir mesaj krom kaydettiğini söyleyerek görünür. Bununla birlikte, ses arabelleğine ham veriye erişmek mümkün mü? Nasıl olduğunu anlayamıyorum. Henüz uygulanmayan, henüz herhangi bir tarayıcıda gerçekten yapılıp yapamayacağı ve talimatlar verilip verilmediğini bilen kimseler var mı?

+0

Bu önceki soruya ele alınmıştır. http://stackoverflow.com/questions/4227313/audio-capturing-with-html5 – AurA

+0

Evet, ancak yeni bilgiler kullanıma sunuldu ve önceki soru şu anda güncel değil. –

cevap

2

Burada örneğimi bulabilirsiniz, ancak çalışmıyor (kısmen). Çünkü AUDIO kaydı henüz kroma uygulanmadı. Bu yüzden bir 404 hatası elde edersiniz, ki bu BLOB'u bulamamaktadır.

Ayrıca amacım bir php dosyasına bu BLOB gönderen çünkü altında bir şeklidir vardır, ama çalışmıyor çünkü ben deneyemiyoruz. Kaydet, daha sonra kullanabilirsiniz.

<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> 

not: firefox için bazı bilgiler ve howto: https://hacks.mozilla.org/2012/07/getusermedia-is-ready-to-roll/

+0

hala mümkün değil mi? – Thomas

+0

konu listesine göre: http://code.google.com/p/chromium/issues/detail?id=113676 o değil ama bunu kontrol etmek isteyebilirsiniz: https://github.com/thomasboyt/web -Audio-kayıt-demo Sadece gördüm, denemedim. – siniradam

3

Webkit ve Chrome ses API desteği kayıt, ancak bunların API bunları kullanan kod korumak zor olacak gelişmeye. Sink.js adında

Aktif açık kaynak projesi kayıt sağlar ve aynı zamanda ham örnekleri itmek için izin verir: https://github.com/jussi-kalliokoski/sink.js/. Proje oldukça aktif olduğundan, ortaya çıktıkça Webkit ve Chrome'daki değişikliklerin üstesinden gelebildiler.

0

Şimdi Ses bağlam API ve getChannelData() kullanarak ses tampon erişmek mümkündür.

: recorder.js olarak https://github.com/nusofthq/Recordmp3js

ses tampon şöyle kanallar tarafından bireysel olarak erişilir nasıl göreceksiniz: Burada

MP3 formatında ses doğrudan kaydeder ve web sunucusu üzerinde kaydeder Github üzerinde bir proje aşağıdaki blog yayınını okuyabilir uygulama daha ayrıntılı bir açıklama için
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/