利用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
视频播放会被背景图挡住楼主有了解吗
有,需要ui将挡住的部分扣掉是最好解决的办法
MediaPlay生成的大小无法控制,设置了宽高还是原来的大小楼主有遇到过吗
页:
[1]