2011-10-22 30 views
6

मेरे पास एक छोटा वेब ऐप है, जो कई बटनों के क्लिक पर वास्तव में छोटी ध्वनि बिट्स बजाता है। यह स्पष्ट रूप से आईओएस (आईपैड) पर मोबाइल सफारी को लक्षित करता है।मोबाइल सफारी: ऑडियो + कैश मेनिफेस्ट

मोबाइल सफारी पर इस संदर्भ में एचटीएमएल 5 ऑडियो की कई "कमियों" के बारे में और कहीं और पढ़ने के बाद और कुछ "हैक्स" और चाल की कोशिश करने के बाद, मैं ऐसी परिस्थिति में फंस गया हूं जहां सफारी बस लगती है (कमी की कमी के लिए एक बेहतर शब्द) टूटा हुआ:

मैं ध्वनि ए खेल सकता हूं (इसे शुरू करने के लिए काफी समय लगता है - मुझे लगता है कि यह डाउनलाइडिंग है [फिर से]?) बटन ए के क्लिक पर। उसके बाद, बटन पर क्लिक करना बी तुरंत ध्वनि ए फिर से खेलेंगे। बटन सी के लिए वही। कुछ मामलों में यह एक अलग ध्वनि, कभी-कभी सही भी खेलेंगे। लेकिन ज्यादातर ध्वनि ए। उपयोग में प्रारूप था .aiff, अब .m4a है।

अपने आप में कुछ छोटे संस्करणों लिखने के बाद, मैं ध्वनि लदान/खेल/आदि को संभालने के लिए Buzz पुस्तकालय के साथ जाने का फैसला किया ..

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

मैं एक कैश प्रकट हो सकता है उम्मीद कर रही थी मदद सीमाओं पहले से लोड होने सेब को दूर करने और ऑफलाइन मोड में बटन दबाने के बाद ध्वनि सही खेलने के लिए एप्लिकेशन को बलपूर्वक। लेकिन यह पुष्टि करने के बाद कि पूरा ऐप कैश किया गया था, मैं ऑफलाइन मोड में किसी भी ध्वनि को नहीं सुन/सुन सकता हूं।

क्या किसी ने किसी तरह काम करने के लिए ऐसा कुछ हासिल करने में कामयाब रहा है? (- देखने के बाद कैसे एप्पल कुछ चीजें संभालती है, मैं, 'ज्यादा प्रतिक्रिया की उम्मीद नहीं है हालांकि ...)


अद्यतन 1:

इस जवाब में उदाहरण के एक ही प्रभाव का कारण बनता है: How to synthesize audio using HTML5/Javascript on iPad


अद्यतन 2:

आईओएस अपडेट करना (और इसलिए सफारी) ऑडियो बग को हल करने लगता है। हालांकि, कैश मैनिफेस्ट ऑडियो फ़ाइलों को प्रभावित नहीं करता है। ये फ़ाइलें बिल्कुल उपलब्ध नहीं हैं।

को हटाने कैश प्रकट एप्लिकेशन ठीक से काम करता है, लेकिन "होम स्क्रीन" पर जोड़ और पुन: लोड के बाद यह रूप में अच्छी तरह खेलने से ऑडियो रोकता है।

उत्तर

7

मेरी इच्छा है कि मैं आपको बता सकूं कि आपके सभी एचटीएमएल 5 मीडिया को पूरी तरह से काम करने के लिए एक जादू फार्मूला है, लेकिन ऐसा नहीं है। एचटीएमएल 5 ऑडियो/वीडियो के लिए मोबाइल समर्थन अभी बहुत खराब है; अपने डेस्कटॉप पूर्ववर्तियों की तुलना में काफी पीछे है। मामलों को और भी खराब बनाने के लिए, प्रत्येक प्लेटफार्म में से प्रत्येक इसे अलग-अलग संभालता है और उनमें से अधिकांश केवल अर्ध-हाल के संस्करणों में इसका समर्थन करते हैं।

हालांकि, कुछ ऐसी चीजें हैं जिन्हें आप मीडिया सफारी में सही ढंग से काम करने के लिए मीडिया फ़ाइलों को प्राप्त करने के लिए नियोजित कर सकते हैं। उन्हें समझाने के लिए, आपको इसकी कुछ कमियों को समझने की आवश्यकता होगी।


1) आप एक से अधिक ऑडियो/वीडियो फ़ाइलों

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

मुझे जो करना है वह मेरी सभी ऑडियो फ़ाइलों को एक बड़ी ऑडियो फ़ाइल में जोड़ना है। फिर, किस ऑडियो ट्रैक के अनुरोध के आधार पर, मैं प्ले स्थिति को उचित प्रारंभिक स्थिति में ले जाउंगा और उस ट्रैक को चलाऊंगा। फिर, मैं प्रत्येक कुछ मिलीसेकंड प्लेबैक की जांच करने के लिए एक सेट इंटरवल का उपयोग यह निर्धारित करने के लिए करता हूं कि वर्तमान प्ले स्थिति ट्रैक के अंत में हिट हो गई है या नहीं। एक बार ऐसा करने के बाद, मैंने इसे रोक दिया। प्लस, मैंने प्रत्येक ट्रैक के बीच कुछ सेकंड (2-3) दिए, बस अगर फोन का सीपीयू बहुत भार में था और फीड को बहुत देर हो चुकी थी।

2) आप नहीं कर सकते हैं ऑटो-प्ले ऑडियो/वीडियो फ़ाइलों

एप्पल अपने एचटीएमएल 5 मीडिया टैग प्रौद्योगिकी में निर्मित सीमा यह है कि इन पटरियों केवल लोड और एक उपयोगकर्ता क्लिक करें घटना के जवाब में खेलने लगे। इस तरह, डेवलपर्स जब आप अपनी वेबसाइट पर जाते थे तो परेशान पटरियों को ऑटो-प्ले नहीं कर सका।

जब मैं ऑडियो/वीडियो टैग का उपयोग कर रहा था, तो मैं एक समृद्ध मीडिया विज्ञापन बनाने की कोशिश कर रहा था। इसलिए जब आप बैनर पर क्लिक करते हैं और विज्ञापन का विस्तार करते हैं, तो मैंने बैनर क्लिक ईवेंट में लोड होने वाले मेरे ऑडियो/ट्रैक को लगाया।

मुझे क्या सुझाव देना चाहिए कि आपको एक छोटा लाइटबॉक्स पॉपअप आना चाहिए, उपयोगकर्ता से पूछना कि क्या वे ध्वनि चालू/बंद करना चाहते हैं। आप अपने लोड फ़ंक्शंस को उस पॉपअप बॉक्स की क्लिक इवेंट में संलग्न कर सकते हैं, भले ही उपयोगकर्ता ध्वनि चालू या बंद कर देता हो।

व्यक्तिगत रूप से, लोड() फ़ंक्शन का उपयोग करके मुझे बहुत भाग्य नहीं मिला। मैं ऑडियो को लोड करने के लिए उस फ़ंक्शन को चलाऊंगा और फिर प्ले पर क्लिक करूंगा और यह इसे फिर से लोड करेगा। यह हमेशा होता रहा था कि मैंने अभी यह सही नहीं किया है, इसलिए मुझे गलत साबित करने के लिए स्वतंत्र महसूस करें और वह काम करें। मैंने ट्रैक खेलने के लिए क्या कहा था, इस तरह से यह लोड करना शुरू हो जाएगा, और फिर मैं एक सेट इंटरवल का उपयोग यह देखने के लिए करता हूं कि वर्तमान प्ले टाइम केवल कुछ मिलीसेकंड में वृद्धि हुई है या नहीं। एक बार मैंने देखा कि यह ट्रैक खेलना शुरू कर दिया, मैं तुरंत इसे रोक दूंगा।

3) ऑडियो/वीडियो टैग केवल iOS 4.0 में समर्थित हैं और उच्च

इस चारों ओर हो रही करने के लिए कोई चाल है। यह सिर्फ तथ्यों है।

http://www.w3.org/wiki/HTML/Elements/video
http://dev.w3.org/html5/spec-author-view/video.html#media-elements

गुड लक:


यहाँ कुछ साइटों है कि मदद की जब जब मैं ऑडियो/वीडियो टैग के साथ विकास हो रहा था है!

+0

बहुत बहुत धन्यवाद! ऐसा लगता है कि यहां बहुत अच्छी सलाह है। निश्चित रूप से कुछ चीजों को आजमाने की कोशिश की जा रही है। – polarblau

+0

आपको एक अतिरिक्त चीज़ पता होना चाहिए कि आईओएस पर ऑडियो या वीडियो कैश करना असंभव है। यहां तक ​​कि एपकेच के साथ भी। – idbehold

+0

क्या आप कोड का उदाहरण दे सकते हैं - प्ले स्थिति को उचित प्रारंभिक स्थिति में ले जाएं। इसके अलावा यदि आप 3 सेकंड के लिए ट्रैक खेलना चाहते हैं तो आप इसे कैसे रोकें? – Jon