2012-08-07 19 views
10

मैं pause() विधि का उपयोग कर एक वीडियो को रोक रहा हूं .. समस्या यह है कि ऑडियो चल रहा है ... मैंने फ़ायरफ़ॉक्स में जावास्क्रिप्ट कंसोल से इसे रोकने का भी प्रयास किया .. । कुछ नहीं हुआ। वीडियो .ogg प्रारूप में है और क्रोम में भी नहीं खेल रहा है (क्योंकि मुझे लगता है कि यह समर्थित नहीं है)। मैंने अमेज़ॅन एस 3 पर वीडियो होस्ट किया और यह पूरी तरह स्ट्रीमिंग कर रहा है। मैं जेएसओएन अनुरोध से अपनी जानकारी लोड कर रहा हूं, गतिशील रूप से तत्व बना रहा हूं। यहाँ कुछ कोड है:वीडियो रोकना एचटीएमएल 5 वीडियो टैग में ऑडियो नहीं रोकता

function showVideo() { 
     var video = videodata; 

     var videobox = $('#videobox').first(); 
     var videoplayer = document.getElementById('videoplayer'); 

     if (video.Enabled) { 
      if ((videoplayer != null && videoplayer.currentSrc != video.Location) || videoplayer == null) { 
       console.log('Creating video elem'); 
       videobox.empty(); 
       videobox.append('<video id="videoplayer" preload="auto" src="' + 
        video.Location + '" width="100%" height="100%" autoplay="autoplay" loop="loop" />'); 
       videobox.show(); 
      } 
     } else { 
      if (videoplayer != null) { 
       videoplayer.pause(); 
       console.log('Pausing video...'); 
      } 
      console.log('Deleting video elem'); 
      videobox.hide(); 
      videobox.empty(); 
     } 
    } 

मैं पहले से ही से पहले एक ऐसी ही प्रश्न पोस्ट ... लेकिन अब मैं अन्य ब्राउज़र का उपयोग कर रहा हूँ, इसलिए मैंने सोचा कि मैं एक नया सवाल पैदा करने के लिए किया है।


यहाँ काम कर कोड (उपयोगकर्ता heff करने के लिए धन्यवाद!) है

function showVideo() { 
    var video = videodata; 

    var videobox = $('#videobox').first(); 
    var videoplayer = document.getElementById('videoplayer'); 

    if (video.Enabled) { 
     if ((videoplayer.src != video.Location) || videoplayer.src == '') { 
      console.log('Playing video: ' + video.Location); 
      videoplayer.src = video.Location; 
      videoplayer.load(); 
      videoplayer.play(); 
      videobox.show(); 
     } 
    } else { 
     if (videoplayer.src != '') { 
      console.log('Pausing video...'); 
      videoplayer.pause(); 
      videoplayer.src = ''; 
      videobox.hide(); 
     } 
    } 
} 

उत्तर

4

मेरा अनुमान होगा कि showVideo बुलाया जा रहा है दो बार कुछ कैसे और दो प्रतियां, बनाने, जिनमें से एक रखता है दूसरे पर विराम कॉल करने के बाद भी खेलना।

आपके कोड में, videoplayer var आपके द्वारा जोड़े गए वीडियो टैग को संदर्भित नहीं करेगा, यह उस बिंदु को इंगित करेगा जो पहले था, जो मुझे लगता है कि जब आप बॉक्स खाली करते हैं तो हटा दिया जाता है, लेकिन हो सकता है स्मृति में चारों ओर छड़ी (और ध्वनि बजाना जारी रखें)।

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

videoplayer.src = video.Location; 
videoplayer.autoplay = true; 
// etc. 

इसके अलावा, 100% चौड़ाई/ऊंचाई विशेषताओं के लिए मान्य मान नहीं है। किसी क्षेत्र को भरने के लिए वीडियो को खींचने के लिए आपको सीएसएस का उपयोग करने की आवश्यकता होगी।

+0

मैंने आपके सुझाव का पालन किया कि हर बार तत्व को दोबारा न बनाएं और यह काम करता है। लेकिन मैंने जांच की कि विधि दोबारा ब्लॉक कर रही है अगर ब्लॉक दो बार: नहीं। मुझे लगता है कि यह एक बग है .. बीटीडब्ल्यू, मैंने कामकाजी कोड पोस्ट किया है, अगर किसी को भी एक ही समस्या है। ;-) –

+0

बहुत बढ़िया! खुशी हुई यह मदद की। – heff

8

हे दोस्तों, मेरे पास एक समान समस्या थी जिसे वास्तव में अद्भुत कोडर के साथ हल किया गया था। इस पोस्ट को देखें। यह बहुत अच्छा उपयोग हो सकता है। HTML5 Video Controls do not work

आप html विशेषता का उपयोग कर रहे हैं:

<video id="yourvideoID" poster="Pic.jpg" loop autoplay controls width="100%"> 
 
<source src="//example.website/InnovoThermometer.mp4" type="video/mp4">   
 
</video>

ऑटोप्ले निकालें।

तो बजाय ऑटोप्ले उपयोग करने के लिए jQuery का उपयोग करें: html5 video playing twice (audio doubled) with JQuery .append()

और

Auto-play an HTML5 video on Dom Load using jQuery

:

$(document).ready(function() { $("#bigvid3").get(0).play(); });

स्रोत के रूप में कई स्थानों देखते हैं

+4

जबकि यह सैद्धांतिक रूप से प्रश्न का उत्तर दे सकता है, [यह बेहतर होगा] (// meta.stackoverflow.com/q/8259) यहां उत्तर के आवश्यक हिस्सों को शामिल करने के लिए, और संदर्भ के लिए लिंक प्रदान करें। –

+3

जो भी मुझे -1 अच्छा काम दिया। मैंने एक और पूर्ण प्रतिक्रिया को दर्शाने के लिए अपना जवाब तय किया। मैं बस मदद करने की कोशिश कर रहा हूँ। –

+4

भूल गए -1 एस, आपने अपनी पोस्ट संपादित की है और इसे एक अच्छा जवाब दिया है। समय बहने के साथ आपको अधिक +1 मिलेंगे। हैटर्स से नफरत होगी :) –

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