2012-05-09 24 views
6

Bối cảnh:

Tôi đang phát triển một chương trình giảng dạy dựa trên web (sử dụng Drupal 7, nếu có vấn đề) yêu cầu người dùng xem video giáo dục theo tuần tự. Tôi muốn đảm bảo rằng họ xem toàn bộ video trước khi có quyền truy cập vào video tiếp theo. Tôi khá quen thuộc với API YouTube nhưng tôi đã xem qua hướng dẫn của nhà phát triển PHP và không tìm thấy bất kỳ thông tin nào về cách thực hiện điều này.Làm cách nào để đảm bảo người dùng xem toàn bộ video?

Tôi đang mở cho mọi cách hợp lý để hoàn thành việc này. Tôi đã nghĩ rằng việc kiểm tra xem một hoặc hai mã thời gian ngẫu nhiên có bị tấn công hay không, cũng như liệu bộ phim có hoàn thành chơi hay không, sẽ khiến cho việc bỏ qua phía trước mà không xem video là khá hợp lý.

Vì vậy, để thực hiện điều này tôi cần phải tìm ra hai điều:

  1. Làm thế nào để cho máy chủ biết khi video được xem đã nhấn mã thời gian lựa chọn, và
  2. Làm thế nào để cho máy chủ biết khi nào đã kết thúc video.

Nếu ai đó có thể chỉ cho tôi đúng hướng tôi đánh giá rất cao.

+7

Đây là một điều khủng khiếp khủng khiếp đối với người dùng của bạn, nhưng tôi đoán bạn có thể đưa liên kết tới video tiếp theo là một trong những chú thích có thể nhấp khủng khiếp ở cuối mỗi video? – meagar

+0

Tôi thực sự đã viết một cái gì đó tương tự cho các tập tin âm thanh. Bạn nên xem xét việc viết trình phát video html html tùy chỉnh hoặc trình phát video flash. –

+0

@meagar - Tôi cần phải chỉ định vai trò dựa trên việc video có được xem hay không, vì vậy tôi cần chính máy chủ để có thể được thông báo về sự kiện. – beth

Trả lời

1

Với api youtube bạn có thể 'ping máy chủ'

function onPlayerStateChange(evt) {  
     if (evt.data == 0){ 
     alert (player.getDuration()) 
    } 
} 

Sau đó bạn có thể nhận được trong suốt thời gian của clip. Sử dụng thêm thời gian api khi người dùng bắt đầu và dừng lại sẽ cho phép bạn tính thời gian cho biết người dùng đã dành để xem clip. So sánh điều này với thời lượng và nếu nó phù hợp (hoặc đủ gần) kích hoạt phần thưởng.

https://developers.google.com/youtube/js_api_reference

3

Tất cả những gì bạn cần làm là ping máy chủ của bạn khi trình phát video đã kết thúc (hoặc gần cuối) của tệp phương tiện.

Bạn có thể viết trình phát video (javascript hoặc flash) của riêng mình hoặc sửa đổi một trong các trình phát hiện có. Kỹ thuật này sẽ không hoạt động với thẻ HTML5 <video>.

+0

Làm cách nào? Tôi nghĩ bạn có thể làm điều này với API Youtube –

+0

Cảm ơn! Bạn có bất kỳ thông tin nào về cách kích hoạt ping không? Đó có phải là điều tôi đã bỏ lỡ trong hướng dẫn API/Dev hoặc có tài liệu nào khác về nó ở đâu đó không? Ngoài ra, đây có phải là cái gì đó chỉ có thể được thực hiện ở phần cuối của video, hoặc có thể lựa chọn mã thời gian cũng kích hoạt một ping? – beth

+0

Nếu bạn ping gần/ở cuối để xác minh rằng người dùng đã xem video hoàn chỉnh, mọi người sẽ chỉ nhảy đến cuối. Không? –

0

Đặt liên kết xác thực ở cuối video; sử dụng liên kết như một cách để xác minh rằng họ đã thu thập mã thông báo. Điều này sẽ không giải quyết được vấn đề của các điểm kiểm tra, và người xem có thể nhấn play và bỏ đi, nhưng điều đó có thể xảy ra với các trạm kiểm soát.

Video trên Youtube có thể có các liên kết được chèn trong quá trình sử dụng tính năng chú thích trong giao diện người tải lên. Kết hợp liên kết được mã hóa trong chú thích trong vòng mười lăm giây hoặc lâu hơn với xác thực người dùng của trang web của bạn để tạo thông tin đăng nhập phía máy chủ.

+1

Tôi có thể thấy rằng là một phần của giải pháp nhưng nó vẫn không ngăn việc bỏ qua đến cùng. Tôi cũng không nghĩ rằng có trang web tìm ra từ video cho dù liên kết đó đã được hiển thị sẽ dễ dàng hơn hoặc hiệu quả hơn đáng kể so với sử dụng các cuộc gọi API. – beth

1

The Flash và JavaScript chơi tài liệu tham khảo API bao gồm các chức năng để nhận Playback Status, cụ thể:

player.getCurrentTime():Number 
Returns the elapsed time in seconds since the video started playing. 

tôi đang tìm kiếm thông qua các tài liệu tham khảo API sai, nhưng cuối cùng tìm thấy nó. Yay.

0

Tôi đã làm việc trên một cái gì đó khá tương tự, và tôi đã quyết định đi với một cầu thủ tùy chỉnh bằng cách sử dụng iframe api https://developers.google.com/youtube/iframe_api_reference và loại bỏ các chrome mặc định, mà giữ chúng từ bỏ qua phía trước.

// api has been loaded 
function onYouTubeIframeAPIReady(){ 
    var player = new YT.Player(el, { 
     videoId: video_id, 
     width: 700, 
     playerVars: { 
      controls: 0, 
      modestbranding: 1, 
      rel: 0    
     }, 
     events: { 
      onStateChange: function(d){ 
       switch(d.data){ 
        case YT.PlayerState.ENDED: 
         // send notification of video ended 
       } 
      } 
     } 
    }); 
} 

    // async load of api 
var tag = document.createElement('script'); 
tag.src = "//www.youtube.com/iframe_api"; 
var firstScriptTag = document.getElementsByTagName('script')[0]; 
firstScriptTag.parentNode.insertBefore(tag, firstScriptTag); 

Chức năng được gọi khi tải api youtube được tải đầy đủ và đang thiết lập trình phát iframe. el là đối tượng dom bạn muốn thay thế bằng video và video_id là id của video bạn muốn tải. controls: 0 là bit ma thuật ẩn chrome của trình phát. Sau đó, trong hàm onStateChange, bạn có thể gửi yêu cầu ajax hoặc thay đổi bố cục của bạn hoặc bất cứ điều gì bạn cần làm ở cuối video.

1

Nếu bạn sử dụng html5 và JavaScript, bạn có thể kiểm tra nguyên bản xem toàn bộ video hoặc một số phần nhất định đã được phát chưa.

API video của Html5 theo dõi tất cả các phạm vi thời gian đã được phát. Hãy xem tài liệu cho thuộc tính <video>.played và lớp TimeRanges.

Các vấn đề liên quan