Advertisement
Guest User

Untitled

a guest
May 25th, 2016
48
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.87 KB | None | 0 0
  1. // Initialise player
  2. var brightcovePlayer;
  3. var prevIndex = -1;
  4.  
  5. function handleCue() {
  6. if(prevIndex != -1) {
  7. document.getElementById("chapter_item"+prevIndex).className = "";
  8. }
  9. var currentCueIndex = getCurrentCue();
  10. document.getElementById("chapter_item"+currentCueIndex).className = "hilightcue";
  11. prevIndex = currentCueIndex;
  12. }
  13.  
  14. function getCurrentCue() {
  15. var allCuepoints = brightcovePlayer.mediainfo.cue_points;
  16.  
  17. // Loop through the cuepoints
  18. for (var i = 0; i < allCuepoints.length; i++){
  19. if (allCuepoints[i].type === "CODE"){
  20. var current = brightcovePlayer.currentTime();
  21.  
  22. var cueCurrent = allCuepoints[i].time;
  23. var cueNext = (i == allCuepoints.length-1) ? brightcovePlayer.duration() : allCuepoints[i+1].time;
  24.  
  25. if(current >= cueCurrent && current < cueNext) {
  26. return i;
  27. }
  28. }
  29. }
  30. return -1;
  31. }
  32.  
  33.  
  34. // When the player's ready, let's get started
  35. videojs("player").ready(function(){
  36. brightcovePlayer = this;
  37.  
  38. // Wait until the video metadata has loaded
  39. brightcovePlayer.one("loadedmetadata", function(){
  40. // Setting up chapters
  41. // Get all of the cuepoints from the video
  42. var allCuepoints = brightcovePlayer.mediainfo.cue_points;
  43. // Loop through the cuepoints
  44. for (var i = 0; i < allCuepoints.length; i++){
  45. // Only use the type 1 cuepoints, which will skip the pre and post roll ones (if present)
  46. if (allCuepoints[i].type === "CODE"){
  47. // create a name li element for each cuepoint
  48. var name = document.createElement('name');
  49. name.innerText = allCuepoints[i].name;
  50. // assign the time of the cuepoint to the li element
  51. name.setAttribute('data-time', allCuepoints[i].time);
  52. // assign the cuepoint description as the link "title" text
  53. name.setAttribute('title', allCuepoints[i].metadata);
  54. name.onclick = function(){
  55. // when clicking the li element, the player will seek to that time
  56. brightcovePlayer.currentTime(this.getAttribute('data-time'));
  57. }
  58.  
  59. // set id to each of the chapter items
  60. name.setAttribute("id", "chapter_item"+i);
  61.  
  62. // add the li elements to the page
  63. var li = document.createElement('li');
  64. li.appendChild(name);
  65. document.getElementById('chapters').appendChild(li);
  66. }
  67. }
  68.  
  69. var tt = brightcovePlayer.textTracks()[0];
  70. tt.oncuechange = function() {
  71. if (tt.activeCues[0] != undefined && tt.activeCues[0].text === "CODE") {
  72. handleCue();
  73. }
  74. }
  75. brightcovePlayer.on("seeked", function() {
  76. handleCue();
  77. });
  78.  
  79. });
  80. });
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement