videoPlayer.js 6.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185
  1. var instances = [];
  2. function secondsToTime(secs) {
  3. var minutes = Math.floor(secs / 60);
  4. var seconds = Math.floor(secs % 60);
  5. if (isNaN(minutes)) minutes = 0;
  6. if (isNaN(seconds)) seconds = 0;
  7. if (minutes < 0) minutes = 0;
  8. if (seconds < 0) seconds = 0;
  9. if (seconds < 10) seconds = "0" + seconds;
  10. if (minutes < 10) minutes = "0" + minutes;
  11. var obj = {
  12. "m": minutes,
  13. "s": seconds,
  14. };
  15. return obj;
  16. }
  17. $(document).on("change", ".p5VideoPlayer_zakres", function(slideEvt) {
  18. console.log("test");
  19. var player = $(this).closest(".p5VideoPlayer")
  20. var start = $(player).data("start")
  21. var end = $(player).find('.p5VideoPlayer_vid')[0].duration - $(player).data("end")
  22. $(player).find('.p5VideoPlayer_vid')[0].currentTime = slideEvt.value.newValue * ($(player).find('.p5VideoPlayer_vid')[0].duration - start - end) * 0.01 + start
  23. });
  24. function videoPlayer_updateProgress(player) {
  25. var start = $(player).data("start")
  26. var end = $(player).data("end")
  27. var current = $(player).find('.p5VideoPlayer_vid')[0].currentTime - start;
  28. var video = $(player).find(".p5VideoPlayer_vid");
  29. end = $(player).find('.p5VideoPlayer_vid')[0].duration - end
  30. var duration = $(player).find('.p5VideoPlayer_vid')[0].duration - start - end;
  31. var result = (current / duration)
  32. $(player).find(".p5VideoPlayer_zakres").slider('setValue', result * 100)
  33. var currentObj = secondsToTime(current);
  34. var durationObj = secondsToTime(duration);
  35. $(player).find(".p5VideoPlayer_current").text(currentObj.m + ":" + currentObj.s);
  36. $(player).find(".p5VideoPlayer_duration").text(durationObj.m + ":" + durationObj.s);
  37. if (current < 0) {
  38. $(player).find('.p5VideoPlayer_vid')[0].currentTime = start;
  39. }
  40. if (current >= duration) {
  41. $(player).find('.p5VideoPlayer_vid')[0].currentTime = duration + start;
  42. var el = $(player).find(".p5VideoPlayer_play");
  43. $(video).trigger('pause');
  44. $(el).removeClass("glyphicon-pause")
  45. $(el).addClass("glyphicon-play")
  46. }
  47. }
  48. $(document).on("click", ".img", function() {
  49. if (!$(this).parent().hasClass("p5VideoPlayer")) return false;
  50. var player = $(this).parent();
  51. var id = $(player).data("videoid");
  52. var link = BASE_URL + "index.php?_route=UrlAction_ProcesEditor&_task=getVideoFileAjax&id=" + id;
  53. $.get(link, function(data) {
  54. $(player).html(`
  55. <video class="p5VideoPlayer_vid">
  56. <source src="` + data["src"] + `" type="video/mp4">
  57. Your browser does not support the video tag.
  58. </video>
  59. <div class="p5VideoPlayer_video-controls">
  60. <table>
  61. <tr>
  62. <td><span class="glyphicon glyphicon-play p5VideoPlayer_play ico"></span></td>
  63. <td style=width:100%;><input class="p5VideoPlayer_zakres" type="text" data-slider-handle="custom2"
  64. data-slider-min="0" data-slider-max="100" data-slider-step="0.01" data-slider-value="0"/>
  65. </td>
  66. <td class=only_fullscreen><span style=margin-top:15px;><span class=p5VideoPlayer_current>00:00</span>&nbsp/&nbsp<span class=p5VideoPlayer_duration>00:00</span> </span></td>
  67. <td class=only_fullscreen><input class="p5VideoPlayer_glosnosc" style=margin-top:10px;width:30px; type="text" data-slider-handle="custom2"
  68. data-slider-min="0" data-slider-max="100" data-slider-value="0"/>
  69. </td>
  70. <td><span class="glyphicon glyphicon-fullscreen ico p5VideoPlayer_fullscreen"></span></td>
  71. </tr>
  72. </table>
  73. </div>
  74. `)
  75. $(player).find('.p5VideoPlayer_vid')[0].currentTime = $(player).data("start");
  76. $('.p5VideoPlayer_zakres').slider({
  77. formatter: function(value) {
  78. return value + "%";
  79. }
  80. });
  81. $('.p5VideoPlayer_glosnosc').slider({
  82. formatter: function(value) {
  83. return value + "%";
  84. }
  85. });
  86. videoPlayer_updateProgress(player);
  87. var temp = {}
  88. temp["vid"] = $(player).find('.p5VideoPlayer_vid')[0];
  89. temp["INTERVAL"] = setInterval(function() {
  90. videoPlayer_updateProgress(player);
  91. }, 500);
  92. instances.push(temp);
  93. });
  94. });
  95. function videoPlayer_play(el) {
  96. var player = $(el).closest(".p5VideoPlayer")
  97. var video = $(player).find(".p5VideoPlayer_vid");
  98. el = $(player).find(".p5VideoPlayer_play");
  99. if ($(video).prop("paused")) {
  100. $(video).trigger('play');
  101. $(el).removeClass("glyphicon-play")
  102. $(el).addClass("glyphicon-pause")
  103. } else {
  104. $(video).trigger('pause');
  105. $(el).removeClass("glyphicon-pause")
  106. $(el).addClass("glyphicon-play")
  107. }
  108. videoPlayer_updateProgress(player);
  109. }
  110. $('.p5VideoPlayer_vid').on('canplay canplaythrough', function() {
  111. alert('canplay event fired');
  112. });
  113. $(document).on("click", ".p5VideoPlayer_play", function() {
  114. videoPlayer_play(this);
  115. })
  116. $(document).on("click", ".p5VideoPlayer_vid", function() {
  117. videoPlayer_play(this);
  118. })
  119. $(document).on('webkitfullscreenchange mozfullscreenchange fullscreenchange', ".p5VideoPlayer_vid", function() {
  120. var state = document.fullScreen || document.mozFullScreen || document.webkitIsFullScreen;
  121. var player = $(this).closest(".p5VideoPlayer")
  122. var video = $(player).find(".p5VideoPlayer_vid");
  123. if (state) {
  124. $(player).find(".p5VideoPlayer_video-controls").addClass("p5VideoPlayer_video-controls-fs");
  125. } else {
  126. $(player).find(".p5VideoPlayer_video-controls").removeClass("p5VideoPlayer_video-controls-fs");
  127. }
  128. });
  129. $(document).on("click", ".p5VideoPlayer_fullscreen", function() {
  130. var player = $(this).closest(".p5VideoPlayer")
  131. var video = $(player).find(".p5VideoPlayer_vid");
  132. var elem = video[0];
  133. $(player).find(".p5VideoPlayer_video-controls").addClass("p5VideoPlayer_video-controls-fs");
  134. var state = document.fullScreen || document.mozFullScreen || document.webkitIsFullScreen;
  135. if (!state) {
  136. if (elem.requestFullscreen) {
  137. elem.requestFullscreen();
  138. } else if (elem.mozRequestFullScreen) {
  139. elem.mozRequestFullScreen();
  140. } else if (elem.webkitRequestFullscreen) {
  141. elem.webkitRequestFullscreen();
  142. }
  143. } else {
  144. if (document.exitFullscreen) {
  145. document.exitFullscreen();
  146. } else if (document.webkitExitFullscreen) {
  147. document.webkitExitFullscreen();
  148. } else if (document.mozCancelFullScreen) {
  149. document.mozCancelFullScreen();
  150. } else if (document.msExitFullscreen) {
  151. document.msExitFullscreen();
  152. }
  153. }
  154. });