video.html 20 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340
  1. <!DOCTYPE html>
  2. <html lang="en">
  3. <head>
  4. <meta charset="UTF-8">
  5. <meta http-equiv="X-UA-Compatible" content="IE=edge"/>
  6. <meta name="viewport" content="width=device-width, initial-scale=1.0"/>
  7. <title>播放器</title>
  8. <script src="./vconsole.js"></script>
  9. <script src="./jessibuca-pro/jessibuca-pro.js"></script>
  10. <link rel="stylesheet" href="./player.css">
  11. <style>
  12. .container-shell:before {
  13. content: "";
  14. }
  15. </style>
  16. </head>
  17. <body class="page">
  18. <div class="root">
  19. <div class="container-shell">
  20. <div id="container"></div>
  21. </div>
  22. <!-- <br/>-->
  23. <!-- <br/>-->
  24. <!-- <div class="post-message-section">-->
  25. <!-- <p class="desc">网页向应用发送消息。test88</p>-->
  26. <!-- <div class="btn-list">-->
  27. <!-- <button class="btn btn-red" type="button" id="wxpostMessage">wxpostMessage</button>-->
  28. <!--&lt;!&ndash; <button class="btn btn-red" type="button" id="unipostMessage">unipostMessage</button>&ndash;&gt;-->
  29. <!-- </div>-->
  30. <!-- </div>-->
  31. </div>
  32. </body>
  33. <script src="./player.js"></script>
  34. <!-- uni 的 SDK -->
  35. <script src="./uni.webview.1.5.5.js"></script>
  36. <script type="text/javascript">
  37. var userAgent = navigator.userAgent;
  38. console.log("userAgent");
  39. console.log(userAgent);
  40. if (userAgent.indexOf('AlipayClient') > -1) {
  41. // 支付宝小程序的 JS-SDK 防止 404 需要动态加载,如果不需要兼容支付宝小程序,则无需引用此 JS 文件。
  42. document.writeln('<script src="https://appx/web-view.min.js"' + '>' + '<' + '/' + 'script>');
  43. } else if (/QQ/i.test(userAgent) && /miniProgram/i.test(userAgent)) {
  44. // QQ 小程序
  45. document.write(
  46. '<script type="text/javascript" src="https://qqq.gtimg.cn/miniprogram/webview_jssdk/qqjssdk-1.0.0.js"><\/script>'
  47. );
  48. } else if (/miniProgram/i.test(userAgent) && /micromessenger/i.test(userAgent)) {
  49. console.log("微信小程序 JS-SDK");
  50. // 微信小程序 JS-SDK 如果不需要兼容微信小程序,则无需引用此 JS 文件。
  51. document.write('<script type="text/javascript" src="https://res.wx.qq.com/open/js/jweixin-1.4.0.js"><\/script>');
  52. wx.miniProgram.getEnv(function(res) {
  53. console.log(res.miniprogram) // true
  54. })// true
  55. } else if (/toutiaomicroapp/i.test(userAgent)) {
  56. // 头条小程序 JS-SDK 如果不需要兼容头条小程序,则无需引用此 JS 文件。
  57. document.write(
  58. '<script type="text/javascript" src="https://s3.pstatp.com/toutiao/tmajssdk/jssdk-1.0.1.js"><\/script>');
  59. } else if (/swan/i.test(userAgent)) {
  60. // 百度小程序 JS-SDK 如果不需要兼容百度小程序,则无需引用此 JS 文件。
  61. document.write(
  62. '<script type="text/javascript" src="https://b.bdstatic.com/searchbox/icms/searchbox/js/swan-2.0.18.js"><\/script>'
  63. );
  64. } else if (/quickapp/i.test(userAgent)) {
  65. // quickapp
  66. document.write('<script type="text/javascript" src="https://quickapp/jssdk.webview.min.js"><\/script>');
  67. }
  68. if (!/toutiaomicroapp/i.test(userAgent)) {
  69. console.log("webview post-message-section");
  70. //document.querySelector('.post-message-section').style.visibility = 'visible';
  71. }
  72. </script>
  73. <script type="text/javascript">
  74. var container = document.getElementById('container');
  75. var showOperateBtns = true; // 是否显示按钮
  76. var jessibuca = null;
  77. var rotate = 90;
  78. var playTimes = null;
  79. var playUrl = null;
  80. console.log("jessibuca webview");
  81. var data = getQuery('data');
  82. if (data != null) {
  83. console.log(data);
  84. var json = JSON.parse(data);
  85. playurl(json, json.playUrl);
  86. }
  87. function getQuery(name) {
  88. let reg = new RegExp("(^|&)" + name + "=([^&]*)(&|$)");
  89. let r = window.location.search.substr(1).match(reg);
  90. if (r != null) {
  91. return decodeURIComponent(r[2]);
  92. }
  93. return null;
  94. }
  95. function replay() {
  96. if (jessibuca != null) {
  97. jessibuca.destroy();
  98. }
  99. create()
  100. }
  101. function setplayTimes(times) {
  102. console.log("set playTimes:" + times);
  103. playTimes = times;
  104. }
  105. function setplayUrl(url) {
  106. console.log("set playUrl:" + url);
  107. playUrl = url;
  108. }
  109. function playurl(json, url) {
  110. setplayUrl(url);
  111. replay();
  112. console.log(json.type);
  113. if (json.type == "play") {
  114. play(url);
  115. } else if (json.type == "playback"){
  116. playback(url,json.playTimes);
  117. }
  118. }
  119. function create() {
  120. console.log("jessibuca create");
  121. jessibuca = new JessibucaPro({
  122. container: container,
  123. videoBuffer: 0.2, // 缓存时长
  124. decoder: './jessibuca-pro/decoder-pro.js',
  125. useSIMD: true,
  126. //useWCS: true,
  127. //useMSE: true,
  128. isResize: false,
  129. isFullResize: false,
  130. forceNoOffscreen: true,
  131. useWebFullScreen: true,
  132. useVideoRender: true,
  133. useCanvasRender: false,
  134. isNotMute: false,
  135. text: "",
  136. loadingText: "加载中",
  137. debug: true,
  138. debugLevel: 'debug',
  139. showBandwidth: showOperateBtns, // 显示网速
  140. operateBtns: {
  141. fullscreen: showOperateBtns,
  142. screenshot: showOperateBtns,
  143. play: showOperateBtns,
  144. audio: showOperateBtns,
  145. fullscreenFn: function () {
  146. console.log('fullscreenFn');
  147. jessibuca.setFullscreen(true);
  148. },
  149. fullscreenExitFn: function () {
  150. console.log('fullscreenExitFn');
  151. jessibuca.setFullscreen(false);
  152. jessibuca.setRotate(0);
  153. rotate = 90;
  154. },
  155. },
  156. extendOperateBtns: [{
  157. name: '横竖屏切换',
  158. index: 3,
  159. icon: 'data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAEAAAABACAYAAACqaXHeAAAACXBIWXMAAAsTAAALEwEAmpwYAAAFw2lUWHRYTUw6Y29tLmFkb2JlLnhtcAAAAAAAPD94cGFja2V0IGJlZ2luPSLvu78iIGlkPSJXNU0wTXBDZWhpSHpyZVN6TlRjemtjOWQiPz4gPHg6eG1wbWV0YSB4bWxuczp4PSJhZG9iZTpuczptZXRhLyIgeDp4bXB0az0iQWRvYmUgWE1QIENvcmUgOS4wLWMwMDAgNzkuMTcxYzI3ZmFiLCAyMDIyLzA4LzE2LTIyOjM1OjQxICAgICAgICAiPiA8cmRmOlJERiB4bWxuczpyZGY9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkvMDIvMjItcmRmLXN5bnRheC1ucyMiPiA8cmRmOkRlc2NyaXB0aW9uIHJkZjphYm91dD0iIiB4bWxuczp4bXA9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC8iIHhtbG5zOmRjPSJodHRwOi8vcHVybC5vcmcvZGMvZWxlbWVudHMvMS4xLyIgeG1sbnM6cGhvdG9zaG9wPSJodHRwOi8vbnMuYWRvYmUuY29tL3Bob3Rvc2hvcC8xLjAvIiB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL21tLyIgeG1sbnM6c3RFdnQ9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZUV2ZW50IyIgeG1wOkNyZWF0b3JUb29sPSJBZG9iZSBQaG90b3Nob3AgMjQuMCAoTWFjaW50b3NoKSIgeG1wOkNyZWF0ZURhdGU9IjIwMjQtMDgtMDNUMTE6MjY6MDUrMDg6MDAiIHhtcDpNb2RpZnlEYXRlPSIyMDI0LTA4LTAzVDExOjM1OjA1KzA4OjAwIiB4bXA6TWV0YWRhdGFEYXRlPSIyMDI0LTA4LTAzVDExOjM1OjA1KzA4OjAwIiBkYzpmb3JtYXQ9ImltYWdlL3BuZyIgcGhvdG9zaG9wOkNvbG9yTW9kZT0iMyIgeG1wTU06SW5zdGFuY2VJRD0ieG1wLmlpZDpmZmFjMWM0ZC1mM2YzLTQyMzMtYWQxMS1iMjZjOTIwOGU4MDYiIHhtcE1NOkRvY3VtZW50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',
  160. iconHover: 'data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAEAAAABACAYAAACqaXHeAAAACXBIWXMAAAsTAAALEwEAmpwYAAAFw2lUWHRYTUw6Y29tLmFkb2JlLnhtcAAAAAAAPD94cGFja2V0IGJlZ2luPSLvu78iIGlkPSJXNU0wTXBDZWhpSHpyZVN6TlRjemtjOWQiPz4gPHg6eG1wbWV0YSB4bWxuczp4PSJhZG9iZTpuczptZXRhLyIgeDp4bXB0az0iQWRvYmUgWE1QIENvcmUgOS4wLWMwMDAgNzkuMTcxYzI3ZmFiLCAyMDIyLzA4LzE2LTIyOjM1OjQxICAgICAgICAiPiA8cmRmOlJERiB4bWxuczpyZGY9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkvMDIvMjItcmRmLXN5bnRheC1ucyMiPiA8cmRmOkRlc2NyaXB0aW9uIHJkZjphYm91dD0iIiB4bWxuczp4bXA9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC8iIHhtbG5zOmRjPSJodHRwOi8vcHVybC5vcmcvZGMvZWxlbWVudHMvMS4xLyIgeG1sbnM6cGhvdG9zaG9wPSJodHRwOi8vbnMuYWRvYmUuY29tL3Bob3Rvc2hvcC8xLjAvIiB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL21tLyIgeG1sbnM6c3RFdnQ9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZUV2ZW50IyIgeG1wOkNyZWF0b3JUb29sPSJBZG9iZSBQaG90b3Nob3AgMjQuMCAoTWFjaW50b3NoKSIgeG1wOkNyZWF0ZURhdGU9IjIwMjQtMDgtMDNUMTE6MjY6MDUrMDg6MDAiIHhtcDpNb2RpZnlEYXRlPSIyMDI0LTA4LTAzVDExOjM1OjA1KzA4OjAwIiB4bXA6TWV0YWRhdGFEYXRlPSIyMDI0LTA4LTAzVDExOjM1OjA1KzA4OjAwIiBkYzpmb3JtYXQ9ImltYWdlL3BuZyIgcGhvdG9zaG9wOkNvbG9yTW9kZT0iMyIgeG1wTU06SW5zdGFuY2VJRD0ieG1wLmlpZDpmZmFjMWM0ZC1mM2YzLTQyMzMtYWQxMS1iMjZjOTIwOGU4MDYiIHhtcE1NOkRvY3VtZW50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',
  161. iconTitle: '横竖屏切换',
  162. click: () => {
  163. console.log('点击了横竖屏切换');
  164. jessibuca.setRotate(rotate);
  165. if (rotate == 90) {
  166. rotate = 0
  167. } else if (rotate == 0) {
  168. rotate = 90
  169. }
  170. }
  171. },],
  172. },);
  173. console.log("jessibuca create 22222");
  174. jessibuca.on('error', function (error) {
  175. console.log('error')
  176. console.log(error)
  177. })
  178. jessibuca.on("fetchError", function (data) {
  179. console.log('fetchError:', data)
  180. })
  181. jessibuca.on("start", function () {
  182. console.log('start render')
  183. })
  184. jessibuca.on("play", function (flag) {
  185. console.log('play')
  186. })
  187. jessibuca.on('crashLog', (data) => {
  188. console.log('crashLog is', data);
  189. })
  190. jessibuca.onLog = msg => console.error(msg);
  191. jessibuca.onRecord = (status) => console.log('onRecord', status);
  192. jessibuca.onPause = () => console.log('onPause');
  193. jessibuca.onPlay = () => console.log('onPlay');
  194. jessibuca.onMute = msg => console.log('onMute', msg);
  195. jessibuca.on("fullscreen", function (flag) {
  196. console.log('is fullscreen', flag)
  197. })
  198. jessibuca.on("webFullscreen", function (flag) {
  199. console.log('is webFullscreen', flag)
  200. })
  201. console.log("jessibuca create2");
  202. }
  203. function seekPlay(timeObj) {
  204. uni.postMessage({
  205. data: {
  206. action: 'seekPlay',
  207. msg: timeObj
  208. }
  209. });
  210. }
  211. function play(url) {
  212. console.log("play");
  213. console.log(url);
  214. if (url) {
  215. const status = jessibuca.getStatus();
  216. console.log(status);
  217. jessibuca.play(url).then(() => {
  218. console.log('play success')
  219. }).catch((e) => {
  220. console.log('play error', e)
  221. })
  222. }
  223. }
  224. function playback(url, times) {
  225. if (url) {
  226. jessibuca.playback(url, {
  227. playList: times,
  228. fps: 20, //FPS(定频(本地设置)生效)
  229. showControl: true,
  230. showRateBtn: true,
  231. isUseFpsRender: true, // 是否使用固定的fps渲染,如果设置的fps小于流推过来的,会造成内存堆积甚至溢出
  232. isCacheBeforeDecodeForFpsRender: false, // rfs渲染时,是否在解码前缓存数据
  233. supportWheel: true, // 是否支持滚动轴切换精度。
  234. rateConfig: [
  235. {label: '正常', value: 1},
  236. {label: '2倍', value: 2},
  237. {label: '4倍', value: 4},
  238. {label: '8倍', value: 8},
  239. ],
  240. })
  241. }
  242. }
  243. function test() {
  244. console.log("test");
  245. }
  246. function test2(msg) {
  247. console.log("test1"+msg);
  248. }
  249. window.msgFromUniapp = (res) =>{
  250. console.log("原生传递过来的数据:",res)
  251. }
  252. document.getElementById('wxpostMessage').addEventListener('click', function() {
  253. console.log("wx postMessage");
  254. wx.miniProgram.postMessage({
  255. data: {
  256. action: 'test'
  257. }
  258. });
  259. console.log("wx navigateBack");
  260. wx.miniProgram.navigateBack({delta: 1});
  261. });
  262. // document.getElementById('postMessage').addEventListener('click', function() {
  263. // console.log("postMessage");
  264. // //wx.miniProgram.navigateTo
  265. // //wx.miniProgram.navigateBack
  266. // //wx.miniProgram.switchTab
  267. // });
  268. // document.getElementById('unipostMessage').addEventListener('click', function() {
  269. // console.log("uni postMessage");
  270. // uni.postMessage({
  271. // data: {
  272. // action: 'test'
  273. // }
  274. // });
  275. // });
  276. document.addEventListener("UniAppJSBridgeReady", function () {
  277. console.log("UniAppJSBridgeReady");
  278. uni.postMessage({
  279. data: {
  280. action: 'message'
  281. }
  282. });
  283. uni.getEnv(function(res) {
  284. console.log('当前环境:' + JSON.stringify(res));
  285. });
  286. // uni.switchTab({
  287. // url: '/pages/tabBar/API/API'
  288. // });
  289. // uni.reLaunch({
  290. // url: '/pages/tabBar/component/component'
  291. // });
  292. // uni.navigateBack({
  293. // delta: 1
  294. // });
  295. // uni[action]({
  296. // url: '/pages/component/button/button'
  297. // });
  298. })
  299. //微信小程序
  300. function ready() {
  301. console.log(window.__wxjs_environment === 'miniprogram')
  302. }
  303. if (!window.WeixinJSBridge || !WeixinJSBridge.invoke) {
  304. document.addEventListener('WeixinJSBridgeReady', ready, false)
  305. } else {
  306. ready()
  307. }
  308. window.οnbefοreunlοad = function () {
  309. alert("===οnbefοreunlοad===");
  310. if (event.clientX > document.body.clientWidth && event.clientY < 0 || event.altKey) {
  311. alert("你关闭了浏览器");
  312. jessibuca.destroy();
  313. } else {
  314. alert("你正在刷新页面");
  315. replay();
  316. }
  317. }
  318. </script>
  319. </html>