帖子
帖子
用户
博客
课程
12下一页
返回列表 发新帖
显示全部楼层
1
帖子
0
勋章
11
Y币

touping模块demo示例

[复制链接]
发表于 2019-8-15 16:56:45
本帖最后由 dazhubian 于 2019-8-15 16:56 编辑

touping模块实现局域网内基于DLNA的视频投屏功能,并支持搜索设备,投屏播放,调节播放进度,调节音量,退出投屏等功能。

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

  3. <head>
  4.     <meta charset="utf-8">
  5.     <meta name="viewport" content="maximum-scale=1.0,minimum-scale=1.0,user-scalable=0,width=device-width,initial-scale=1.0" />
  6.     <meta name="format-detection" content="telephone=no,email=no,date=no,address=no">
  7.     <title>AUI快速完成布局</title>
  8.     <link rel="stylesheet" type="text/css" href="../css/aui.css" />
  9. </head>

  10. <body>
  11.     <div class="aui-tips">
  12.         <div class="aui-tips-title aui-ellipsis-1" id="tips">请点击底部“搜索设备”按钮,进行可投屏设备搜索</div>
  13.     </div>
  14.     <div class="aui-content aui-margin-b-15">
  15.         <ul class="aui-list aui-list-in" id="deviceList">

  16.         </ul>
  17.     </div>

  18.     <div style="position:fixed;bottom:3rem;padding:1rem;">
  19.         <div class="aui-range" style="display:block;width:300px;">
  20.             音量 <input type="range" class="aui-range" value="0" max="100" min="1" step="1" id="rangeVolume" style="width:100%"/>
  21.         </div>
  22.         <div class="aui-range" style="display:block;width:300px;">
  23.             进度 <input type="range" class="aui-range" value="0" max="100" min="1" step="1" id="rangeSeek" style="width:100%"/>
  24.         </div>
  25.     </div>
  26.     <footer class="aui-bar aui-bar-tab" id="footer">
  27.         <div class="aui-bar-tab-item " tapmode>
  28.             <div class="aui-bar-tab-label">搜索设备</div>
  29.         </div>
  30.         <div class="aui-bar-tab-item" tapmode>
  31.             <div class="aui-bar-tab-label">视频投屏</div>
  32.         </div>
  33.         <div class="aui-bar-tab-item" tapmode>
  34.             <div class="aui-bar-tab-label">切换视频</div>
  35.         </div>
  36.         <div class="aui-bar-tab-item" tapmode>
  37.             <div class="aui-bar-tab-label">退出投屏</div>
  38.         </div>
  39.         <div class="aui-bar-tab-item" tapmode style="display:none">
  40.         </div>
  41.     </footer>
  42. </body>
  43. <script type="text/javascript" src="../script/api.js"></script>
  44. <script type="text/javascript" src="../script/aui-tab.js"></script>
  45. <script type="text/javascript" src="../script/aui-range.js"></script>
  46. <script type="text/javascript">
  47.     var touping;
  48.     var deviceIndex;
  49.     apiready = function() {
  50.         api.parseTapmode();
  51.         touping = api.require('touping');
  52.     }
  53.     var tab = new auiTab({
  54.         element: document.getElementById("footer"),
  55.         index: 5,
  56.         repeatClick: true
  57.     }, function(ret) {
  58.         console.log(ret.index);
  59.         if (ret) {
  60.             if (ret.index == 1) {
  61.                 browse();
  62.             } else if (ret.index == 2) {
  63.                 play();
  64.             } else if (ret.index == 3) {
  65.                 playUrl();
  66.             } else if (ret.index == 4) {
  67.                 stop();
  68.             }
  69.         }
  70.     });

  71.     function browse() {
  72.         $api.byId('deviceList').innerHTML = '';
  73.         touping.browse(function(ret, err) {
  74.             if (ret.status) {
  75.                 showDeviceList(ret.deviceList);
  76.                 document.getElementById("tips").textContent = "搜索到" + ret.deviceList.length + "个设备,请选择要投屏的设备";
  77.             } else {
  78.                 document.getElementById("tips").textContent = "未搜索到设备,请检查当前局域网内是否有可投屏设备";
  79.             }
  80.         });
  81.     }

  82.     function showDeviceList(deviceList) {
  83.         for (var i = 0; i < deviceList.length; i++) {
  84.             var item = '<li class="aui-list-item" style="border-bottom:0" onclick="choiceDevice("' + deviceList[i].name + '",' + i + ')">';
  85.             item += '<div class="aui-list-item-inner">';
  86.             item += deviceList[i].name;
  87.             item += '</div>';
  88.             item += '</li>';
  89.             $api.byId('deviceList').insertAdjacentHTML('beforeEnd', item);
  90.         }
  91.     }

  92.     function choiceDevice(name, index) {
  93.         deviceIndex = index;
  94.         document.getElementById("tips").textContent = "您选择了 " + name + " 进行投屏";
  95.     }

  96.     function play() {
  97.         touping.play({
  98.             index: deviceIndex,
  99.             url: "http://wvideo**.**/video/2016/0328/56f8ec01d9bfe_wpd.mp4"
  100.         }, function(ret, err) {
  101.               alert(JSON.stringify(ret));
  102.         });
  103.     }

  104.     function playUrl() {
  105.         touping.playUrl({
  106.             url: "http://file**.**/file/video/2019-08-13/172/1565702535263.mp4"
  107.         }, function(ret, err) {
  108.             alert(JSON.stringify(ret));
  109.         });

  110.     }

  111.     function stop() {
  112.         touping.stop(function(ret, err) {
  113.             alert(JSON.stringify(ret));
  114.         });
  115.     }

  116.     function volume(value) {
  117.         touping.volume({
  118.             value: value
  119.         }, function(ret, err) {
  120.             console.log(JSON.stringify(ret));
  121.         });
  122.     }

  123.     function seek(value) {
  124.         touping.seek({
  125.             value: value
  126.         }, function(ret, err) {
  127.             console.log(JSON.stringify(ret));
  128.         });

  129.     }

  130.     var range1 = new auiRange({
  131.         element: document.getElementById("rangeVolume") //滑块容器
  132.     }, function(ret) {
  133.         volume(ret.value);
  134.     })

  135.     var range2 = new auiRange({
  136.         element: document.getElementById("rangeSeek") //滑块容器
  137.     }, function(ret) {
  138.         seek(ret.value);
  139.     })
  140. </script>

  141. </html>
复制代码


本帖子中包含更多资源,您需要 登录 才可以下载或查看,没有帐号?立即注册

X
1
帖子
0
勋章
11
Y币
kchysaq 发表于 2021-2-25 23:29
投屏教程没有?

请在项目中集成模块,参考demo里面的使用方法试用。
2
帖子
0
勋章
2614
Y币
有没有具体的操作方法啊
2
帖子
0
勋章
2614
Y币
这个模块具体操作方法有吗
22
帖子
0
勋章
147
Y币
这个模块投屏需要接收端安装插件吗?
4
帖子
0
勋章
44
Y币
投屏教程没有?
0
帖子
0
勋章
44
Y币
这个有不兼容的设备盒子吗?隔壁的dlna很多不兼容
1
帖子
0
勋章
11
Y币
昵称454454546 发表于 2021-2-28 17:10
这个有不兼容的设备盒子吗?隔壁的dlna很多不兼容

测试条件有限,暂时没发现不兼容的设备,先下demo试用呗,有问题反馈。
18
帖子
0
勋章
125
Y币
开始投屏, 暂停  这样的代码没有嘛?     其他投屏模块有 startDLNA(开始投屏),pause (暂停播放), 你模块有的提供一下 ,  你的模块搜索投屏以后连接 用play开始投屏的 每次投屏没有实现了

5
帖子
0
勋章
71
Y币
ios投屏设备找不到
12下一页
您需要登录后才可以回帖 登录

本版积分规则