2011-02-10 30 views
5

Tôi đang tự hỏi cách dừng trình phát MediaElement.js ở cuối video. Tôi tự hỏi làm cách nào để dừng trình phát mediaelement.js ở cuối video. Tôi đã hy vọng giữ khung hình cuối cùng và không tua lại để hiển thị khung hình đầu tiên như bây giờ.Dừng thay vì tua ở cuối video trong MediaElement.js

Có thể thay đổi hành vi này không?

+0

tôi đã nộp [một vấn đề trên GitHub requ esting rằng một tùy chọn được thêm vào cho điều này] (https://github.com/johndyer/mediaelement/issues/546). –

Trả lời

3

Tôi tin rằng hành vi mặc định của yếu tố <video> là quay trở lại phần đầu để bạn chỉ cần ghi đè điều này bằng cách lắng nghe sự kiện đã kết thúc.

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

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

Hy vọng điều đó sẽ hữu ích!

+0

Xin chào John - cảm ơn rất nhiều vì đã trả lời. Tôi đã đặt mã của bạn bên trong bên trong phần tử của trang bằng video của tôi. Để đảm bảo tôi hiểu, #myvideo là div chứa video trên trang. Tôi đã đổi tên để phản ánh id #div mà tôi đã sử dụng. Nó vẫn còn tua lại để bắt đầu. Tôi đã làm điều gì sai ư? - cảm ơn - Don –

+0

OP đã cố gắng trả lời thêm câu trả lời này bằng cách đặt câu hỏi mới [tại đây] (http://stackoverflow.com/questions/4996510/still-trying-to-stop-video-from-rewinding-in -mediaelement-js). – Pops

1

Mã trong John Dyer's answer không thực sự hiệu quả đối với tôi vì một số lý do. Tuy nhiên tôi đã có thể để có được phiên bản này làm việc ...

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(); 

Vấn đề duy nhất mà tôi đang gặp - đó là rất bực bội, là nó đang nhấp nháy giữa khung LAST và FIRST trong Chrome. Nếu không, nó hoạt động như mong đợi trong Firefox và IE ...

3

Có lẽ giải pháp tốt nhất là không sợ và loại bỏ trình xử lý "tua lại để bắt đầu-trên-video-end" từ nguồn đa phương tiện.

Nếu bạn đi vào mã nguồn cho đa phương tiện và tìm kiếm "đã kết thúc", cuối cùng bạn sẽ thấy, tua lại sau khi kết thúc video thực sự được cố tình thực hiện bởi mediaelement.

Nếu bạn muốn xóa chức năng đó, hãy xóa bộ xử lý đó cho sự kiện "đã kết thúc" khỏi nguồn đa phương tiện. Điều đó giải quyết tất cả các vấn đề, bao gồm cả nhấp nháy giữa khung cuối cùng và khung hình đầu tiên, được đề cập trong một số câu trả lời khác cho câu hỏi này.

+0

Để thực hiện việc này, hãy chỉnh sửa 'mediaelement-and-player.min.js' và chỉnh sửa media.addEventListener ("ended", function() {try {c.media.setCurrentTime (0)} catch (h) {} .... nhận xét ra c.media.setCurrentTime (0) thành /*c.media.setCurrentTime(0)*/ –

8

Tôi đã viết bản sửa lỗi cho vấn đề này và John đã hợp nhất trong phiên bản 2.10.2. Hiện tại, có một tùy chọn "autoRewind" mà bạn có thể đặt thành false để ngăn người chơi quay lại phần đầu. Trình xử lý sự kiện không được thêm vào và không cần phải xóa nó nữa.

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

Tuyệt vời, vì vậy vui mừng có một giải pháp phổ quát cho điều này ngay bây giờ. – amustill

0

Vấn đề này tôi phải đối mặt khi chơi tập tin âm thanh

Vấn đề là trong vở kịch, khi bạn tạm dừng nghe nhạc của bạn tập tin sẽ ngừng nhưng trước khi tiếp tục, bạn phải giảm thời gian hiện tại của người chơi bởi bất kỳ giá trị trong trường hợp của bạn, bạn có thể làm giảm nó bằng một khung có lẽ

sau khi cài đặt nguồn của bạn, tải file và tạm dừng của bạn, sau đó

myplayer.player.play(); 
    var currentTime = myplayer.player.getCurrentTime(); 
    myplayer.player.setCurrentTime(currentTime-0.1); 
    myplayer.player.setCurrentRail(); 
Các vấn đề liên quan