ZNDS智能电视网 推荐当贝市场

TV应用下载 / 资源分享区

软件下载 | 游戏 | 讨论 | 电视计算器

综合交流 / 评测 / 活动区

交流区 | 测硬件 | 网站活动 | Z币中心

新手入门 / 进阶 / 社区互助

新手 | 你问我答 | 免费刷机救砖 | ROM固件

查看: 10504|回复: 3
上一主题 下一主题
[分享]

利用MediaPlayer在IPTV机顶盒上播放RTSP协议视频的方法与技巧

[复制链接]
跳转到指定楼层
楼主
发表于 2024-2-23 11:04 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
IPTV机顶盒利用MediaPlayer播放RTSP视频已成为可能。RTSP协议广泛应用于视频流传输,要在机顶盒上实现RTSP播放,需确保系统支持MediaPlayer对RTSP的解析。开发者需编写代码,传递RTSP流地址给播放器并设置参数。这样,用户便可在机顶盒上流畅观看RTSP视频。

废话不多说直接上代码。如下:

  1. <%[url=home.php?mod=space&uid=103582]@[/url] page contentType="text/html; charset=utf-8" language="java"%>
  2. <html>
  3. <head>
  4.     <meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>
  5.     <meta http-equiv="Page-Enter" content="blendTrans(Duration=1.0)"/>
  6.     <title>播放视频</title>
  7.     <script language="JavaScript" type="text/JavaScript">
  8.       //这里最好找一个确定能播放的rtsp视频地址
  9.         var url="rtsp://220.191.136.24/88888913/16/20220419/275541798/275541798.ts";
  10.        var mediaStr='';
  11.            mediaStr = '[{mediaUrl:"'+ url +'",';
  12.             mediaStr += 'mediaCode: "jsoncode1",';
  13.             mediaStr += 'mediaType:2,';
  14.             mediaStr += 'audioType:1,';
  15.             mediaStr += 'videoType:1,';
  16.             mediaStr += 'streamType:1,';
  17.             mediaStr += 'drmType:1,';
  18.             mediaStr += 'fingerPrint:0,';
  19.             mediaStr += 'copyProtection:1,';
  20.             mediaStr += 'allowTrickmode:1,';
  21.             mediaStr += 'startTime:0,';
  22.             mediaStr += 'endTime:20000,';
  23.             mediaStr += 'entryID:"jsonentry1"}]';
  24.         var mp = new MediaPlayer(); //新建一个mediaplayer对象  这个对象机顶盒底层有 这样写就行
  25.         var instanceId = mp.getNativePlayerInstanceID(); //读取本地的媒体播放实例的标识
  26.         window.onload=function () { //进入界面就播放
  27.             stop();
  28.             start();
  29.         }
  30.         //初始话mediaPlay对象
  31.         function initMediaPlay(){
  32.             var playListFlag = 0; //Media Player 的播放模式。 0:单媒体的播放模式 (默认值),1: 播放列表的播放模式
  33.             var videoDisplayMode = 1; //MediaPlayer 对象对应的视频窗口的显示模式. 1: 全屏显示2: 按宽度显示,3: 按高度显示
  34.             var height = 720;
  35.             var width = 1280;
  36.             var left = 0;
  37.             var top = 0;
  38.             var muteFlag = 0; //0: 设置为有声 (默认值) 1: 设置为静音
  39.             var subtitleFlag = 0; //字幕显示
  40.             var videoAlpha = 0; //视频的透明度

  41.             var cycleFlag = 0;
  42.             var randomFlag = 0;
  43.             var autoDelFlag = 0;
  44.             var useNativeUIFlag = 1;

  45.             //初始话mediaplayer对象
  46.             mp.initMediaPlayer(instanceId,playListFlag,videoDisplayMode,
  47.                 height,width,left,top,muteFlag,useNativeUIFlag,subtitleFlag,videoAlpha,cycleFlag,randomFlag,autoDelFlag);

  48.             mp.setSingleMedia(mediaStr); //设置媒体播放器播放媒体内容
  49.             mp.setAllowTrickmodeFlag(0); //设置是否允许trick操作。 0:允许 1:不允许
  50.             mp.setVideoDisplayMode(0);
  51.             mp.setVideoDisplayArea(left,top,width,height);  //视频在body里的位置  这里是绝对定位的坐标

  52.             mp.setNativeUIFlag(0); //设置播放器本地UI显示功能 0:允许 1:不允许
  53.             mp.setAudioTrackUIFlag(1);

  54.             mp.setMuteUIFlag(1);
  55.             mp.setAudioVolumeUIFlag(1);
  56.             mp.refreshVideoDisplay();
  57.             // mp.setVolume(30); //初始化音量
  58.         }
  59.         //进入页面后直接播放
  60.         function start(){
  61.             initMediaPlay();
  62.             play();
  63.         }
  64.         // start();
  65.         function serverStop(){ //播放结束 这里是播放结束后重新在播放一遍
  66.             stop();
  67.             start();
  68.            
  69.         }
  70.       
  71.         function mute(){  //静音
  72.             var plflag=mp.getMuteFlag();
  73.             if(plflag == 0){
  74.                 mp.setMuteFlag(1);
  75.             }else{
  76.                 mp.setMuteFlag(0);
  77.             }
  78.         }

  79.         //播放
  80.         function play(){
  81.             // playStat = "play";
  82.             mp.playFromStart();
  83.         }

  84.         //停止播放
  85.         function stop(){
  86.             mp.stop();
  87.         }
  88.         function resume(){
  89.             speed = 1;
  90.             // playStat = "play";
  91.             mp.resume();
  92.         }
  93.         function volUp(){ //音量+
  94.             var vol = mp.getVolume();
  95.             vol = (vol <= 90 ? vol+10 : 100);
  96.             mp.setVolume(vol);
  97.         }

  98.         function volDown(){ //音量-
  99.             var vol = mp.getVolume();
  100.             vol = (vol >= 10 ? vol-10 : 0);
  101.             mp.setVolume(vol);
  102.         }
  103.         function fastForward() {//快进
  104.             speed = speed * 2;
  105.             if(speed > 32)
  106.                 speed = 2;
  107.             mp.fastForward(speed);
  108.             setTimeout(function(){resume()},5*1000);
  109.         }

  110.         function fastRewind(){//快退
  111.             speed = speed * 2;
  112.             if(speed > 32)
  113.                 speed = 2;
  114.             mp.fastRewind(-speed);
  115.             setTimeout(function(){resume()},5*1000);
  116.         }
  117.         function swtichjy(){//静音
  118.             if(plflag == 0 ){
  119.                 plflag=1;
  120.                 mp.setMuteFlag(1);
  121.             }else{
  122.                 plflag=0;
  123.                 mp.setMuteFlag(0);
  124.             }
  125.         }
  126.         function goUtility() {//机顶盒事件响应  有的机顶盒不会执行影响不大
  127.             eval("eventJson = " + Utility.getEvent());
  128.             var typeStr = eventJson.type;
  129.             switch(typeStr) {
  130.                 case "EVENT_MEDIA_BEGINING":
  131.                     return false;
  132.                 case "EVENT_MEDIA_ERROR":
  133.                     mediaError(eventJson);
  134.                     return false;
  135.                 case "EVENT_MEDIA_END":
  136.                     serverStop();
  137.                     return false;
  138.                 default :
  139.                     break;
  140.             }
  141.             return true;
  142.         }

  143.         function mediaError(eventJson) {//出现错误
  144.             var code = eventJson.error_code;
  145.             var type = eventJson.error_message;
  146.         }

  147.         function checkMvKey(keycode) {
  148.             switch(keycode) {
  149.                 case 768: //播放事件||有的机顶盒不会执行 影响不大
  150.                     goUtility();
  151.                     break;
  152.                 case 259://声音大
  153.                     volUp();
  154.                     break;
  155.                 case 260://声音小

  156.                     volDown();
  157.                     break;
  158.                 case 264://快进
  159.                     fastForward();
  160.                     break;
  161.                 case 265://快退
  162.                     fastRewind();
  163.                     break;
  164.                 case 261://静音
  165.                     swtichjy();
  166.                     mute();
  167.                     break;
  168.                 // case 263:
  169.                 //     pauseOrPlay();
  170.                 //     break;
  171.                 case 34://下,到尾
  172.                     mp.gotoEnd();
  173.                     break;
  174.                 case 8: //返回
  175.                     goBack();
  176.                     break;
  177.             }
  178.         }
  179.         function goBack() { //我这里写 是我为了方便测试 回退到我的主界面里面去
  180.             window.location.href = '../../page_home.jsp?version=1';
  181.         }
  182.         // iPanel.focusWidth = "-1";
  183.         function grabEvent(evt) {  //遥控器 响应事件
  184.             evt = evt?evt:window.event;
  185.             var keycode = evt.keyCode;  //遥控器对应的数字
  186.             if(keycode == 8){  //遥控器返回键
  187.                 goBack();
  188.                 return false;
  189.             }
  190.                 checkMvKey(keycode);
  191.         }
  192.         document.onkeypress=grabEvent;
  193.         document.onirkeypress=grabEvent;
  194.     </script>
  195. </head>
  196. <body onUnload="stop();" bodybgcolor="transparent" leftmargin="0" topmargin="0" marginwidth="0" marginheight="0" style="background-color: transparent;position:absolute;z-index:0;" >
  197. </body>
  198. </html>
  199.   
  200.   说明:onUnload="stop();" 这里是离开页面的时候需要停止播放 很好理解哈。对了,别再浏览器上测试哈,浏览器不支持rtsp的
  201.   
复制代码



相关阅读:
电视盒子adb怎么打开 解锁电视盒子ADB常用命令
机顶盒adb调试怎么用 机顶盒开启adb教程
小米电视机如何进入开发者模式 小米盒子怎么打开adb模式
电视屏幕局部发黑是什么原因 2024电视屏幕故障怎么修

上一篇:广东UNT403G刷机如何开启ADB?有谁会?
下一篇:电视盒子刷机卡在这是什么情况?

相关帖子

沙发
发表于 2024-2-23 11:04 | 只看该作者
视频播放会被背景图挡住楼主有了解吗
回复 支持 反对

使用道具 举报

板凳
 楼主| 发表于 2024-2-23 11:05 | 只看该作者
solitary. 发表于 2024-2-23 11:04
视频播放会被背景图挡住楼主有了解吗

有,需要ui将挡住的部分扣掉是最好解决的办法
回复 支持 反对

使用道具 举报

地板
发表于 2024-3-27 09:42 | 只看该作者
MediaPlay生成的大小无法控制,设置了宽高还是原来的大小楼主有遇到过吗
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

Archiver|新帖|标签|软件|Sitemap|ZNDS智能电视网 ( 苏ICP备2023012627号 )

网络信息服务信用承诺书 | 增值电信业务经营许可证:苏B2-20221768 丨 苏公网安备 32011402011373号

GMT+8, 2024-4-29 01:47 , Processed in 0.065762 second(s), 13 queries , Redis On.

Powered by Discuz!

监督举报:report#znds.com (请将#替换为@)

© 2007-2024 ZNDS.Com

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