2008-10-09 13 views
79

मैं एक dhtml एप्लिकेशन लिख रहा हूं जो एक सिस्टम के एक इंटरैक्टिव सिमुलेशन बनाता है। सिमुलेशन के लिए डेटा किसी अन्य उपकरण से उत्पन्न होता है, और पहले ही विरासत डेटा की एक बड़ी मात्रा है।क्रॉस-प्लेटफ़ॉर्म, जावास्क्रिप्ट से ध्वनि चलाने के लिए क्रॉस-ब्राउज़र तरीका?

सिमुलेशन में कुछ चरणों की आवश्यकता है कि हम ऑडियो के "वॉयस ओवर" क्लिप चलाएं। मैं इसे कई ब्राउज़रों में पूरा करने का एक आसान तरीका खोजने में असमर्थ हूं।

Soundmanager2 मुझे जो चाहिए उसे बहुत करीब आता है, लेकिन यह केवल एमपी 3 फाइलें चलाएगा, और विरासत डेटा में कुछ .wav फ़ाइलें भी हो सकती हैं।

क्या किसी के पास कोई अन्य पुस्तकालय है जो मदद कर सकता है?

+5

खुशी है कि आपको अपना समाधान मिला, लेकिन उससे स्वतंत्र, आप उन .wav फ़ाइलों को .mp3 फ़ाइलों में परिवर्तित करने पर विचार करना चाहेंगे। यदि ध्वनि की गुणवत्ता कम हो तो आप फ़ाइल आकार को 1/3 से 1/10 वें तक एक तरंग फ़ाइल के आकार से नीचे प्राप्त कर सकते हैं। आवाजों को बजाने में चीजों को थोड़ा और अधिक उत्तरदायी बना सकते हैं। – infocyde

उत्तर

62

आप

//====================================================================== 
var soundEmbed = null; 
//====================================================================== 
function soundPlay(which) 
    { 
    if (!soundEmbed) 
     { 
     soundEmbed = document.createElement("embed"); 
     soundEmbed.setAttribute("src", "/snd/"+which+".wav"); 
     soundEmbed.setAttribute("hidden", true); 
     soundEmbed.setAttribute("autostart", true); 
     } 
    else 
     { 
     document.body.removeChild(soundEmbed); 
     soundEmbed.removed = true; 
     soundEmbed = null; 
     soundEmbed = document.createElement("embed"); 
     soundEmbed.setAttribute("src", "/snd/"+which+".wav"); 
     soundEmbed.setAttribute("hidden", true); 
     soundEmbed.setAttribute("autostart", true); 
     } 
    soundEmbed.removed = false; 
    document.body.appendChild(soundEmbed); 
    } 
//====================================================================== 
+14

मैं कभी वोट नहीं समझता। यह काम। मैंने इसे अपने आवेदन में तैनात किया है। यह एक कम वोट के लायक क्यों है? – dacracot

+1

जिस व्यक्ति ने सवाल पूछा, मैं भी आश्चर्यचकित हूं। यह मेरे लिए एक बहुत अच्छा/सरल समाधान की तरह दिखता है। क्या कोई गलत बात पर टिप्पणी करेगा? –

+2

मुझे नहीं पता कि आप क्यों मतदान कर रहे थे, शायद "असली ऑडियो" या "क्विकटाइम" शब्दों के उपयोग के लिए .. ?? हो सकता है कि जिस व्यक्ति ने आपको कम किया था, उसके बारे में कोई जानकारी नहीं थी कि यह कैसे किया गया था? मेरे लिए, +1, आपका कोड बस इतना ही स्वीकार्य उत्तर में बताए गए jQuery प्लगइन में उपयोग किए गए जैसा ही है ... – karlipoppins

8

मेरा मानना ​​है कि सबसे आसान और सबसे सुविधाजनक तरीका एक छोटी फ्लैश क्लिप का उपयोग करके ध्वनि बजाना होगा। मुझे खुशी है कि यह एक जावास्क्रिप्ट समाधान नहीं है, लेकिन यह सबसे आसान तरीका है अपने लक्ष्य को पिछले similar question से

कुछ अतिरिक्त लिंक प्राप्त करने के लिए है:

+1

लेकिन मुझे कोई भी फ्लैश समाधान नहीं मिल रहा है जो डब्ल्यूएवी फाइलों को चलाएगा। ऐसा लगता है फ्लैश केवल एमपी 3 का समर्थन करता है। मैं पटकथा की प्लगइन को देखूंगा, लेकिन मुझे इस कार्यक्षमता के लिए एक संपूर्ण अतिरिक्त लाइब्रेरी शामिल करने से नफरत है। –

10

आप प्रोटोटाइप, Scriptaculous पुस्तकालय has a sound API उपयोग कर रहे हैं। jQuery appears to have a plugin भी।

+3

jQuery प्लगइन लिंक 403 के साथ प्रतिक्रिया करता है। – Arion

4

आप Mootools उपयोग कर रहे हैं, वहाँ है MooSound plugin एक प्लग-इन रियल ऑडियो या QuickTime तरह .wav फ़ाइल को संभालने के लिए शामिल करने के लिए होगा, लेकिन यह काम करना चाहिए ...।

9

डैक्राकॉट कोड स्वच्छ मूल डोम है, लेकिन शायद दूसरे विचार के बिना लिखा गया है? बेशक आप पहले के पहले एम्बेड की मौजूदगी की जांच करते हैं, और डुप्लिकेट एम्बेड सृजन लाइनों को सहेजते हैं।

var soundEmbed = null; 
//===================================================================== 

function soundPlay(which) 
{ 
    if (soundEmbed) 
     document.body.removeChild(soundEmbed); 
    soundEmbed = document.createElement("embed"); 
    soundEmbed.setAttribute("src", "/snd/"+which+".wav"); 
    soundEmbed.setAttribute("hidden", true); 
    soundEmbed.setAttribute("autostart", true); 
    document.body.appendChild(soundEmbed); 
} 

कुछ समान स्थिति के समाधान के लिए स्कैनिंग करते समय यहां विचारों में आया। दुर्भाग्यवश मेरा ब्राउज़र मोज़िला/5.0 (एक्स 11; यू; लिनक्स i686; एन-यूएस; आरवी: 1.9.0.15) गीको/200 92828 उबंटू/8.04 (हार्डी) फ़ायरफ़ॉक्स/3.0.15 यह कोशिश करते समय मर जाता है।

नवीनतम अपडेट स्थापित करने के बाद, फ़ायरफ़ॉक्स अभी भी दुर्घटनाग्रस्त हो जाता है, ओपेरा जीवित रहता है।

5

आप HTML5 <audio> टैग का उपयोग कर सकते हैं।

+0

प्रश्न विशेष रूप से "क्रॉस-प्लेटफ़ॉर्म, क्रॉस-ब्राउज़र" समाधान के लिए पूछा गया। एचटीएमएल 5 '

+0

2018 में एनबी एचटीएमएल 5 ऑडियो ओपेरा के अलावा सभी समर्थित है। –

6

मैं dacracot के जवाब पसंद आया ... यहाँ jQuery में एक ऐसी ही समाधान है:

function Play(sound) { 
    $("#sound_").remove() 
    $('body').append('<embed id="sound_" autostart="true" hidden="true" src="/static/sound/' + sound + '.wav" />'); 
} 
3
<audio controls> 
    <source src="horse.ogg" type="audio/ogg"> 
    <source src="horse.mp3" type="audio/mpeg"> 
Your browser does not support the audio element. 
</audio> 

अधिक जानकारी के लिए http://www.w3schools.com/html/html5_audio.asp देखें।

1

प्लग-इन का सहारा लेने के बजाय इसके लिए एक और अधिक आसान समाधान है। आईई की अपनी खुद की bgsound संपत्ति है और एक और तरीका है कि आप इसे अन्य सभी ब्राउज़रों के लिए काम कर सकते हैं।यहां मेरा ट्यूटोरियल देखें = http://www.andy-howard.com/how-to-play-sounds-cross-browser-including-ie/index.html

+0

आपका समाधान दिलचस्प लगता है, मैं इसे आज़मा दूंगा। नोट, आपके द्वारा लिंक किए गए पृष्ठ पर एक टिप्पणी है जो इंगित करती है कि IE11 में, ऑडियो एक अंतहीन पाश में चल रहा है। क्या यह अभी भी एक समस्या है? क्या इससे बचने का कोई तरीका है? –

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

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