2010-10-22 3 views
7

Tôi đang tạo một loạt video hướng dẫn và muốn ngăn người dùng tìm kiếm các phần chuyển tiếp và bỏ qua. Tôi sẽ sử dụng trình phát video HTML5 sẽ được sử dụng cho trình duyệt trên máy tính để bàn và iPad. Lý tưởng nhất, tôi muốn điều này để làm việc trên iPhone là tốt, nhưng tôi nhận ra bạn không có quyền kiểm soát các video trên điện thoại kể từ khi nó sử dụng máy nghe nhạc video iPhone.Trình phát video HTML5 ngăn tìm kiếm

Làm cách nào để ngăn người dùng tìm kiếm tiếp trên trình phát video HTML5?

+2

* "ngăn người dùng tìm kiếm chuyển tiếp" *: ý tưởng tồi, IMO. Điều gì sẽ xảy ra nếu người dùng xem một nửa, đóng trình duyệt của mình và sau đó muốn xem phần thứ hai? S/Anh ta sẽ bị buộc phải xem lại phần đầu tiên. –

+0

Tôi dự định đặt các điểm kiểm tra trong toàn bộ video sẽ lưu tiến trình của người dùng vào DB khi video đang phát. Nếu người dùng quay trở lại trang thì họ sẽ bắt đầu từ điểm kiểm tra cuối cùng của họ. Các video sẽ từ 2 - 5 phút. Tôi nhận thấy rằng việc loại bỏ khả năng tìm kiếm chuyển tiếp không phải là một ý tưởng hay, mặc dù dự án yêu cầu người dùng xem toàn bộ video trước khi họ có thể tiếp tục với hướng dẫn tiếp theo. Chắc chắn, mọi người có thể xem> nguồn và tải xuống, nhưng hướng dẫn này là dạy cho họ kỹ năng bắt buộc là điều kiện tiên quyết cho hướng dẫn tiếp theo. – jaysonp

+0

Vâng, tôi có thể nghĩ ra một ví dụ buộc bạn phải xem toàn bộ video - các khóa học lái xe trực tuyến .. họ sẽ làm mọi thứ ngay cả khi bạn đọc xong văn bản hoặc video, chúng sẽ không cho phép bạn chuyển sang phần tiếp theo. Điều đó thật tệ. Nhưng họ phải tuân theo các yêu cầu của luật pháp. – netrox

Trả lời

3

Nếu bạn thực sự muốn làm điều đáng kinh ngạc với người dùng này, thì bạn có thể sử dụng thuộc tính controls. Bạn sẽ phải thực hiện bất kỳ điều khiển nào bạn muốn cho phép sử dụng JS.

Tất nhiên, người dùng luôn có thể xem > nguồn để nhận URI của video và tải xuống.

+0

Cùng một vấn đề với bình luận của casablanca ở trên. Đây không phải là câu trả lời hữu ích. – Carnix

+0

Liên kết chết cho câu trả lời này – Antoine

0

Tôi đồng ý với @Bart Kiers rằng đây không phải là một ý tưởng hay, nhưng nếu bạn phải làm điều đó, tôi có thể nghĩ ra một cách: ẩn điều khiển và cung cấp nút phát của riêng bạn để bắt đầu video bằng JavaScript.

+3

Một lần sử dụng tôi có thể nghĩ là quảng cáo video đầu video, Nhà quảng cáo không thích trả tiền cho một thứ bạn có thể bỏ qua. – SimonGates

+1

Anh ấy không thực sự hỏi đây có phải là một ý tưởng hay hay không. Có rất nhiều trường hợp sử dụng mà người dùng không thể bỏ qua. Đặc biệt, một hệ thống CBT sẽ là một ví dụ tốt. -1 – Carnix

6

Tôi chỉ muốn ngăn tìm kiếm tiếp. Tôi có nhiều mã hơn trong hệ thống của mình cho phép họ tạm dừng và quay lại sau. Nó ghi lại vị trí hiện tại và đặt vị trí video khi tải.

Tôi đang sử dụng video.js. Tôi đã cố gắng sử dụng sự kiện timechange, nhưng nó cháy trước khi tìm kiếm. Vì vậy, tôi sử dụng một khoảng thời gian để lấy vị trí hiện tại mỗi giây. Nếu vị trí tìm kiếm lớn hơn vị trí hiện tại, hãy đặt lại vị trí đó. Hoạt động tuyệt vời.

var player = null; 
var curpos = 0; 
videojs("player").ready(function(){ 
    player = this; 
}); 

player.on('seeking', function() { 
    var ct = player.currentTime(); 
if(ct > curpos) { 
    player.currentTime(curpos); 
} 
}); 

function getpos() { 
    curpos = player.currentTime(); 
} 
onesecond = setInterval('getpos()', 1000); 
+0

Cuối cùng, không chắc đây có phải là jQuery hay không, nhưng tôi phải thay thế 'setInterval ('getpos()', 1000)' bằng 'setInterval (getpos, 1000)' để nó hoạt động. Đoạn trích tuyệt vời, cảm ơn! – jporcenaluk

1

Cảm ơn câu trả lời của bạn Rick.

Tôi nhận thấy rằng người dùng có thể kéo và giữ người tìm kiếm cho phép họ tiếp tục vì vậy tôi đã thêm nơi không tìm kiếm hàm getPos.HTML 5 và jQuery.

var video = document.getElementsByTagName('video')[0]; 
 

 
function allowMove() { 
 
    $('input[id$="btnNext"]').removeAttr('disabled'); 
 
    $('input[id$="videoFlag"]').val("1"); 
 
} 
 

 
function getpos() { 
 
    if (!(video.seeking)) { 
 
    curpos = video.currentTime; 
 
    } 
 
    console.log(curpos) 
 
} 
 
onesecond = setInterval('getpos()', 1000); 
 

 
function setPos() { 
 
    var ct = video.currentTime; 
 
    if (ct > curpos) { 
 
    video.currentTime = curpos; 
 
    } 
 
}

6

Một ví dụ khác cho Video.js:

videojs('example_video_1').ready(function(){ 
    var player = this; 
    var previousTime = 0; 
    var currentTime = 0; 
    var seekStart = null; 

    player.on('timeupdate', function(){ 
    previousTime = currentTime; 
    currentTime = player.currentTime(); 
    }); 

    player.on('seeking', function(){ 
    if(seekStart === null) { 
     seekStart = previousTime; 
    } 
    }); 

    player.on('seeked', function() { 
    if(currentTime > seekStart) { 
     player.currentTime(seekStart); 
    } 
    seekStart = null; 
    }); 
}); 
+0

Hoạt động hoàn hảo! – Tomjr260

0

Tại sao không theo cách này?

var video = document.getElementById("myVideo"); 
var counter = 0; 

video.on('timeupdate', function() { 
    if (video[0].paused == false) { 
    counter = video[0].currentTime; 
    } 
} 

video.on('seeking', function(e) { 
    if (parseInt(counter, 10) != parseInt(video[0].currentTime, 10)) { 
    video[0].currentTime = counter; 
    } 
});