首頁 收藏 QQ群
 網(wǎng)站導(dǎo)航

ZNDS智能電視網(wǎng) 推薦當(dāng)貝市場

TV應(yīng)用下載 / 資源分享區(qū)

軟件下載 | 游戲 | 討論 | 電視計(jì)算器

綜合交流 / 評測 / 活動(dòng)區(qū)

交流區(qū) | 測硬件 | 網(wǎng)站活動(dòng) | Z幣中心

新手入門 / 進(jìn)階 / 社區(qū)互助

新手 | 你問我答 | 免費(fèi)刷機(jī)救磚 | ROM固件

查看: 19934|回復(fù): 3
上一主題 下一主題
[分享]

利用MediaPlayer在IPTV機(jī)頂盒上播放RTSP協(xié)議視頻的方法與技巧

[復(fù)制鏈接]
跳轉(zhuǎn)到指定樓層
樓主
發(fā)表于 2024-2-23 11:04 | 只看該作者 回帖獎(jiǎng)勵(lì) |倒序?yàn)g覽 |閱讀模式 | 來自上海
IPTV機(jī)頂盒利用MediaPlayer播放RTSP視頻已成為可能。RTSP協(xié)議廣泛應(yīng)用于視頻流傳輸,要在機(jī)頂盒上實(shí)現(xiàn)RTSP播放,需確保系統(tǒng)支持MediaPlayer對RTSP的解析。開發(fā)者需編寫代碼,傳遞RTSP流地址給播放器并設(shè)置參數(shù)。這樣,用戶便可在機(jī)頂盒上流暢觀看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.       //這里最好找一個(gè)確定能播放的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(); //新建一個(gè)mediaplayer對象  這個(gè)對象機(jī)頂盒底層有 這樣寫就行
  25.         var instanceId = mp.getNativePlayerInstanceID(); //讀取本地的媒體播放實(shí)例的標(biāo)識(shí)
  26.         window.onload=function () { //進(jìn)入界面就播放
  27.             stop();
  28.             start();
  29.         }
  30.         //初始話mediaPlay對象
  31.         function initMediaPlay(){
  32.             var playListFlag = 0; //Media Player 的播放模式。 0:單媒體的播放模式 (默認(rèn)值),1: 播放列表的播放模式
  33.             var videoDisplayMode = 1; //MediaPlayer 對象對應(yīng)的視頻窗口的顯示模式. 1: 全屏顯示2: 按寬度顯示,3: 按高度顯示
  34.             var height = 720;
  35.             var width = 1280;
  36.             var left = 0;
  37.             var top = 0;
  38.             var muteFlag = 0; //0: 設(shè)置為有聲 (默認(rèn)值) 1: 設(shè)置為靜音
  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); //設(shè)置媒體播放器播放媒體內(nèi)容
  49.             mp.setAllowTrickmodeFlag(0); //設(shè)置是否允許trick操作。 0:允許 1:不允許
  50.             mp.setVideoDisplayMode(0);
  51.             mp.setVideoDisplayArea(left,top,width,height);  //視頻在body里的位置  這里是絕對定位的坐標(biāo)

  52.             mp.setNativeUIFlag(0); //設(shè)置播放器本地UI顯示功能 0:允許 1:不允許
  53.             mp.setAudioTrackUIFlag(1);

  54.             mp.setMuteUIFlag(1);
  55.             mp.setAudioVolumeUIFlag(1);
  56.             mp.refreshVideoDisplay();
  57.             // mp.setVolume(30); //初始化音量
  58.         }
  59.         //進(jìn)入頁面后直接播放
  60.         function start(){
  61.             initMediaPlay();
  62.             play();
  63.         }
  64.         // start();
  65.         function serverStop(){ //播放結(jié)束 這里是播放結(jié)束后重新在播放一遍
  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() {//快進(jìn)
  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() {//機(jī)頂盒事件響應(yīng)  有的機(jī)頂盒不會(huì)執(zhí)行影響不大
  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) {//出現(xiàn)錯(cuò)誤
  144.             var code = eventJson.error_code;
  145.             var type = eventJson.error_message;
  146.         }

  147.         function checkMvKey(keycode) {
  148.             switch(keycode) {
  149.                 case 768: //播放事件||有的機(jī)頂盒不會(huì)執(zhí)行 影響不大
  150.                     goUtility();
  151.                     break;
  152.                 case 259://聲音大
  153.                     volUp();
  154.                     break;
  155.                 case 260://聲音小

  156.                     volDown();
  157.                     break;
  158.                 case 264://快進(jìn)
  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) {  //遙控器 響應(yīng)事件
  184.             evt = evt?evt:window.event;
  185.             var keycode = evt.keyCode;  //遙控器對應(yīng)的數(shù)字
  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();" 這里是離開頁面的時(shí)候需要停止播放 很好理解哈。對了,別再瀏覽器上測試哈,瀏覽器不支持rtsp的
  201.   
復(fù)制代碼



相關(guān)閱讀:
電視盒子adb怎么打開 解鎖電視盒子ADB常用命令
機(jī)頂盒adb調(diào)試怎么用 機(jī)頂盒開啟adb教程
小米電視機(jī)如何進(jìn)入開發(fā)者模式 小米盒子怎么打開adb模式
電視屏幕局部發(fā)黑是什么原因 2024電視屏幕故障怎么修

上一篇:廣東UNT403G刷機(jī)如何開啟ADB?有誰會(huì)?
下一篇:電視盒子刷機(jī)卡在這是什么情況?

相關(guān)帖子

沙發(fā)
發(fā)表于 2024-2-23 11:04 | 只看該作者 | 來自廣東
視頻播放會(huì)被背景圖擋住樓主有了解嗎
板凳
 樓主| 發(fā)表于 2024-2-23 11:05 | 只看該作者 | 來自上海
solitary. 發(fā)表于 2024-2-23 11:04
視頻播放會(huì)被背景圖擋住樓主有了解嗎

有,需要ui將擋住的部分扣掉是最好解決的辦法
地板
發(fā)表于 2024-3-27 09:42 | 只看該作者 | 來自上海
MediaPlay生成的大小無法控制,設(shè)置了寬高還是原來的大小樓主有遇到過嗎
您需要登錄后才可以回帖 登錄 | 立即注冊

本版積分規(guī)則

Archiver|新帖|標(biāo)簽|軟件|Sitemap|ZNDS智能電視網(wǎng) ( 蘇ICP備2023012627號(hào) )

網(wǎng)絡(luò)信息服務(wù)信用承諾書 | 增值電信業(yè)務(wù)經(jīng)營許可證:蘇B2-20221768 丨 蘇公網(wǎng)安備 32011402011373號(hào)

GMT+8, 2024-11-20 22:39 , Processed in 0.065243 second(s), 13 queries , Redis On.

Powered by Discuz!

監(jiān)督舉報(bào):report#znds.com (請將#替換為@)

© 2007-2024 ZNDS.Com

快速回復(fù) 返回頂部 返回列表