apicloud apicloud

注册
查看: 6157|回复: 119

[案例源码] playModule模块(视频播放)demo示例

版主

UID:83211

主题:
151
帖子:
7437
云币:
60289

APICloud粉丝端午节模块开发者一周年你吃屎!女朋友SB侠APICloud大会专属勋章捣蛋鬼

[案例源码] playModule模块(视频播放)demo示例

6157 119 | 发表于 2017-8-9 12:56:43 |阅读模式 | |
本帖最后由 52yaoer 于 2019-7-16 16:17 编辑

     playModule 封装了视频播放功能(不支持音频播放)。使用本模块时可把本模块当做一个 frame 添加在 window 或 frame 上。Android 平台上支持的的视频文件格式有:MP4、3GP、FLV、RTMP、M3U8;IOS 平台上支持的视频文件格式有:MOV、MP4、M4V、FLV、ACC、3GP、RTMP、M3U8等  ;

   使用有ui方案播放器,可以通过左右滑动调节视频进度,左边上下滑动调节音量,右边上下滑动调节亮度。

点击进入模块详情

playModule.html



  1. <!DOCTYPE html>
  2. <html>

  3. <head>
  4.     <title>Module Develop</title>
  5.     <meta charset="utf-8">
  6.     <meta name="viewport" content="maximum-scale=1.0,minimum-scale=1.0,user-scalable=0,width=device-width,initial-scale=1.0" />
  7.     <style type="text/css">
  8.         html,
  9.         body {
  10.             height: 100%
  11.         }

  12.         body {
  13.             background-color: #fff;
  14.             margin: 0;
  15.         }

  16.         #wrap {
  17.             height: 100%;
  18.             position: relative;
  19.         }

  20.         #header {
  21.             padding-top: 20px;
  22.             background-color: #5082c2;
  23.             height: 44px;
  24.             position: relative;
  25.         }

  26.         #header h1 {
  27.             font-size: 20px;
  28.             height: 44px;
  29.             line-height: 44px;
  30.             margin: 0em;
  31.             color: #fff;
  32.             margin-left: 100px;
  33.             margin-right: 100px;
  34.             text-align: center;
  35.         }

  36.         #main {
  37.             display: -webkit-box;
  38.             -webkit-box-orient: vertical;
  39.             -webkit-box-pack: center;
  40.         }

  41.         a.button {
  42.             display: -webkit-box;
  43.             -webkit-box-orient: vertical;
  44.             -webkit-box-pack: center;
  45.             -webkit-box-align: center;
  46.             height: 32px;
  47.             margin: 8px;
  48.             background-color: rgba(240, 240, 240, 1.0);
  49.             border-color: rgba(220, 220, 220, 1.0);
  50.             border-width: 2px;
  51.             border-style: solid;
  52.         }

  53.         a.active {
  54.             background-color: rgba(240, 240, 240, 0.7);
  55.         }
  56.     </style>
  57. </head>

  58. <body>
  59.     <div id="wrap">
  60.         <div id="main">
  61.             <input type="number" id="vibrate" value="20000" />
  62.             <br />
  63.             <br />
  64.             <br />
  65.             <br />
  66.             <br />
  67.             <br />
  68.             <br />
  69.             <br />
  70.             <br />
  71.             <br />
  72.             <br />
  73.             <br />
  74.             <br />
  75.             <br />
  76.             <a class="button" tapmode="active" onclick="requestWriteSettings()">requestWriteSettings</a>
  77.             <br />
  78.             <a class="button" tapmode="active" onclick="init()">初始化</a>
  79.             <a class="button" tapmode="active" onclick="play1()">有按钮视频播放</a>
  80.             <a class="button" tapmode="active" onclick="playnotbtn()">无按钮视频播放</a>
  81.             <a class="button" tapmode="active" onclick="playUrl1()">切换播放地址1</a>
  82.             <a class="button" tapmode="active" onclick="playUrl2()">切换播放地址2</a>
  83.             <a class="button" tapmode="active" onclick="playUrl3()">切换播放地址3</a>
  84.             <a class="button" tapmode="active" onclick="playUrl4()">切换播放地址4</a>
  85.             <a class="button" tapmode="active" onclick="pause()">暂停</a>
  86.             <a class="button" tapmode="active" onclick="start()">开始</a>
  87.             <a class="button" tapmode="active" onclick="stop()">停止</a>
  88.             <a class="button" tapmode="active" onclick="seekTo()">播放位置</a>
  89.             <a class="button" tapmode="active" onclick="setSpeed()">倍速播放</a>
  90.             <a class="button" tapmode="active" onclick="full()">全屏播放</a>
  91.             <a class="button" tapmode="active" onclick="unfull()">退出全屏</a>
  92.             <a class="button" tapmode="active" onclick="getDuration()">视频时长</a>
  93.             <a class="button" tapmode="active" onclick="setVolume(10)">设置音量10</a>
  94.             <a class="button" tapmode="active" onclick="setVolume(80)">设置音量80</a>
  95.             <a class="button" tapmode="active" onclick="getCurrentPosition()">已播放时长</a>
  96.             <a class="button" tapmode="active" onclick="isFullScreen()">获取是否全屏状态</a>
  97.             <a class="button" tapmode="active" onclick="showPlayer()">显示播放器</a>
  98.             <a class="button" tapmode="active" onclick="hidePlayer()">隐藏播放器</a>
  99.             <a class="button" tapmode="active" onclick="updateUrlDatas()">updateUrlDatas</a>
  100.             <a class="button" tapmode="active" onclick="sendDanmu()">发送弹幕</a>
  101.             <a class="button" tapmode="active" onclick="sendDanmuList()">发送弹幕(多条)</a>
  102.             <a class="button" tapmode="active" onclick="getMetaInfo()">获取视频媒体信息</a>
  103.             <a class="button" tapmode="active" onclick="getAudioTrack()">获取音轨数量</a>
  104.             <a class="button" tapmode="active" onclick="setAudioTrack(1)">设置音轨(原音)</a>
  105.             <a class="button" tapmode="active" onclick="setAudioTrack(2)">设置音轨(伴音)</a>
  106.             <a class="button" tapmode="active" onclick="setMute()">静音开关</a>
  107.             <a class="button" tapmode="active" onclick="openNewWin()">打开新页面</a>
  108.         </div>
  109.     </div>
  110. </body>
  111. <script type="text/javascript" src="../script/api.js"></script>
  112. <script>
  113.     var demo;

  114.     function requestWriteSettings(){
  115.           var demo1 = api.require('requestPermission');
  116.                 demo1.requestWriteSettings(function(ret, err){
  117.                         alert(JSON.stringify(ret));
  118.                 });
  119.                 }

  120.     function closeWin() {
  121.         api.closeWin();
  122.     }

  123.     function openNewWin() {
  124.         api.openWin({
  125.             name: 'publicwin',
  126.             url: 'publicwin.html',
  127.         });
  128.     }

  129.     function getMetaInfo() {
  130.         demo.getMetaInfo(function(ret, err) {
  131.             //alert(JSON.stringify(ret));
  132.         });
  133.     }

  134.     function getAudioTrack() {
  135.         demo.getAudioTrack(function(ret, err) {
  136.             //alert(JSON.stringify(ret));
  137.         });
  138.     }

  139.     function setAudioTrack(xh) {
  140.         demo.setAudioTrack({
  141.             trackId: xh
  142.         }, function(ret, err) {
  143.             //alert(JSON.stringify(ret));
  144.         });
  145.     }

  146.     function setVolume(index) {
  147.         demo.setVolume({
  148.             volume: index
  149.         }, function(ret, err) {
  150.             //alert(JSON.stringify(ret));
  151.         });
  152.     }

  153.     function init() {
  154.         demo.init({
  155.             //                                ttf : "widget://res/UKIJTor.ttf",
  156.             //logoLeftTop : "widget://res/logo.png",
  157.                                     logoLeftBottom : "widget://res/logo.png",
  158.                                     logo : "widget://res/logo.png",
  159.                                     logoRightBottom : "widget://res/logo.png",
  160.             //background : "widget://res/play.png",
  161.             background: "widget://res/gif1.gif",
  162.             //background : 'http://video.wlms.com.cn/fbd3507e913b46ddbabb2aaf26cf5032/covers/4ad1e4cfebbf4ddbb306c84d8728b1d9-00005.jpg',
  163.             loading: 'widget://res/gif1.gif',
  164.             isMultiWindow: true,
  165.             FullScreenViewIsFont: false
  166.         }, function(ret, err) {
  167.             //alert(JSON.stringify(ret));
  168.         });
  169.     }

  170.     function play1() {
  171.         //var _deviceid = document.getElementById("deviceid").value;
  172.         demo.play({
  173.             rect: {
  174.                 x: 0,
  175.                 y: 100,
  176.                 w: api.frameWidth,
  177.                 h: api.frameHeight / 3
  178.             },
  179.             fixedOn: api.frameName,
  180.             fixed: true,
  181.             title: "test",
  182.             //url : "http://gotye-video-in.oss-cn-shanghai.aliyuncs.com/upload/23207/55bec6b9-1832-421e-bd58-1377736a827b.mp4",
  183.             //url : "http://7xue4m.com1.z0.glb.clouddn.com/apicloud/39f7c87f9167f08607e1cef4e48a2e05.mp4",
  184.             //url:"http://7xue4m.com1.z0.glb.clouddn.com/apicloud/39f7c87f9167f08607e1cef4e48a2e05.mp4",
  185.             //url : "rtmp://live.hkstv.hk.lxdns.com/live/hks",
  186.             //url : "http://ada69536af491c5421de.qiniucdn.apicloud-system.com/apicloud/6c5a35b1581cf49b398a8deef86bcab9.MPG",
  187.             //url : "rtsp://184.72.239.149/vod/mp4://BigBuckBunny_175k.mov",
  188.             //url : "http://apiclouddelimg.oss-cn-beijing.aliyuncs.com/VID_20181101_152546.mp4",
  189.             //url : "http://video.chinaxueyun.com/%E4%BD%90%E4%B8%BA%E8%B1%A1%E6%A3%8B%E9%81%93%E5%9C%BA%E8%AF%BE%E7%A8%8B%E5%B1%95%E6%92%AD/2%20%E7%96%AF%E7%8B%82%E7%9A%84%E7%9F%B3%E5%A4%B4.mp4?sign=POvXSeQNWXcnyMPy/HUsPsKnAMVhPTEyNTIzNzg4OTQmYj14aWFuZ3Fpd2VzdHVkeSZrPUFLSUQ4RDdnOVJIRlAxWHdBQjZiNVJ5MXlMMWIwQ0I4dkZKRCZlPTE1NDM5MjgyMjYmdD0xNTQxMzM2MjI2JnI9MjA1ODA0OTQ1NiZmPQ==",
  190.             //url : _deviceid,
  191.             //url : 'rtmp://studiosystem.co.in:1935/v4news/livestream',
  192.             //url : 'rtmp://live.hkstv.hk.lxdns.com/live/hks2',
  193.             //url : 'http://v.kd1.qq.com/shg_321_1116_21X00000000aW5hoKaSKZ5c1d453d660.f620.mp4?dis_k=416669a28e1f2b5a69611dc70c0fbfe6&dis_t=1546078752&tm=52c1011c1f825806579191ea25184d82',
  194.             defaultBtn: true,
  195.             enableFull: false,
  196.             isTopView: true,
  197.             isFullBtn: true,
  198.             isBackBtn: true,
  199.             scalingMode: 1, //1 无缩放 2 适应大小模式 3 充满可视范围,可能会被裁剪 4 缩放到充满视图
  200.             fullscreenMode: 'LANDSCAPE', //设置全屏按钮控制全屏显示模式是横屏还是竖屏 竖屏:PORTRAIT ; 横屏:LANDSCAPE
  201.             isShowProcessView: true, //是否显示进度条 (显示:true ; 不显示:false)
  202.             isShowTimeLable: true, //是否显示播放时间 显示:true ; 不显示:false
  203.             isLive: false, //是否直播视频源 (直播:true;点播:false)
  204.             isOpenGesture: true, //是否开启手势控制音量,亮度和进度,默认开启手势控制,true为开启false为关闭
  205.             background: 'http://video.wlms.com.cn/fbd3507e913b46ddbabb2aaf26cf5032/covers/4ad1e4cfebbf4ddbb306c84d8728b1d9-00005.jpg',
  206.             urlDatas: [{
  207.                 name: '高清',
  208.                 url: 'http://7ypsiz.com1.z0.glb.clouddn.com/apicloud/5f14f9abe059fc1d3b83039654bd3fb4.mp4',
  209.             }, {
  210.                 name: '普通',
  211.                 url: 'http://7ypsiz.com1.z0.glb.clouddn.com/apicloud/5f14f9abe059fc1d3b83039654bd3fb4.mp4',
  212.             }],
  213.             isShowSpeed: true,
  214.             //isMute : true,
  215.             defaultSpeed: {
  216.                 name: 'X1.0',
  217.                 speed: 1.0
  218.             },
  219.             speedDatas: [{
  220.                 name: 'X0.5',
  221.                 speed: 0.5
  222.             }, {
  223.                 name: 'X0.75',
  224.                 speed: 0.75
  225.             }, {
  226.                 name: 'X1.0',
  227.                 speed: 1.0
  228.             }, {
  229.                 name: 'X1.5',
  230.                 speed: 1.5
  231.             }, {
  232.                 name: 'X2.0',
  233.                 speed: 2.0
  234.             }],
  235.             isShowDanmu: true,
  236.             //isLocalCache : true,
  237.             //isPlayMusic : true,
  238.             isShowFenxiang: true, //是否显示分享按钮
  239.             isShowMore: true, //是否显示更多按钮
  240.             isShowTouping: true, //是否显示投屏按钮
  241.             isShowXuanji: true, //是否显示选集按钮(和退出全屏按钮互斥)
  242.             isShowNext: true, //是否显示下一集按钮
  243.             isShowPre: true, //是否显示下一集按钮
  244.             isSmallImmerse: true,
  245.             isLongShowBackBtn: true,
  246.             isSmallShowFenxiang: true,
  247.             isSmallShowMore: true,
  248.             isSmallShowTouping: true,
  249.             isOpenDanmu: false
  250.         }, function(ret, err) {
  251.             //alert(JSON.stringify(ret));
  252.         });

  253.         //play2();
  254.     }

  255.     function play2() {
  256.         //var _deviceid = document.getElementById("deviceid").value;
  257.         demo.play({
  258.             rect: {
  259.                 x: api.frameWidth / 2,
  260.                 y: 100,
  261.                 w: api.frameWidth / 2,
  262.                 h: api.frameHeight / 3
  263.             },
  264.             fixedOn: api.frameName,
  265.             fixed: false,
  266.             title: "test",
  267.             //url : "http://gotye-video-in.oss-cn-shanghai.aliyuncs.com/upload/23207/55bec6b9-1832-421e-bd58-1377736a827b.mp4",
  268.             //url : "http://7xue4m.com1.z0.glb.clouddn.com/apicloud/39f7c87f9167f08607e1cef4e48a2e05.mp4",
  269.             //url:"http://7xue4m.com1.z0.glb.clouddn.com/apicloud/39f7c87f9167f08607e1cef4e48a2e05.mp4",
  270.             //url : "rtmp://live.hkstv.hk.lxdns.com/live/hks",
  271.             //url : "http://ada69536af491c5421de.qiniucdn.apicloud-system.com/apicloud/6c5a35b1581cf49b398a8deef86bcab9.MPG",
  272.             //url : "rtsp://184.72.239.149/vod/mp4://BigBuckBunny_175k.mov",
  273.             //url : "http://apiclouddelimg.oss-cn-beijing.aliyuncs.com/VID_20181101_152546.mp4",
  274.             //url : "http://video.chinaxueyun.com/%E4%BD%90%E4%B8%BA%E8%B1%A1%E6%A3%8B%E9%81%93%E5%9C%BA%E8%AF%BE%E7%A8%8B%E5%B1%95%E6%92%AD/2%20%E7%96%AF%E7%8B%82%E7%9A%84%E7%9F%B3%E5%A4%B4.mp4?sign=POvXSeQNWXcnyMPy/HUsPsKnAMVhPTEyNTIzNzg4OTQmYj14aWFuZ3Fpd2VzdHVkeSZrPUFLSUQ4RDdnOVJIRlAxWHdBQjZiNVJ5MXlMMWIwQ0I4dkZKRCZlPTE1NDM5MjgyMjYmdD0xNTQxMzM2MjI2JnI9MjA1ODA0OTQ1NiZmPQ==",
  275.             //url : _deviceid,
  276.             //url : 'rtmp://studiosystem.co.in:1935/v4news/livestream',
  277.             //url : 'rtmp://live.hkstv.hk.lxdns.com/live/hks2',
  278.             //url : 'http://v.kd1.qq.com/shg_321_1116_21X00000000aW5hoKaSKZ5c1d453d660.f620.mp4?dis_k=416669a28e1f2b5a69611dc70c0fbfe6&dis_t=1546078752&tm=52c1011c1f825806579191ea25184d82',
  279.             defaultBtn: true,
  280.             enableFull: false,
  281.             isTopView: true,
  282.             isFullBtn: true,
  283.             isBackBtn: true,
  284.             scalingMode: 1, //1 无缩放 2 适应大小模式 3 充满可视范围,可能会被裁剪 4 缩放到充满视图
  285.             fullscreenMode: 'LANDSCAPE', //设置全屏按钮控制全屏显示模式是横屏还是竖屏 竖屏:PORTRAIT ; 横屏:LANDSCAPE
  286.             isShowProcessView: true, //是否显示进度条 (显示:true ; 不显示:false)
  287.             isShowTimeLable: true, //是否显示播放时间 显示:true ; 不显示:false
  288.             isLive: false, //是否直播视频源 (直播:true;点播:false)
  289.             isOpenGesture: true, //是否开启手势控制音量,亮度和进度,默认开启手势控制,true为开启false为关闭
  290.             background: 'http://video.wlms.com.cn/fbd3507e913b46ddbabb2aaf26cf5032/covers/4ad1e4cfebbf4ddbb306c84d8728b1d9-00005.jpg',
  291.             urlDatas: [{
  292.                 name: '高清',
  293.                 url: 'http://7ypsiz.com1.z0.glb.clouddn.com/apicloud/5f14f9abe059fc1d3b83039654bd3fb4.mp4',
  294.             }, {
  295.                 name: '普通',
  296.                 url: 'http://7ypsiz.com1.z0.glb.clouddn.com/apicloud/5f14f9abe059fc1d3b83039654bd3fb4.mp4',
  297.             }],
  298.             isShowSpeed: true,
  299.             //isMute : true,
  300.             defaultSpeed: {
  301.                 name: 'X1.0',
  302.                 speed: 1.0
  303.             },
  304.             speedDatas: [{
  305.                 name: 'X0.5',
  306.                 speed: 0.5
  307.             }, {
  308.                 name: 'X0.75',
  309.                 speed: 0.75
  310.             }, {
  311.                 name: 'X1.0',
  312.                 speed: 1.0
  313.             }, {
  314.                 name: 'X1.5',
  315.                 speed: 1.5
  316.             }, {
  317.                 name: 'X2.0',
  318.                 speed: 2.0
  319.             }],
  320.             isShowDanmu: true,
  321.             //isLocalCache : true,
  322.             //isPlayMusic : true,
  323.             isShowFenxiang: true, //是否显示分享按钮
  324.             isShowMore: true, //是否显示更多按钮
  325.             isShowTouping: true, //是否显示投屏按钮
  326.             isShowXuanji: true, //是否显示选集按钮(和退出全屏按钮互斥)
  327.             isShowNext: true, //是否显示下一集按钮
  328.             isShowPre: true, //是否显示下一集按钮
  329.             isSmallImmerse: true,
  330.             isLongShowBackBtn: true,
  331.             //isSmallShowFenxiang : true,
  332.             //isSmallShowMore : true,
  333.             //isSmallShowTouping : true,
  334.             isOpenDanmu: false
  335.         }, function(ret, err) {
  336.             //alert(JSON.stringify(ret));
  337.         });
  338.     }

  339.     function playnotbtn() {
  340.         demo.play({
  341.             rect: {
  342.                 x: 0,
  343.                 y: 0,
  344.                 //w : api.frameWidth,
  345.                 h: 200
  346.             },
  347.             fixedOn: api.frameName,
  348.             fixed: true,
  349.             title: "test",
  350.             url: "http://7ypsiz.com1.z0.glb.clouddn.com/apicloud/5f14f9abe059fc1d3b83039654bd3fb4.mp4",
  351.             defaultBtn: false,
  352.             enableFull: false,
  353.             isLocalCache: true,
  354.         }, function(ret, err) {
  355.             //alert(JSON.stringify(ret));
  356.         });
  357.     }

  358.     function playUrl1() {
  359.         demo.playUrl({
  360.             defaultBtn: true,
  361.             title: "test",
  362.             url: "http://apiclouddelimg.oss-cn-beijing.aliyuncs.com/VID_20181101_152546.mp4",
  363.             //process : 302334,
  364.             isLive: false, //是否直播视频源 (直播:true;点播:false)
  365.             isOpenGesture: false, //是否开启手势控制音量,亮度和进度,默认开启手势控制,true为开启false为关闭
  366.             isLocalCache: true,
  367.             isPlayMusic: true,
  368.         }, function(ret, err) {
  369.             //alert(JSON.stringify(ret));
  370.         });
  371.     }

  372.     function playUrl2() {
  373.         demo.playUrl({
  374.             defaultBtn: true,
  375.             title: "test",
  376.             url: "http://7o50kb.com2.z0.glb.qiniucdn.com/c6.mp4",
  377.             //process : 302334,
  378.             isLive: false, //是否直播视频源 (直播:true;点播:false)
  379.             isOpenGesture: false, //是否开启手势控制音量,亮度和进度,默认开启手势控制,true为开启false为关闭
  380.             isLocalCache: true,
  381.             isPlayMusic: true,
  382.         }, function(ret, err) {
  383.             //alert(JSON.stringify(ret));
  384.         });
  385.     }

  386.     function playUrl3() {
  387.         demo.playUrl({
  388.             defaultBtn: true,
  389.             title: "test",
  390.             url: "http://www.nanchong.gov.cn/video/c21.flv",
  391.             //process : 302334,
  392.             isLive: false, //是否直播视频源 (直播:true;点播:false)
  393.             isOpenGesture: false, //是否开启手势控制音量,亮度和进度,默认开启手势控制,true为开启false为关闭
  394.             isLocalCache: true,
  395.             isPlayMusic: true,
  396.         }, function(ret, err) {
  397.             //alert(JSON.stringify(ret));
  398.         });
  399.     }

  400.     function playUrl4() {
  401.         demo.playUrl({
  402.             defaultBtn: true,
  403.             title: "test",
  404.             url: "http://7o50kb.com2.z0.glb.qiniucdn.com/kuaisu3.mp4",
  405.             //process : 302334,
  406.             isLive: false, //是否直播视频源 (直播:true;点播:false)
  407.             isOpenGesture: false, //是否开启手势控制音量,亮度和进度,默认开启手势控制,true为开启false为关闭
  408.             isLocalCache: true,
  409.             isPlayMusic: true,
  410.         }, function(ret, err) {
  411.             //alert(JSON.stringify(ret));
  412.         });
  413.     }

  414.     function playUrl5() {
  415.         demo.playUrl({
  416.             defaultBtn: true,
  417.             title: "test",
  418.             url: "http://video.chinaxueyun.com/26/%E4%B8%AD%E5%B1%80%E6%88%98%E6%9C%AF%E5%92%8C%E7%90%86%E8%AE%BA/5-2%20%E4%B8%AD%E5%B1%80%E6%88%98%E6%9C%AF%E6%89%8B%E6%AE%B5-%E8%85%BE%E6%8C%AA%EF%BC%88%E4%B8%8B%EF%BC%89.mp4?sign=lLhht5grNNXI53QvSDwQ3K3GiSthPTEyNTIzNzg4OTQmYj14aWFuZ3Fpd2VzdHVkeSZrPUFLSUQ4RDdnOVJIRlAxWHdBQjZiNVJ5MXlMMWIwQ0I4dkZKRCZlPTE1Mzc2NzU2MzEmdD0xNTM1MDgzNjMxJnI9MTgzMzkxNTAxMyZmPQ==",
  419.             //process : 302334,
  420.             isLive: false, //是否直播视频源 (直播:true;点播:false)
  421.             isOpenGesture: false, //是否开启手势控制音量,亮度和进度,默认开启手势控制,true为开启false为关闭
  422.             isPlayMusic: true,
  423.         }, function(ret, err) {
  424.             //alert(JSON.stringify(ret));
  425.         });
  426.     }

  427.     function seekTo() {
  428.         demo.seekTo({
  429.             process: 402334
  430.         }, function(ret, err) {
  431.             //alert(JSON.stringify(ret));
  432.         });
  433.     }

  434.     function setSpeed() {
  435.         demo.setSpeed({
  436.             speed: 1.9
  437.         }, function(ret, err) {
  438.             //alert(JSON.stringify(ret));
  439.         });
  440.     }

  441.     function pause() {
  442.         demo.pause(function(ret, err) {
  443.             //alert(JSON.stringify(ret));
  444.         });
  445.     }

  446.     function start() {
  447.         demo.start(function(ret, err) {
  448.             //alert(JSON.stringify(ret));
  449.         });
  450.     }

  451.     function stop() {
  452.         demo.stop(function(ret, err) {
  453.             //alert(JSON.stringify(ret));
  454.         });
  455.     }

  456.     function full() {
  457.         demo.full(function(ret, err) {
  458.             //alert(JSON.stringify(ret));
  459.         });
  460.     }

  461.     function unfull() {
  462.         demo.unfull(function(ret, err) {
  463.             //alert(JSON.stringify(ret));
  464.         });
  465.     }

  466.     function getDuration() {
  467.         demo.getDuration(function(ret, err) {
  468.             //alert(JSON.stringify(ret));
  469.         });
  470.     }

  471.     function getCurrentPosition() {
  472.         demo.getCurrentPosition(function(ret, err) {
  473.             //alert(JSON.stringify(ret));
  474.         });
  475.     }

  476.     function isFullScreen() {
  477.         demo.isFullScreen(function(ret, err) {
  478.             //alert(JSON.stringify(ret));
  479.         });
  480.     }

  481.     function showPlayer() {
  482.         demo.showPlayer(function(ret, err) {
  483.             //alert(JSON.stringify(ret));
  484.         });
  485.     }

  486.     function hidePlayer() {
  487.         demo.hidePlayer(function(ret, err) {
  488.             //alert(JSON.stringify(ret));
  489.         });
  490.     }

  491.     function updateUrlDatas() {
  492.         demo.updateUrlDatas({
  493.             urlDatas: [{
  494.                 name: '标清',
  495.                 url: 'http://7xue4m.com1.z0.glb.clouddn.com/apicloud/39f7c87f9167f08607e1cef4e48a2e05.mp4'
  496.             }, {
  497.                 name: '高清',
  498.                 url: 'http://7xue4m.com1.z0.glb.clouddn.com/apicloud/39f7c87f9167f08607e1cef4e48a2e05.mp4',
  499.             }, {
  500.                 name: '普通',
  501.                 url: 'http://7xue4m.com1.z0.glb.clouddn.com/apicloud/39f7c87f9167f08607e1cef4e48a2e05.mp4',
  502.             }],
  503.         }, function(ret, err) {
  504.             //alert(JSON.stringify(ret));
  505.         });
  506.     }

  507.     function setMute() {
  508.         demo.setMute({
  509.             isMute: false //true 关闭声音 false 打开声音
  510.         }, function(ret, err) {
  511.             //alert(JSON.stringify(ret));
  512.         });
  513.     }

  514.     function apiready() {
  515.         demo = api.require('playModule');
  516.         if (!demo) {
  517.             alert("请添加模块后编译");
  518.             return;
  519.         }
  520.         demo.addEventListener({
  521.             name: 'playEnd'
  522.         }, function(ret, err) {
  523.             //alert("播放结束监听事件:" + JSON.stringify(ret));
  524.         });
  525.         demo.addEventListener({
  526.             name: 'pause'
  527.         }, function(ret, err) {
  528.             //alert("pause:" + JSON.stringify(ret));
  529.         });
  530.         demo.addEventListener({
  531.             name: 'play'
  532.         }, function(ret, err) {
  533.             //alert("play:" + JSON.stringify(ret));
  534.         });
  535.         demo.addEventListener({
  536.             name: 'backBtn'
  537.         }, function(ret, err) {
  538.             //alert("backBtn:" + JSON.stringify(ret));
  539.         });
  540.         demo.addEventListener({
  541.             name: 'full'
  542.         }, function(ret, err) {
  543.             //alert("full:" + JSON.stringify(ret));
  544.         });
  545.         demo.addEventListener({
  546.             name: 'unfull'
  547.         }, function(ret, err) {
  548.             //alert("unfull:" + JSON.stringify(ret));
  549.         });
  550.         demo.addEventListener({
  551.             name: 'bufferingStart'
  552.         }, function(ret, err) {
  553.             //alert("bufferingStart:" + JSON.stringify(ret));
  554.         });
  555.         demo.addEventListener({
  556.             name: 'bufferingEnd'
  557.         }, function(ret, err) {
  558.             //alert("bufferingEnd:" + JSON.stringify(ret));
  559.         });
  560.         api.addEventListener({
  561.             name: 'playkeyback'
  562.         }, function(ret, err) {
  563.             demo.isFullScreen(function(ret, err) {
  564.                 if (ret.status) {
  565.                     demo.unfull(function(ret, err) {});
  566.                 } else {
  567.                     //                                                closeWin();
  568.                     alert('关闭win页面');
  569.                 }
  570.             });
  571.         });
  572.         demo.addEventListener({
  573.             name: 'click'
  574.         }, function(ret, err) {
  575.             sendDanmu()
  576.         });
  577.         demo.addEventListener({
  578.             name: 'doubleClick'
  579.         }, function(ret, err) {
  580.             sendDanmuList()
  581.         });

  582.         //add new
  583.         demo.addEventListener({
  584.             name: 'fenxiangClick'
  585.         }, function(ret, err) {
  586.             alert("fenxiangClick:" + JSON.stringify(ret));
  587.         });

  588.         demo.addEventListener({
  589.             name: 'toupingClick'
  590.         }, function(ret, err) {
  591.             alert("toupingClick:" + JSON.stringify(ret));
  592.         });

  593.         demo.addEventListener({
  594.             name: 'moreClick'
  595.         }, function(ret, err) {
  596.             alert("moreClick:" + JSON.stringify(ret));
  597.         });

  598.         demo.addEventListener({
  599.             name: 'xuanjiClick'
  600.         }, function(ret, err) {
  601.             alert("xuanjiClick:" + JSON.stringify(ret));
  602.         });
  603.         demo.addEventListener({
  604.             name: 'nextClick'
  605.         }, function(ret, err) {
  606.             alert("nextClick:" + JSON.stringify(ret));
  607.         });
  608.         demo.addEventListener({
  609.             name: 'sendDanmuMessage'
  610.         }, function(ret, err) {
  611.             //alert("sendDanmuMessage:" + JSON.stringify(ret));
  612.             api.toast({
  613.                 msg: JSON.stringify(ret)
  614.             });
  615.         });
  616.         demo.addEventListener({
  617.             name: 'danmuClick'
  618.         }, function(ret, err) {
  619.             alert("danmuClick:" + JSON.stringify(ret));
  620.         });

  621.                                 // api.setStatusBarStyle({
  622.                                 //     style: 'light'
  623.                                 // });
  624.         // demo.addEventListener({
  625.         //     name: 'showStatusBar'
  626.         // }, function(ret, err) {
  627.         //     api.setFullScreen({
  628.         //         fullScreen: false
  629.         //     });
  630.         // });
  631.         //
  632.         // demo.addEventListener({
  633.         //     name: 'hideStatusBar'
  634.         // }, function(ret, err) {
  635.         //     api.setFullScreen({
  636.         //         fullScreen: true
  637.         //     });
  638.         // });
  639.         document.onkeydown = function(e){
  640.                                   alert("onkeydown:" + JSON.stringify(e));
  641.                           };
  642.     }

  643.     function sendDanmu() {
  644.         demo.sendDanmu({
  645.             text: '测试2测试2测试2测试2',
  646.             color: '#FF7F24'
  647.         }, function(ret, err) {
  648.             //alert(JSON.stringify(ret));
  649.         });
  650.     }

  651.     function sendDanmuList() {
  652.         demo.sendDanmuList({
  653.             isLoop: true,
  654.             data: [{
  655.                 text: '测试1',
  656.                 color: '#FF7F24'
  657.             }, {
  658.                 text: '测试2测试2测试2测试2',
  659.                 color: '#FF7F24'
  660.             }, {
  661.                 text: '测试3',
  662.                 color: '#FF7F24'
  663.             }, {
  664.                 text: '测试4测试4',
  665.                 color: '#FF7F24'
  666.             }, {
  667.                 text: '测试5',
  668.                 color: '#FF7F24'
  669.             }, {
  670.                 text: '测测测试6',
  671.                 color: '#FF7F24'
  672.             }, {
  673.                 text: '测试7试7试7试7试7',
  674.                 color: '#FF7F24'
  675.             }, {
  676.                 text: '测试8测试8测试8测试8测试8测试8测试8测试8测试8测试8',
  677.                 color: '#FF7F24'
  678.             }, {
  679.                 text: '测试9试9试9试9',
  680.                 color: '#FF7F24'
  681.             }, {
  682.                 text: '测试10',
  683.                 color: '#FF7F24'
  684.             }]
  685.         }, function(ret, err) {
  686.             //alert(JSON.stringify(ret));
  687.         });
  688.     }
  689. </script>

  690. </html>
复制代码

主题:
21
帖子:
168
云币:
336
发表于 2017-8-9 13:03:11 |
你应该放一个演示视频,啊哈哈

版主

UID:83211

主题:
151
帖子:
7437
云币:
60289

APICloud粉丝端午节模块开发者一周年你吃屎!女朋友SB侠APICloud大会专属勋章捣蛋鬼

 楼主| 发表于 2017-8-9 13:05:52 |
晨曦250 发表于 2017-8-9 13:03
你应该放一个演示视频,啊哈哈

演示视频??

驾校小白

UID:524167

主题:
3
帖子:
11
云币:
5
发表于 2018-1-28 20:28:28 |
模块有点贵哈

马路杀手

UID:496095

主题:
21
帖子:
226
云币:
1543

狗年旺旺旺APICloud粉丝女朋友强者

发表于 2018-2-26 18:02:04 |
本帖最后由 石向婷 于 2018-2-26 18:05 编辑

你好,获取视频时长为什么我的一直是个0,

版主

UID:83211

主题:
151
帖子:
7437
云币:
60289

APICloud粉丝端午节模块开发者一周年你吃屎!女朋友SB侠APICloud大会专属勋章捣蛋鬼

 楼主| 发表于 2018-2-26 18:07:01 |
石向婷 发表于 2018-2-26 18:02
你好,获取视频时长为什么我的一直是个0,

你视频地址是什么样的?

马路杀手

UID:496095

主题:
21
帖子:
226
云币:
1543

狗年旺旺旺APICloud粉丝女朋友强者

发表于 2018-2-26 18:09:18 |
52yaoer 发表于 2018-2-26 18:07
你视频地址是什么样的?

http打头的,服务器上面的路径

老司机

UID:253706

主题:
177
帖子:
16975
云币:
8007
发表于 2018-2-26 20:21:16 |
石向婷 发表于 2018-2-26 18:09
http打头的,服务器上面的路径

视频路径提供一下,先初始化再播放视频试试。

驾校小白

UID:657207

主题:
3
帖子:
18
云币:
22
发表于 2018-7-30 20:17:22 |
api.addEventListener({
                    name:'playkeyback'
            },function(ret,err){
                    demo.isFullScreen(function(ret, err) {
                                        if (ret.status) {
                                                demo.unfull(function(ret, err) {
                                                });
                                        } else {
//                                                closeWin();
                                                alert('关闭win页面');
                                        }
                                });
            });
支持这个事件处理吗?

版主

UID:83211

主题:
151
帖子:
7437
云币:
60289

APICloud粉丝端午节模块开发者一周年你吃屎!女朋友SB侠APICloud大会专属勋章捣蛋鬼

 楼主| 发表于 2018-7-30 20:46:15 |
I_ambubu 发表于 2018-7-30 20:17
api.addEventListener({
                    name:'playkeyback'
            },function(ret,err){

支持啊,,

点评

:楼主好!你的视频模块可以修改后达到如下效果吗? 不显示进度条和播放按钮,屏幕任意一点触摸单击即可开启播放或暂停,播放和暂停图标改为圆点 
发表于 2018-8-1 10:30
您需要登录后才可以回帖 登录 | 立即注册

快速回复 返回顶部 返回列表