2016-04-14 19 views
8

ses karıştırılması elde edilir ve ses karışımı ihracat için i Çevrimdışı ses kodlamak için çevrimdışıAudioContext ve n, lame js kullanılır, şimdi expoort çalışıyor, ama çok yavaş, ben arıyorum Bunu mevcut olandan daha hızlı bir şekilde yapmak için etkili bir yol.arrayBuffer bir mp3 ses dosyasına nasıl dönüştürülür? Javascript AudioContext kullanarak

+2

Bunu yapmak için şu anda daha iyi bir çapraz tarayıcı yolu yoktur. Bunun yerine OGG kullanmayı düşünebilirsiniz ([Firefox doğal olarak OGG'ye kayıt yapabilir)] (https://www.webrtc-experiment.com/RecordRTC/AudioVideo-on-Firefox.html), Chrome'a ​​ihtiyacınız olacak [bir JS OGG Enkoderi] (https://github.com/astroza/chrome_ogg_encoder)). MP3'ü kodlamanın en hızlı yolu [PNACL] (http://www.chromium.org/nativeclient/pnacl/introduction-to-portable-native-client) ve [NACLPorts Lame] (https://github.com) /anvio/naclports/tree/master/libraries/lame-3.99-5) ancak Chrome'a ​​özgü ve önemsiz! – CodingIntrigue

+0

Kendim test etmedim, ama LameJS projesine göre, "gerçek zamanlıdan 20 kat daha hızlı" koşması gerekiyordu. Kodun üzerine bakarak JavaScript'in Float32Array işlevini kullanıyor gibi görünüyor. Tarayıcınızın bu teknolojiyi destekleyip desteklemediğini ve ayrıca GPU tabanlı matris çarpımı için WebGL'yi destekliyor mu (muhtemelen). Değilse, o zaman hızını kontrol eden ve kontrol eden bir tarayıcı ile deneyeceğim. –

+0

Emscripten kullanarak ve topal kodlayıcı kaynağını derleyerek bakabilirsiniz. Bunun sizin için nasıl işe yarayacağı hakkında bir ipucu yok ve size değeceğinden daha zor olabilir. – Goblinlord

cevap

2

ara bu [parçacığı] [1]

document.querySelector('input').onchange = function(){ 
 
     var fileReader = new FileReader; 
 
     fileReader.onload = function(){ 
 
     var arrayBuffer = this.result; 
 
     snippet.log(arrayBuffer); 
 
     snippet.log(arrayBuffer.byteLength); 
 
     } 
 
     fileReader.readAsArrayBuffer(this.files[0]); 
 

 
     var url = URL.createObjectURL(this.files[0]); 
 
     audio_player.src = url; 
 
     audio_player.play(); 
 
    };
<!-- Provides the `snippet` object, see http://meta.stackexchange.com/a/242144/134069 --> 
 
<script src="http://tjcrowder.github.io/simple-snippets-console/snippet.js"></script> 
 
<input id="audio_file" type="file" accept="audio/*" /> 
 
<audio id="audio_player" />

İlgili konular