क्या आप iPad पर HTML5 वीडियो ऑटोप्ले कर सकते हैं?


123

<video>टैग autoplay="autoplay"विशेषता सफारी में ठीक काम करता है।

IPad पर परीक्षण करते समय, वीडियो को मैन्युअल रूप से सक्रिय किया जाना चाहिए।

मुझे लगा कि यह एक लोडिंग मुद्दा है, इसलिए मैंने मीडिया की स्थिति के लिए एक लूप जाँच की:

videoPlay: function(){
    var me = this;
    console.log('STATE: ' + $("#periscopevideo").get(0).readyState);
    if ($("#periscopevideo").get(0).readyState != 4){
      setTimeout(function(){me.videoPlay();}, 300);
    }
    else {
      $("#periscopevideo").get(0).play();
    }
}

राज्य 0iPad पर रहता है । मेरे डेस्कटॉप सफारी पर, यह माध्यम से चला जाता 0, 1और अंत में 4। आईपैड पर, यह केवल तब तक पहुंचता है 4जब मैं मैन्युअल रूप से "प्ले" तीर पर टैप करता हूं।

इसके अलावा, काम करता है के $("#periscopevideo").get(0).play()माध्यम से एक क्लिक से बुला onClickभी।

क्या ऑटोप्ले के संबंध में Apple द्वारा कोई प्रतिबंध है? (मैं वैसे ही iOS 5+ चला रहा हूं)।


संबंधित / डुप्लिकेट: stackoverflow.com/questions/2841966/… , stackoverflow.com/questions/4259928/…
apsillers

हो सकता है कि हमें ब्राउज़र का पता लगाना चाहिए, और आपको playVideo (): stackoverflow.com/questions/26895492/…
Redtopia

मेरे लिए यह काम github.com/Stanko/html-canvas-video-player
dimitar

इस विषय पर उपयोगी ब्लॉगपोस्ट: webkit.org/blog/6784/new-video-polurities-for-ios
Matthias M

आईओएस में ओपेरा मिनी डिफ़ॉल्ट रूप से ऑटोप्ले का समर्थन करता है, जबकि क्रोम, फ़ायरफ़ॉक्स और सफारी नहीं है और चालू करने के लिए विकल्पों की पेशकश नहीं करता है।
अनाम

जवाबों:


156

iOS 10 अपडेट

ऑटोप्ले पर प्रतिबंध को iOS 10 के रूप में हटा दिया गया है - लेकिन कुछ प्रतिबंधों के साथ (जैसे कि कोई ऑडियो ट्रैक न होने पर ऑटोप्ले किया जा सकता है)।

इन प्रतिबंधों की पूरी सूची देखने के लिए, आधिकारिक डॉक्स देखें: https://webkit.org/blog/6784/new-video-policies-for-ios/

iOS 9 और उससे पहले

IOS 6.1 के रूप में, यह iPad पर ऑटो-प्ले वीडियो के लिए संभव नहीं है।

मेरी धारणा यह है कि उन्होंने ऑटो-प्ले सुविधा को क्यों निष्क्रिय कर दिया है?

खैर, चूंकि कई डिवाइस मालिकों के पास अपने उपकरणों पर डेटा उपयोग / बैंडविड्थ सीमा होती है, मुझे लगता है कि ऐप्पल ने महसूस किया कि उपयोगकर्ता को स्वयं यह तय करना चाहिए कि वे बैंडविड्थ उपयोग कब शुरू करें।


कुछ शोध के बाद मैंने अपनी धारणा की पुष्टि करने के लिए iOS उपकरणों पर ऑटो-प्ले के संबंध में Apple प्रलेखन में निम्नलिखित निष्कर्ष निकाले:

"Apple ने स्क्रिप्ट और विशेषता कार्यान्वयन दोनों के माध्यम से iOS उपकरणों पर वीडियो के स्वचालित खेलने को अक्षम करने का निर्णय लिया है।

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

यहाँ सफारी HTML5 संदर्भ पृष्ठ पर एक अलग चेतावनी दी गई है कि iOS पर सफारी में एम्बेडेड मीडिया को क्यों नहीं चलाया जा सकता है:

चेतावनी : उपयोगकर्ता के खर्च पर सेलुलर नेटवर्क पर अवांछित डाउनलोड को रोकने के लिए, एम्बेडेड मीडिया को आईओएस पर सफारी में स्वचालित रूप से नहीं चलाया जा सकता है - उपयोगकर्ता हमेशा प्लेबैक शुरू करता है। एक नियंत्रक स्वचालित रूप से iPhone या आइपॉड टच पर एक बार प्लेबैक शुरू होने पर आपूर्ति की जाती है, लेकिन iPad के लिए आपको या तो नियंत्रण विशेषता सेट करनी होगी या जावास्क्रिप्ट का उपयोग करके एक नियंत्रक प्रदान करना होगा।


क्या इसका मतलब यह (कोड के संदर्भ में) जावास्क्रिप्ट की है कि है play()और load()तरीकों निष्क्रिय हैं जब तक उपयोगकर्ता शुरू प्लेबैक, जब तकplay() या load()विधि उपयोगकर्ता कार्रवाई (जैसे एक क्लिक करें घटना) से शुरू हो रहा है।

असल में, एक उपयोगकर्ता द्वारा शुरू किया गया प्ले बटन काम करता है, लेकिन एक onLoad="play()"घटना नहीं होती है।

उदाहरण के लिए, यह मूवी चलाएगा:

<input type="button" value="Play" onclick="document.myMovie.play()">

जबकि निम्नलिखित iOS पर कुछ नहीं करेगा:

<body onload="document.myMovie.play()">

1
नाली के नीचे iPhone सफारी के लिए एक ऑनलाइन अलार्म घड़ी बनाने के 3 महीने! हम (स्लीप.फ्म) ने फोन को जागते रहने का एक तरीका बताया, जबकि ऐप खुला है, लेकिन अब iOS 6.1 के साथ अलार्म ऑडियो वॉन्ट प्ले होगा। यह iOS 6.0 में ठीक काम किया। क्या आसपास कोई काम है?
चेज़र 7016

1
ओह रुको हमें iPhone सफारी के लिए हमारी मोबाइल वेब अलार्म घड़ी (sleep.fm) मिल गई है और फिर से चल रही है, इसलिए html5 ऑटोप्ले समर्थन की कमी के लिए चारों ओर काम कर रहे हैं।
chaser7016

1
@ Jonah1289 Sleep.fm पर अपने ब्लॉग पोस्ट के अनुसार, ब्रायन कैवलियर ने आईपैड या आईफ़ोन पर निम्नलिखित शीर्षक ऑटोप्ले ऑडियो के साथ एक गीथहब लिंक ट्वीट किया, जिसमें ऑडियो टैग के बजाय वेबकिटुडियोकोटेक्स्ट का उपयोग करना शुरू करने के लिए एक अच्छी जगह हो सकती है।
फ्रांसिस्को

1
अधिक जानकारी, कृपया - ऑटोप्ले समर्थन की कमी के लिए कौन से विशिष्ट वर्कअराउंड मौजूद हैं?
उमापीपेस्दान

11
वाईफाई पर होने पर उन्हें ऑटोप्ले की अनुमति देनी चाहिए, और या तो मैनुअल प्ले करें या उपयोगकर्ता को संकेत दें कि मोबाइल नेटवर्क पर वीडियो ऑटोप्ले करना चाहता है।
रिक

16

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

जबकि @DSG और @Giona सही हैं, और उनके उत्तरों में कुछ भी गलत नहीं है, एक रचनात्मक तंत्र है जिसे आप "आस-पास", "बोलने" के लिए नियोजित कर सकते हैं, यह सीमा है। यह नहीं कहा जाता है कि मैं इस सुविधा की परिधि का खंडन कर रहा हूं, काफी विपरीत है, लेकिन सिर्फ कुछ तंत्र हैं ताकि एक उपयोगकर्ता अभी भी "ऐसा महसूस करता है" मानो एक वीडियो या ऑडियो फ़ाइल "ऑटो खेल रहा है।"

आसपास का त्वरित कार्य मोबाइल पृष्ठ पर कहीं वीडियो टैग छिपा रहा है, क्योंकि मैंने एक उत्तरदायी साइट बनाई है मैं केवल छोटे स्क्रीन के लिए ऐसा करता हूं। वीडियो टैग (HTML और jQuery के उदाहरण):

एचटीएमएल

<video id="dummyVideo" src="" preload="none" width="1" height="2"></video>

jQuery

var $dummyVideo = $("<video />", {
  id: "dummyVideo",
  src: "",
  preload: "none",
  width: "1",
  height: "2"
});

उस पृष्ठ पर छिपे होने के साथ, जब कोई उपयोगकर्ता मूवी देखने के लिए "क्लिक" करता है (फिर भी उपयोगकर्ता इंटरैक्शन, उस आवश्यकता को प्राप्त करने का कोई तरीका नहीं है) माध्यमिक वॉच पेज पर नेविगेट करने के बजाय मैं छिपे हुए वीडियो को लोड करता हूं। यह मुख्य रूप से काम करता है क्योंकि मीडिया टैग वास्तव में उपयोग नहीं किया जाता है, लेकिन इसके बजाय एक त्वरित उदाहरण के लिए प्रचारित किया जाता है, इसलिए एक दृश्य वीडियो तत्व आवश्यक नहीं है। "क्लिक" (या मोबाइल पर "टचेंड") के लिए हैंडलर में।

$(".movie-container").on("click", function() {
  var url = $(this).data("stream-url");
  $dummyVideo.attr("src", url);
  $dummyVideo.get(0).load(); // required if src changed after page load
  $dummyVideo.get(0).play();
});

और वायोला। जहां तक ​​UX जाता है, एक उपयोगकर्ता खेलने के लिए एक वीडियो पर क्लिक करता है और क्विकटाइम उन वीडियो को खेलता है जो उन्होंने चुना था। यह सीमा के भीतर रहता है कि वीडियो केवल उपयोगकर्ता कार्रवाई के माध्यम से चलाया जा सकता है, इसलिए मैं किसी ऐसे व्यक्ति पर डेटा मजबूर नहीं कर रहा हूं जो इस सेवा के साथ वीडियो देखने का फैसला नहीं कर रहा है। मैंने यह पता लगाने की कोशिश की कि YouTube ने अपने मोबाइल के साथ वास्तव में कैसा खींच लिया है, जो अनिवार्य रूप से कुछ बहुत अच्छा जावास्क्रिप्ट पेज बिल्डिंग और फैंसी तत्व है जो वीडियो टैग के मामले में छिपता है।

tl; dr यहां कुछ हद तक "वर्कअराउंड" है, जो कि Apple उपकरणों के ऊपर और बाहर जाने के बिना iOS उपकरणों पर "ऑटोप्ले" UX सुविधा बनाने और बनाने के लिए है और फिर भी उपयोगकर्ता यह तय करते हैं कि क्या वे वीडियो देखना चाहते हैं (या ऑडियो सबसे अधिक पसंद है, हालांकि मैं उनकी अनुमति के बिना सिर्फ एक लोड किए बिना खुद का परीक्षण नहीं किया जाता है।

इसके अलावा, उस व्यक्ति ने टिप्पणी की जो नींद से है। इसलिए, यह अभी भी दुर्भाग्य से आपके मुद्दों का समाधान नहीं है जो समय आधारित ऑडियो प्ले बैक है।

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

संपादित करें

आगे की खोज से संकेत मिलता है कि उपरोक्त वर्कआउट केवल iPhone / iPod उपकरणों के लिए है। IPad सफारी में वीडियो चलाता है, इससे पहले कि यह पूरी तरह से प्रदर्शित किया गया है, इसलिए आपको खेलने से पहले क्लिक पर वीडियो का आकार बदलने के लिए कुछ तंत्र की आवश्यकता होगी या फिर आप ऑडियो और वीडियो के साथ समाप्त करेंगे।


2
$dummyVideo.get(0)ब्रैकेट के बजाय इसका उपयोग करना बेहतर होगा , इसलिए यदि आपका चयन खाली है तो jQuery इनायत से विफल हो सकता है।
मिक्रोस

12

बस सेट

webView.mediaPlaybackRequiresUserAction = NO;

ऑटोप्ले मेरे लिए iOS पर काम करता है।


29
यह एक वेबसाइट के लिए काम नहीं करता है, यह केवल उन साइटों के लिए काम करता है जहां आपने उन्हें एक मूल एप्लिकेशन के साथ लपेटा है।
ब्रेंडन बक

5
मेरा मतलब है, एक वेबपेज से (जैसा कि सवाल पूछ रहा है) यह पूरी तरह से दुर्गम कुछ है - हाँ, एक ब्राउज़र में जावास्क्रिप्ट ऐसा नहीं कर सकता है। यह केवल तभी काम करता है जब आप किसी अनुप्रयोग से आपके वेबव्यू के अंदर अपनी साइट को चला रहे हों, ताकि आपके पास इसका नियंत्रण हो और यह वास्तव में प्रश्न का हल न दे।
ब्रैंडन बक

6
@izuriel निष्पक्ष होने के लिए, उन्होंने "ऑब्जेक्टिव-सी" और "कोको-टच" के साथ प्रश्न को टैग किया, इसलिए यह मानने के लिए दूर नहीं है कि वह एक वेबव्यू का उपयोग कर रहा है
क्लार

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


11

IOS 10 के अनुसार, वीडियो अब ऑटोप्ले कर सकते हैं , लेकिन उनमें से केवल या तो म्यूट हैं, या कोई ऑडियो ट्रैक नहीं है। वाह!

संक्षेप में:

  • <video autoplay> निम्नलिखित तत्वों को पूरा करने वाले तत्वों के लिए तत्व अब ऑटोप्ले विशेषता का सम्मान करेंगे:
    • <video> तत्वों को उपयोगकर्ता के इशारे के बिना ऑटोप्ले करने की अनुमति होगी यदि उनके स्रोत मीडिया में कोई ऑडियो ट्रैक नहीं है।
    • <video muted> तत्वों को एक उपयोगकर्ता के इशारे के बिना ऑटोप्ले करने की भी अनुमति होगी।
    • यदि कोई <video>तत्व ऑडियो ट्रैक प्राप्त करता है या उपयोगकर्ता के इशारे के बिना अन-म्यूट हो जाता है, तो प्लेबैक रुक जाएगा।
    • <video autoplay> तत्व केवल तब ऑन-स्क्रीन दिखाई देने लगेंगे जब वे व्यूपोर्ट में स्क्रॉल किए जाते हैं, सीएसएस के माध्यम से दिखाई देते हैं, और DOM में डाले जाते हैं।
    • <video autoplay> यदि वे दृश्य के बाहर स्क्रॉल किए जाने से गैर-दृश्यमान हो जाते हैं, तो तत्व रुक जाएंगे।

अधिक जानकारी यहाँ: https://webkit.org/blog/6784/new-video-policies-for-ios/


4
ऑटोप्ले विशेषता सिर्फ पीसी पर काम करती है, मोबाइल पर काम नहीं करती। मैंने कई बार कोशिश की है।
1

7

इस सफारी एचटीएमएल 5 संदर्भ में , आप पढ़ सकते हैं

उपयोगकर्ता के खर्च पर सेलुलर नेटवर्क पर अवांछित डाउनलोड को रोकने के लिए, एम्बेडेड मीडिया को आईओएस पर सफारी में स्वचालित रूप से नहीं खेला जा सकता है - उपयोगकर्ता हमेशा प्लेबैक शुरू करता है। एक नियंत्रक स्वचालित रूप से iPhone या आइपॉड टच पर एक बार प्लेबैक शुरू होने पर आपूर्ति की जाती है, लेकिन iPad के लिए आपको या तो नियंत्रण विशेषता सेट करनी होगी या जावास्क्रिप्ट का उपयोग करके एक नियंत्रक प्रदान करना होगा।


38
"जीआईएफ फाइलों के अलावा जो कई एमबी हो सकती हैं और लोगों को बिना एहसास के भी बैंडविड्थ का उपयोग कर सकती हैं"
साइमन_वेअर

ज्यादातर समय सटीक रहने के लिए @Simon_Weaver x12 बार।
बुरक टोकक

2

आइओएस में ऑटोप्ले सुनिश्चित करने के लिए पहले वीडियो को म्यूट करें, फिर चाहें तो इसे अनम्यूट कर दें।

<video autoplay loop muted playsinline>
  <source src="video.mp4?123" type="video/mp4">
</video>

<script type="text/javascript">
$(function () {
  if (!navigator.userAgent.match(/(iPod|iPhone|iPad)/)) {
    $("video").prop('muted', false);
  }
});
</script>
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.