IPTV机顶盒使用MediaPlayer 播放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的
  
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值