2012-11-05 25 views
7
में

के बाद कोड क्रोम (22.0) में नहीं बल्कि सफारी (6.0) में काम करता हैलोड हो रहा है ऑडियो सफारी

<!DOCTYPE html> 
<html> 
<head> 
<script> 
function onGo(e) { 
    var fr = new FileReader(); 
    var file = document.getElementById("file").files[0]; 
    fr.onload = function(e) { 
     var data = new Uint8Array(e.target.result); 
     var blob = new Blob([data], {type: 'audio/mpeg'}); 
     var audio = document.createElement('audio'); 
     audio.addEventListener('loadeddata', function(e) { 
      audio.play(); 
     }, false); 
     audio.addEventListener('error', function(e) { 
      console.log('error!', e); 
     }, false); 
     audio.src = webkitURL.createObjectURL(blob);  
    }; 
    fr.readAsArrayBuffer(file); 
} 
</script> 
</head> 
<body> 
    <input type="file" id="file" name="file" /> 
    <input type="submit" id="go" onclick="onGo()" value="Go" /> 
</body> 
</html> 

सफारी में विफल रहता है, न तो कॉलबैक (loadeddata है और न ही त्रुटि) कहा जाता है। उपयोग की जाने वाली सामग्री एक एमपी 3 फ़ाइल है, जिसे आमतौर पर ऑडियो टैग के साथ खेला जाता है। क्या सफारी के लिए कोई विशेष देखभाल की आवश्यकता है?

+0

देखें http://stackoverflow.com/questions/4201576/html5-audio-files-fail-to-load-in-safari जो समस्या – cubitouch

उत्तर

0

कभी-कभी, HTML5 ऑडियो किसी भी स्पष्ट कारण के बिना लोड करना बंद कर सकता है। यदि आप मीडिया इवेंट्स (http://www.w3schools.com/tags/ref_eventattributes.asp) पर एक नज़र डालेंगे तो आपको एक ईवेंट दिखाई देगा: "ऑनस्टेड", परिभाषा यह है कि "ब्राउज़र किसी भी कारण से मीडिया डेटा लाने में असमर्थ होने पर स्क्रिप्ट चलाना" है और ऐसा लगता है कि यह आपके लिए सहायक होना चाहिए।

कि घटना के लिए सुन रहा है और यदि आवश्यक फ़ाइल को पुन: लोड कुछ इस तरह के साथ, का प्रयास करें:

audio.addEventListener('onstalled', function(e) { 
     audio.load(); 
    }, false); 

मुझे आशा है कि यह मदद करता है!

0

मुझे एक ही समस्या है, और मैं इसे पहले से ही समस्या निवारण में कुछ दिन बिताता हूं। रूप pwray इस दूसरे पोस्ट में उल्लेख किया, सफारी मीडिया अनुरोधों के लिए फ़ाइल एक्सटेंशन की आवश्यकता है:

HTML5 Audio files fail to load in Safari

मैं एक फाइल करने के लिए मेरी ब्लॉब बचाने की कोशिश की यह file.mp3 नामित और सफारी लोड करने में सक्षम था इस तरह से ऑडियो, लेकिन फ़ाइल के नाम बदलने के बाद मैंने कोई एक्सटेंशन नहीं लिया (बस "फ़ाइल"), यह लोड नहीं हुआ। मैं यूआरएल सफारी में किसी अन्य टैब में ब्लॉब से बनाए गए की कोशिश की:

url = webkitURL.createObjectURL(blob); 

यह एक फ़ाइल तुरंत बुलाया "अज्ञात" डाउनलोड, लेकिन जब मैं क्रोम (Mac पर भी) में एक ही बात करने की कोशिश की है, यह ब्राउज़र में फ़ाइल की सामग्री दिखायी गई (एमपी 3 फ़ाइलें आईडी 3 के साथ शुरू होती हैं, फिर गैर-पठनीय पात्रों का समूह)। मैं अभी तक समझ नहीं सकता है कि कैसे मैं एक विस्तार के लिए ब्लॉब के बने यूआरएल के लिए मजबूर कर सकता है, क्योंकि आम तौर पर यह इस तरह दिखता है:

blob:https://example.com/a7e38943-559c-43ea-b6dd-6820b70ca1e2 

तो यह के अंत में एक सत्र चर की तरह दिखता है।

यह वह जगह है जहां मैं अटक गया और मैं वास्तव में यहां कुछ स्मार्ट लोगों से समाधान देखना चाहता हूं। धन्यवाद, स्टीवन

+0

हल करने के लिए यह करने के लिए एक जवाब प्रदान नहीं करता है लगता है प्रश्न। एक बार आपके पास पर्याप्त [प्रतिष्ठा] (https://stackoverflow.com/help/whats-reputation) हो जाने पर आप [किसी भी पोस्ट पर टिप्पणी कर सकेंगे] (https://stackoverflow.com/help/privileges/comment); इसके बजाय, [उन उत्तरों को प्रदान करें जिन्हें पूछताछ से स्पष्टीकरण की आवश्यकता नहीं है] (https://meta.stackexchange.com/questions/214173/why-do-i-need-50-reputation-to-comment-what-can- i-कर-बजाय)। - [समीक्षा से] (/ समीक्षा/कम गुणवत्ता वाली पोस्ट/17880680) –

+0

निश्चित रूप से, लेकिन मैं इसे पहले टिप्पणी के रूप में भेजना चाहता था और मैं नहीं कर सका, इसलिए मैंने इसे जवाब के रूप में भेजा, भले ही कोई जवाब न हो, लेकिन यह समस्या निवारण में सहायता के लिए कुछ अतिरिक्त जानकारी प्रदान कर सकता है। – Steven

+0

इसलिए मैंने इस पर बहुत सी शोध की और ऐसा लगता है कि सफारी बस ब्लॉब से स्ट्रीम किए गए ऑडियो को नहीं चला सकता है, क्योंकि सफारी स्रोत की पहचान करने के लिए एक एक्सटेंशन (.mp3) की तलाश में है, अन्यथा यह "त्रुटि" में दिखाता है ऑडियो तत्वब्लॉब को इस लाइन के साथ एक यूआरएल में परिवर्तित करने के बाद: 'audio.src = webkitURL.createObjectURL (ब्लॉब);' आपका ऑडियो.src इस तरह दिखेगा: 'ब्लॉब: https: //example.com/a7e38943-559c -43ea-b6dd-6820b70ca1e2' और इसमें कोई एक्सटेंशन नहीं है – Steven

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