2011-02-10 10 views
5

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

क्या यह व्यवहार बदलना संभव है?

+0

मैं GitHub पर मामला दर्ज किया है [एक मुद्दा requ यह मानते हुए कि इसके लिए एक विकल्प जोड़ा जा सकता है] (https://github.com/johndyer/mediaelement/issues/546)। –

उत्तर

3

मेरा मानना ​​है कि <video> तत्व का डिफ़ॉल्ट व्यवहार शुरुआत में वापस जाना है ताकि आपको अंतिम ईवेंट को सुनकर इसे ओवरराइड करना होगा।

var player = $('#myvideo').mediaelementplayer(); 

player.media.addEventListener('ended', function(e) { 
    player.media.setCurrentTime(player.media.duration); 
}, false); 

आशा है कि मदद करता है!

+0

हाय जॉन - प्रतिक्रिया के लिए बहुत बहुत धन्यवाद। मैंने आपके वीडियो के साथ पृष्ठ के तत्व के अंदर के अंदर अपना कोड रखा। यह सुनिश्चित करने के लिए कि मैं समझता हूं, #myvideo div पर पृष्ठ वाला वीडियो है। मैंने #div id का उपयोग करने के लिए नाम बदल दिया। यह अभी भी शुरुआत के लिए रिवाइंडिंग है। क्या मैंने कुछ गलत किया? - धन्यवाद - डॉन –

+0

ओपी ने एक नया प्रश्न पूछकर इस जवाब का और जवाब देने का प्रयास किया [http://stackoverflow.com/questions/4996510/still-trying-to-stop-video-from-rewinding-in -mediaelement-js)। – Pops

1

John Dyer's answer में कोड वास्तव में मेरे लिए कुछ कारणों से काम नहीं करता था। मैं हालांकि इस संस्करण काम कर पाने में सक्षम था ...

var videoPlayer = new MediaElementPlayer('#homepage-player', { 
    loop: false, 
    features:[], 
    enablePluginDebug: false, 
    plugins: ['flash','silverlight'], 
    pluginPath: '/js/mediaelement/', 
    flashName: 'flashmediaelement.swf', 
    silverlightName: 'silverlightmediaelement.xap', 

    success: function (mediaElement, domObject) { 
     // add event listener 
     mediaElement.addEventListener('ended', function(e) { 
      mediaElement.pause(); 
      mediaElement.setCurrentTime(mediaElement.duration); 
     }, false); 
    }, 
    error: function() { 
    } 

}); 

videoPlayer.play(); 

समस्या सिर्फ मैं हो रही है - जो है बहुत निराशा होती है, यह क्रोम में पिछले और सबसे पहले फ्रेम के बीच झिलमिलाते जाता है। अन्यथा, यह फ़ायरफ़ॉक्स और आईई में अपेक्षित काम करता है ...

3

शायद सबसे अच्छा समाधान डरने और मीडियालेमेंट स्रोत से "रिवाइंड-टू-स्टार्ट-ऑन-वीडियो-एंड" हैंडलर को हटाने के लिए नहीं है।

यदि आप मीडियालेमेंट के लिए स्रोत कोड में जाते हैं और "समाप्त" की खोज करते हैं, तो आप अंततः देखेंगे कि वीडियो के अंत तक पहुंचने के बाद रीवाइंडिंग वास्तव में मीडियालेमेंट द्वारा जानी जाती है।

यदि आप उस कार्यक्षमता को हटाना चाहते हैं तो मीडियाधारक स्रोत से "समाप्त" ईवेंट के लिए उस हैंडलर को निकालने के लिए स्वतंत्र महसूस करें। इससे इस समस्या के कुछ अन्य उत्तरों में उल्लिखित अंतिम और प्रथम फ्रेम के बीच झटके सहित सभी समस्याओं को हल किया जाता है।

+0

ऐसा करने के लिए, 'mediaelement-and-player.min.js' संपादित करें और मीडिया.addEventListener ("समाप्त", फ़ंक्शन() {try {c.media.setCurrentTime (0)} पकड़ें (एच) {} .... c.media.setCurrentTime (0) से /*c.media.setCurrentTime(0)*/ –

8

मैंने इस समस्या के लिए एक फिक्स लिखा और जॉन संस्करण 2.10.2 में विलय हो गया। अब एक विकल्प "ऑटो रिवाइंड" है जिसे आप शुरुआत में वापस जाने से रोकने के लिए झूठी पर सेट कर सकते हैं। ईवेंटलिस्टर जोड़ा नहीं गया है और इसे हटाने की कोई आवश्यकता नहीं है।

$('video').mediaelementplayer({ 
    autoRewind: false 
}); 
+0

उत्कृष्ट टिप्पणी करें। इस बात के लिए अब एक सार्वभौमिक समाधान है। – amustill

0

यह समस्या मैं सामना करना पड़ा जब ऑडियो फ़ाइलें

खेलने

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

अपने स्रोत सेट करने के बाद एक फ्रेम से यह कम हो सकती है, अपनी फ़ाइल और रोक लोड हो रहा है, तो

myplayer.player.play(); 
    var currentTime = myplayer.player.getCurrentTime(); 
    myplayer.player.setCurrentTime(currentTime-0.1); 
    myplayer.player.setCurrentRail();