2010-09-22 15 views
18

पर एचटीएमएल 5 वीडियो की तलाश में मेरे पास एक कस्टम खोज बार वाला एक HTML5 वीडियो प्लेयर है, जो आईफोन (इनलाइन खेलना) और ब्राउज़र पर बहुत अच्छा काम कर रहा है।आईपैड

यह आईपैड पर भी बहुत अच्छा खेलता है और खोज बार फिल्म नाटकों के रूप में अपडेट किया जाता है, लेकिन किसी कारण से, मैं नहीं ढूंढ सकता।

सभी मान सही हैं और मैं स्थापित करने के लिए कोशिश कर रहा हूँ:

myPlayer.currentTime = XX; 

दुर्भाग्य से, आईपैड .currentTime विशेषता निर्धारित करने मना कर दिया।

myPlayer.networkState = 3 
myPlayer.readyState = 4 

iPad पर मैं:

myPlayer.networkState = 2 
myPlayer.readyState = 3 

मैं क्या इकट्ठा कर सकते हैं ब्राउज़र और iPad के बीच का अंतर से कि ब्राउज़र पर मैं मिलता है यह एक ही कोड है, जो एक स्थानीय एमपी 4 वीडियो चला रहा है।

कोई विचार यह क्यों हो रहा है?

चीयर्स, आंद्रे

+0

क्या आप वर्तमान समय निर्धारित करने वाले कोड को पोस्ट कर सकते हैं। मैं बिना किसी कठिनाई के ऐसा करने में सक्षम हूं। –

+0

यहां: videoPlayerElement.currentTime = x * videoPlayerElement.duration/scrubberBg.width(); ... यह ब्राउज़र (उनमें से कई) और आईपैड पर काम करता है, मान ठीक से पता लगाता है, संपत्ति को सेट नहीं किया जाता है। मैं 3.2 – Andre

+1

चला रहा हूं मुझे पता चला है कि आईओएस पर 'video.currentTime' सेटिंग को उपयोगकर्ता क्रिया के पीछे गेट किया गया है। 'CurrentTime' सेट करने से पहले 'अलर्ट()' या टच इवेंट जारी करना सही प्रतिक्रिया प्रदान करता है - इसके अलावा उपयोगकर्ता इंटरैक्शन के लिए पाठ्यक्रम को छोड़कर। – eug

उत्तर

6

मैं क्या घटनाओं के प्रत्यक्ष उपयोगकर्ता दीक्षा का गठन किया पर एप्पल के प्रतिबंध के साथ-साथ समस्याओं ऑडियो तत्वों को नियंत्रित करने के लिए JavaScript हो रही के सभी प्रकार, और मौजूदा समय संपत्ति के साथ हताशा का एक बहुत किया है।

यह मुझे आश्चर्य नहीं करेगा अगर जावास्क्रिप्ट & आईपैड पर एचटीएमएल 5 वीडियो प्लेबैक (या "फीचर" जो अनियंत्रित है) के साथ किसी तरह की अजीब बग थी, जिसके लिए वर्कअराउंड की आवश्यकता होती है। मेरे अनुभव से, आईपैड के पास आधिकारिक दस्तावेज़ीकरण की तुलना में चीजों को करने का एक अनोखा तरीका है।

आप त्रुटि, बफ़र, seekable, और वीडियो तत्व की गुण की मांग की जाँच करनी चाहिए। अपने तैयार चरण & नेटवर्कस्टेट मानों को देखते हुए, आईपैड ऐसा लगता है कि वीडियो पूरी तरह से लोड नहीं हुआ है - जो स्थानीय संसाधन के लिए अजीब है।

बफ़र और seekable आपका पूरा वीडियो की समय सीमा के बराबर होना चाहिए। मांग सच होना चाहिए। कम से कम आपको समस्या के बारे में थोड़ी अधिक जानकारी देनी चाहिए।

क्या आपने इसे अन्य वीडियो के साथ परीक्षण किया है? यह हो सकता है कि उस वीडियो के साथ कुछ प्रकार की एन्कोडिंग समस्या है जिसमें आईपैड की समस्या है।

इसके अलावा - पिछले आईपैड ओएस संस्करण में एक बग था जो वर्तमान समय संपत्ति को सेट करने की क्षमता को तोड़ देता था। क्या आप नवीनतम ओएस संस्करण का उपयोग कर रहे हैं?

+0

मैं 3.2 का उपयोग कर रहा हूं (क्योंकि मैं इसे नवीनतम तक सीमित नहीं कर सकता) और मैंने एक ही समस्या के साथ एक अलग वीडियो स्रोत की कोशिश की है:/ – Andre

0

मैं एक ही मुद्दा हो रहा है - यहाँ मेरे मामले में गुण हैं:

UIWebView - iPad Simulator 
duration=4.861666679382324 
startTime=0 
currentTime=4.861666679382324 
buffered(1)=[0-0] 
seekable(0)= 
seeking=false 
error=null 
readystate=4 
networkstate=3 

Chrome: 
duration=4.9226298332214355 
startTime=0 
currentTime=4.9226298332214355 
buffered(1)=[0-4.9226298332214355] 
seekable(1)=[0-4.9226298332214355] 
seeking=false 
error=null 
readystate=4 
networkstate=1 

तो - कुछ भी नहीं बफ़र हो रही है और कुछ भी नहीं seekable है। मैं एक UIWebView के माध्यम से, आईपैड बंडल की संसाधन निर्देशिका से स्थानीय क्लिप चला रहा हूं।

मेरे मामले में, सभी मुझे चाहिए प्रत्येक खेल के बाद वीडियो के शीर्ष करने के लिए पुनर्स्थापित करने के लिए है, और मैं एक कॉल के माध्यम से यह पूरा करने के लिए "लोड()"

5

यह समस्या मूल्य से संबंधित है में सक्षम था video.currentTime संपत्ति पर उपयोग किया जाता है। मेरे विशिष्ट मामले पर मैंने हमेशा यह सुनिश्चित करके समस्या तय की कि मैं 1 दशमलव अंक के साथ फ़्लोटिंग पॉइंट नंबरों का उपयोग कर रहा था।

आईओएस 3.2 पर शून्य करने के लिए video.currentTime स्थापना वास्तव में शुरुआत करने के लिए वीडियो तलाश करेंगे लेकिन उसके बाद मान को अद्यतन नहीं होगा - timeupdate घटना अभी भी सामान्य रूप भेजा जाता है लेकिन यह हमेशा समान मान प्रदान करेंगे यदि आप currentTime पढ़ने के लिए प्रयास करें।

वीडियो उपयोग 0 के बजाय 0.1 के शुरू करने के लिए तलाश करने के लिए, 12.2345 उपयोग 12.2 को तलाश करने के लिए।

पुनश्च: यदि आपको (+(12.2345).toFixed(1)) उपयोग कर सकते हैं करने के लिए 1.

+0

मेरे पास एक ही समस्या है और ऊपर के अनुसार गोल करने की कोशिश की है, लेकिन यह ' आईओएस 6.1 पर काम नहीं कर रहा है। – mzedeler

1

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

ऐसा लगता है कि ऐसा करने का सबसे सुरक्षित तरीका यह है कि प्रत्येक वीडियो से संबंधित ईवेंट के बाद seekable जांचें, और यदि उस समय को शामिल किया गया है, तो उस समय currentTime सेट करें। आईपैड पर, seekablecanplaythrough ईवेंट के बाद तक भर नहीं सकता है, जो काफी देर हो चुकी है।

इस पर और अधिक के लिए my blog post देखें।