2012-04-20 20 views
5

से जुड़े ऑडियो तत्व पर प्लेबैक सेट करना मैं createMediaElementSource का उपयोग करके वेब ऑडियो एपीआई में ऑडियो तत्व को जोड़ने के साथ प्रयोग कर रहा हूं और इसे काम करने के लिए मिला लेकिन एक चीज जो मुझे करने की ज़रूरत है वह ऑडियो की प्लेबैक दर बदलती है टैग और मैं इसे काम करने के लिए नहीं मिल सका।वेब ऑडियो एपीआई

यदि आप नीचे दिए गए कोड को चलाने का प्रयास करते हैं, तो आप देखेंगे कि यह तब तक काम करता है जब तक आप उस लाइन को असम्बद्ध नहीं करते जहां हम प्लेबैक दर सेट करते हैं। जब ऑडियो में यह लाइन म्यूट हो जाती है।

मुझे पता है कि मैं Source.playbackRate.value का उपयोग कर ऑडियोबफर सॉर्स नोड पर प्लेबैक दर सेट कर सकता हूं लेकिन यह वही नहीं है जो मैं करना चाहता हूं, मुझे वेब तत्व से कनेक्ट होने पर ऑडियो तत्व पर प्लेबैक दर सेट करने की आवश्यकता है createMediaElementSource का उपयोग कर ऑडियो एपीआई इसलिए मेरे पास कोई ऑडियोबफर सॉर्स नोड नहीं है।

क्या कोई ऐसा करने में कामयाब रहा है?

var _source, 
    _audio, 
    _context, 
    _gainNode; 

_context = new webkitAudioContext(); 

function play(url) { 
    if (_audio) { 
     _audio.pause(); 
    } 
    _audio = new Audio(url); 
    //_audio.playbackRate = 0.6; 

    setTimeout(function() { 
     if (!_gainNode) { 
      _gainNode = _context.createGainNode(); 
      _gainNode.gain.value = 0.1; 
      _gainNode.connect(_context.destination); 
     } 

     _source = _context.createMediaElementSource(_audio); 
     _source.connect(_gainNode); 

     _audio.play(); 
    }, 0); 

} 

play("http://geo-samples.beatport.com/items/volumes/volume2/items/3000000/200000/40000/9000/400/60/3249465.LOFI.mp3"); 

setTimeout(function() { 
    _audio.pause(); 
}, 4000); 
+0

विषम, यह क्रोम में मेरे लिए काम करता प्रतीत होता है। http://jsfiddle.net/9gLKM/ - क्रोम: संस्करण 22.0.122 9.9 4 मीटर –

उत्तर

1

आप इसका परीक्षण करने के लिए किस ब्राउज़र का उपयोग कर रहे हैं? ऐसा लगता है कि यह अभी तक फ़ायरफ़ॉक्स में लागू नहीं हुआ है, लेकिन क्रोम पर काम करना चाहिए। playbackRate लागू करने के लिए

मोज़िला बग: https://bugzilla.mozilla.org/show_bug.cgi?id=495040

+0

मैं क्रोम का उपयोग कर रहा हूं। फ़ायरफ़ॉक्स ऑडियो टैग का समर्थन करता है लेकिन वेब ऑडियो एपीआई का समर्थन नहीं करता है और मेरा कोड दोनों तकनीकों का उपयोग करता है ताकि यह फ़ायरफ़ॉक्स पर नहीं चल सके। –

+0

क्रोम में playbackRate एक स्टैंडअलोन ऑडियो टैग पर काम करता है लेकिन मैं जो करने की कोशिश कर रहा हूं वह इसे ऑडियो तत्व पर काम करता है जो createMediaElementSource का उपयोग कर वेब ऑडियो एपीआई से जुड़ा हुआ है। यही वह हिस्सा है जिसे मैं काम नहीं कर सका। –

1

आप प्लेबैक दर के बाद ऑडियो खेलना शुरू कर दिया गया है सेट करना होगा। केवल पोर्टेबल तरह से मैं यह काम करने के लिए मिल गया है, इंतज़ार कर कर रहा है जब तक आप मान्य currentTime के साथ एक timeupdate घटना मिलती है:

_audio.addEventListener('timeupdate', function(){ 
    _if(!isNaN(audio.currentTime)) { 
     _audio.playbackRate = 0.6; 
    } 
}); 

ध्यान दें कि प्लेबैक दर वर्तमान में एंड्रॉयड पर और कहा कि क्रोम समर्थित नहीं है (डेस्कटॉप पर) 0.5 से कम प्लेबैक दरों का समर्थन नहीं करता है।

+0

यह एक बग की तरह लगता है। जहां spec में यह निर्दिष्ट करता है कि प्रारंभिक प्लेबैक के बाद तक ऑडियो की प्लेबैक दर सेट नहीं की जा सकती है? – idbehold

+0

जैसा कि मैंने spec (http://www.w3.org/html/wg/drafts/html/master/embedded-content-0.html#dom-media-playbackrate) पढ़ा है, इरादा यह है कि 'डिफ़ॉल्ट प्लेबैकरेट जैसे ही प्लेबैक शुरू होता है, '' playbackRate' 'सेट करेगा। इसके बाद, प्लेबैक दर गतिशील रूप से 'playbackRate'' का उपयोग करके सेट की जा सकती है। जैसा कि मैंने उपरोक्त लिखा है, ऐसा करने के लिए थोड़ा अजीब है, लेकिन हां - यह एकमात्र चीज है जो काम करती है। मेरा विश्वास करो :) (मैं https://github.com/Notalib/LYT का वर्तमान लेखक हूं और अकेले इस मुद्दे पर लगभग 40 घंटे बिताए हैं।) – mzedeler

+0

['डिफ़ॉल्ट प्लेबैकरेट'] (http: // www। w3.org/html/wg/drafts/html/master/embedded-content-0.html#dom-media-defaultplaybackrate)? – idbehold

संबंधित मुद्दे