聪聪搞机 发表于 2024-2-23 11:04

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

IPTV机顶盒利用MediaPlayer播放RTSP视频已成为可能。RTSP协议广泛应用于视频流传输,要在机顶盒上实现RTSP播放,需确保系统支持MediaPlayer对RTSP的解析。开发者需编写代码,传递RTSP流地址给播放器并设置参数。这样,用户便可在机顶盒上流畅观看RTSP视频。

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

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

            var cycleFlag = 0;
            var randomFlag = 0;
            var autoDelFlag = 0;
            var useNativeUIFlag = 1;

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

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

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

            mp.setMuteUIFlag(1);
            mp.setAudioVolumeUIFlag(1);
            mp.refreshVideoDisplay();
            // mp.setVolume(30); //初始化音量
      }
      //进入页面后直接播放
      function start(){
            initMediaPlay();
            play();
      }
      // start();
      function serverStop(){ //播放结束 这里是播放结束后重新在播放一遍
            stop();
            start();
         
      }
      
      function mute(){//静音
            var plflag=mp.getMuteFlag();
            if(plflag == 0){
                mp.setMuteFlag(1);
            }else{
                mp.setMuteFlag(0);
            }
      }

      //播放
      function play(){
            // playStat = "play";
            mp.playFromStart();
      }

      //停止播放
      function stop(){
            mp.stop();
      }
      function resume(){
            speed = 1;
            // playStat = "play";
            mp.resume();
      }
      function volUp(){ //音量+
            var vol = mp.getVolume();
            vol = (vol <= 90 ? vol+10 : 100);
            mp.setVolume(vol);
      }

      function volDown(){ //音量-
            var vol = mp.getVolume();
            vol = (vol >= 10 ? vol-10 : 0);
            mp.setVolume(vol);
      }
      function fastForward() {//快进
            speed = speed * 2;
            if(speed > 32)
                speed = 2;
            mp.fastForward(speed);
            setTimeout(function(){resume()},5*1000);
      }

      function fastRewind(){//快退
            speed = speed * 2;
            if(speed > 32)
                speed = 2;
            mp.fastRewind(-speed);
            setTimeout(function(){resume()},5*1000);
      }
      function swtichjy(){//静音
            if(plflag == 0 ){
                plflag=1;
                mp.setMuteFlag(1);
            }else{
                plflag=0;
                mp.setMuteFlag(0);
            }
      }
      function goUtility() {//机顶盒事件响应有的机顶盒不会执行影响不大
            eval("eventJson = " + Utility.getEvent());
            var typeStr = eventJson.type;
            switch(typeStr) {
                case "EVENT_MEDIA_BEGINING":
                  return false;
                case "EVENT_MEDIA_ERROR":
                  mediaError(eventJson);
                  return false;
                case "EVENT_MEDIA_END":
                  serverStop();
                  return false;
                default :
                  break;
            }
            return true;
      }

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

      function checkMvKey(keycode) {
            switch(keycode) {
                case 768: //播放事件||有的机顶盒不会执行 影响不大
                  goUtility();
                  break;
                case 259://声音大
                  volUp();
                  break;
                case 260://声音小

                  volDown();
                  break;
                case 264://快进
                  fastForward();
                  break;
                case 265://快退
                  fastRewind();
                  break;
                case 261://静音
                  swtichjy();
                  mute();
                  break;
                // case 263:
                //   pauseOrPlay();
                //   break;
                case 34://下,到尾
                  mp.gotoEnd();
                  break;
                case 8: //返回
                  goBack();
                  break;
            }
      }
      function goBack() { //我这里写 是我为了方便测试 回退到我的主界面里面去
            window.location.href = '../../page_home.jsp?version=1';
      }
      // iPanel.focusWidth = "-1";
      function grabEvent(evt) {//遥控器 响应事件
            evt = evt?evt:window.event;
            var keycode = evt.keyCode;//遥控器对应的数字
            if(keycode == 8){//遥控器返回键
                goBack();
                return false;
            }
                checkMvKey(keycode);
      }
      document.onkeypress=grabEvent;
      document.onirkeypress=grabEvent;
    </script>
</head>
<body onUnload="stop();" bodybgcolor="transparent" leftmargin="0" topmargin="0" marginwidth="0" marginheight="0" style="background-color: transparent;position:absolute;z-index:0;" >
</body>
</html>

说明:onUnload="stop();" 这里是离开页面的时候需要停止播放 很好理解哈。对了,别再浏览器上测试哈,浏览器不支持rtsp的


https://www.znds.com/static/image/hrline/2.gif

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

solitary. 发表于 2024-2-23 11:04

视频播放会被背景图挡住楼主有了解吗

聪聪搞机 发表于 2024-2-23 11:05

solitary. 发表于 2024-2-23 11:04
视频播放会被背景图挡住楼主有了解吗

有,需要ui将挡住的部分扣掉是最好解决的办法

small.wei 发表于 2024-3-27 09:42

MediaPlay生成的大小无法控制,设置了宽高还是原来的大小楼主有遇到过吗
页: [1]
查看完整版本: 利用MediaPlayer在IPTV机顶盒上播放RTSP协议视频的方法与技巧