2012-10-30 12 views
6

मैं इस समारोह का उपयोग कर रहा:क्रॉस-ब्राउज़र संगत ऑडियो के लिए क्या विकल्प हैं?

function playSound(file) { 

MyAudio = new Audio(file); 
MyAudio.play(); 

} 

दुर्भाग्य से, मैं एक फ़ाइल प्रकार जो सभी ब्राउज़रों में काम करेंगे खोजने के लिए संघर्ष कर रहा हूँ। एमपी 3 क्रोम, सफारी, आईई में काम करता है लेकिन एफएफ और ओपेरा नहीं, जबकि .ogg फ़ाइलें केवल एफएफ में काम करने लगती हैं।

इस बारे में कोई सुझाव देने के लिए कोई सुझाव? मुझे लगता है कि प्रोग्रामेटिक रूप से पता लगाने का कोई तरीका नहीं है कि कौन सा ब्राउज़र उपयोग किया जा रहा है और फिर उचित फ़ाइल प्रकार खेल रहा है? किसी भी सलाह/विचारों की सराहना की। धन्यवाद।

+0

wav। चूंकि यह ज्यादातर कच्चे पीसीएम प्लस एक बहुत ही सरल हेडर है, इसलिए मैंने एक मंच नहीं देखा है जहां इसे डिफ़ॉल्ट रूप से नहीं खेला जा सकता है, हालांकि मैं गलत हो सकता हूं। –

+0

फ़ायरफ़ॉक्स, आईई, सफारी और ओपेरा के लिए क्रोम, फ़ायरफ़ॉक्स और ओपेरा + wav के लिए वेब का उपयोग करें। –

+0

सुविधा का पता लगाने, ब्राउज़र का पता लगाने का उपयोग करें! प्रत्येक ब्राउज़र का समर्थन किस प्रकार के साथ बदल जाएगा; 'canplayType' का उपयोग करें: https://developer.mozilla.org/en-US/docs/DOM/HTMLMediaElement#Methods – apsillers

उत्तर

6

निराशाजनक रूप से, कोई सार्वभौमिक रूप से बजाने योग्य प्रकार नहीं है। डब्ल्यूएवी निकटतम आता है, लेकिन यह काफी बड़ा है और आईई 9 में समर्थित नहीं है। आपको कई प्रकार के उपलब्ध होने की आवश्यकता होगी और एक प्रकार का ब्राउज़र चुन सकता है।

ऐसा करने के लिए, सुविधा का पता लगाने का उपयोग करें, ब्राउज़र पहचान नहीं। प्रत्येक ब्राउज़र का समर्थन करने वाले मीडिया प्रकार समय के साथ बदल जाएंगे, इसलिए आपका कोड जो फ़ायरफ़ॉक्स मानता है वह एमपी 3 नहीं चला सकता है, शायद कुछ साल से पुराना हो जाएगा, जब मोज़िला इसे गोद लेता है (पेटेंट समाप्त होने के बाद)। canPlayType का उपयोग करें, जो अगर किसी दिए गए प्रारूप समर्थित है इंगित करता है:

var audio = new Audio(); 
if(audio.canPlayType("audio/mpeg") == "probably") { 
    playSound("myMedia.mp3"); 
} else if(audio.canPlayType("audio/webm") == "probably") { 
    playSound("myMedia.webm"); 
} 
// do checks for other types... 

इसके अलावा, अगर आप HTML के रूप में ऑडियो टैग लिख रहे हैं, तो आप कई <source> टैग का उपयोग कर सकते हैं, और ब्राउज़र पहले एक यह कर सकते हैं खेलेंगे:

<audio controls="controls"> 
    <source src="mymedia.ogg" type="audio/ogg" /> 
    <source src="mymedia.mp3" type="audio/mpeg" /> 
    Update your browser! This sentence is fallback content for browsers that do not support the audio element at all. 
</audio> 

यदि आप ओग ऑडियो समर्थन के लिए परीक्षण करना चाहते हैं, तो आप शायद ओग वोरबिस के लिए विशेष रूप से परीक्षण करना चाहते हैं। ओग एक "कंटेनर" प्रारूप है जो hypothetically use other codecs के अलावा वोर्बीस और थियोरा (उदाहरण के लिए, Opus format) के अलावा।तुम इतनी तरह Ogg Vorbis के लिए परीक्षण कर सकते हैं:

audio.canPlayType('audio/ogg; codecs="vorbis"') == "probably"; 

ध्यान दें कि canPlayType तीन संभावित वापसी मान हैं:

  • "शायद" - मीडिया प्रकार लगभग निश्चित रूप से
  • खेला जा सकता है " शायद " - मीडिया प्रकार बजाने योग्य हो सकता है। जब आप ब्राउज़र में सामान्य ओग समर्थन के बारे में पूछते हैं तो यह वापस किया जाता है जब विशिष्ट कोडेक्स (यानी वोर्बिस और थियोरा) के लिए ओग समर्थन होता है। एक ओग फ़ाइल एक कोडेक का उपयोग करें जो ब्राउज़र द्वारा समर्थित नहीं है, इसलिए यदि आप कोडेक निर्दिष्ट नहीं करते हैं, तो ब्राउज़र केवल अनुमान लगा सकता है कि इसे चलाने में सक्षम हो सकता है।
  • ""(रिक्त स्ट्रिंग) - मीडिया प्रकार निश्चित रूप से चलाए जाने योग्य नहीं

है क्या तुम सच में के लिए परीक्षण ogg समर्थन के लिए परीक्षण करने के लिए है, तो के बजाय चाहते हैं तो "शायद", आप (यानी, या तो "शायद" या "शायद" के लिए परीक्षण), तो जैसे एक गैर खाली स्ट्रिंग के लिए परीक्षण कर सकते हैं:

// test for *any* Ogg codecs 
if(audio.canPlayType("audio/ogg") != "") { 
    playSound("myMedia.ogg"); 
} 

आप जो कुछ विशिष्ट कोडेक अपने मीडिया फ़ाइल का उपयोग करता है, उदाहरण के लिए परीक्षण करना चाहिए,साथ Vorbis के लिए। सामान्य ओग समर्थन के लिए परीक्षण उपयोगी होने की संभावना नहीं है।

+0

आपके उत्तर के लिए धन्यवाद। मुझे बस एक फ़ाइल खोजने की जरूरत है जो ओपेरा में काम करता है। मैंने mp3, ogg और wav की कोशिश की है लेकिन कुछ भी काम नहीं करता है। क्या आप जानते हैं कि मैं वेबम में कैसे परिवर्तित कर सकता हूं? मैंने कुछ मुफ्त कार्यक्रमों की कोशिश की है लेकिन वे सभी केवल वीडियो के लिए काम करते हैं या सिर्फ वेब नहीं करते हैं। –

+1

[इस आलेख] के अनुसार (http://html5doctor.com/html5-audio-the-state-of-play), ओपेरा केवल ओग वोरबिस और डब्ल्यूएवी का समर्थन करता है। आप शायद एक अपूर्ण तरीके से ओग समर्थन के लिए परीक्षण कर रहे हैं। "ओग" एक "कंटेनर प्रारूप" है जिसमें एन्कोडेड मीडिया जानकारी होती है; "ओग वोरबिस" एक कोडेक प्रकार है। यह एक बहुत बड़ा ट्रिपिंग पॉइंट है जिसे मैं निर्दिष्ट करने में असफल रहा - मैं ओग-विशिष्ट जानकारी को शामिल करने के लिए अपना उत्तर संपादित करूंगा। – apsillers

0

अच्छा, यहां देखें: jQuery Buzz extension। कभी इसका इस्तेमाल नहीं किया, लेकिन सुना कि इसे ठीक काम करना चाहिए। यह जांचने में सक्षम है कि आपका ब्राउज़र कुछ प्रारूप का समर्थन करता है, वास्तव में साफ सुविधा।

1

फ़ायरफ़ॉक्स, आईई, सफारी और ओपेरा के लिए क्रोम, फ़ायरफ़ॉक्स और ओपेरा + wav के लिए वेब का उपयोग करें।

HTML:

जे एस:

var src = "myvideoname"; 
var is_chrome = navigator.userAgent.toLowerCase().indexOf('chrome') > -1; 

if (is_chrome) { 
    $("#audio").attr('src', 'audio/' + src + '.webm') 
} 
else { 
    $("#audio").attr('src', 'audio/' + src + '.wav') 
} 

व्याख्या करने के लिए:
जावास्क्रिप्ट उपयोगकर्ताओं को ब्राउज़र पता लगाना और अगर यह क्रोम है यह webm में कार्य करता है और अगर ऐसा नहीं है की तुलना में यह wav

का उपयोग

नोट: इस कोड का उपयोग करने के लिए आपको केवल webm और wav ऑडियो दोनों को audio फ़ोल्डर में समान नाम के साथ ऑडियो की आवश्यकता है।

नोट 2: कोड को jQuery की आवश्यकता है।

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