专栏首页RTSP/RTMP直播相关APICloud下播放RTSP/RTMP流
原创

APICloud下播放RTSP/RTMP流

随着apicloud的普及,越来越多的用户苦于apicloud下没有一款真正靠谱低延迟的rtmp/rtsp直播播放器苦恼。

本模块封装了大牛直播SDK,支持rtsp、rtmp播放(请开发者自行控制播放格式),支持秒开模式,支持快速切换视频播放地址等。

文件打包模块包需注意事项请参考 打包模块包注意事项

模块接口

addPlayerListener

播放器监听

addPlayerListener(callback(ret))

callback(ret)

ret:

  • 类型:JSON 对象
  • 内部字段:
{
    code: 1001,   //状态码(含义见下表:)
    param1 : '',//返回参数1
    param2 : '',//返回参数2
    param3 : '',//返回参数3
    param4 : '',//返回参数4
}

示例代码

var demo = api.require('daniuPlayer');
demo.addPlayerListener(function(ret){
    api.toast({
        msg : " addPlayerListener " + JSON.stringify(ret)
    });
});

code状态码

状态码

描述信息

1001

开始播放

1002

连接中

1003

连接失败

1004

已连接

1005

断开连接

1006

停止播放

1007

视频解码分辨率信息

1008

收不到RTMP数据

1009

快速切换url

1010

快照成功/失败

1011

开始buffer

1012

buffer百分比

1013

停止buffer

1014

download速度

可用性

iOS系统,Android系统

可提供的1.0.0及更高版本

openPlayer

打开播放器

openPlayer({params}, callback(ret, err))

params

rect:

  • 类型:JSON 对象
  • 描述:(必填项)模块的位置及尺寸
  • 备注:iOS,Android 必须传此参数。
  • 内部字段:
{
    x: 0,   //(必填项)数字类型;模块左上角的 x 坐标(相对于所属的 Window 或 Frame);默认值:0
    y: 0,   //(必填项)数字类型;模块左上角的 y 坐标(相对于所属的 Window 或 Frame);默认值:0
    w: api.frameWidth, //(必填项)数字类型;模块的宽度;默认值:所属的 Window 或 Frame 的宽度
    h: api.frameHeight  //(必填项)数字类型;模块的高度;默认值:所属的 Window 或 Frame 的高度
}

fixedOn:

  • 类型:字符串
  • 描述:(可选项)模块所属 Frame 的名字,若不传则模块归属于当前 Window

fixed:

  • 类型:布尔
  • 描述:((可选项)模块是否随所属 Window 或 Frame 滚动
  • 默认值:true(不随之滚动)

playBuffer:

  • 类型:数字型
  • 描述:(可选项)设置播放端缓存数据 buffer,如不需 buffer, 设置为 0 。
  • 默认值:200

isLowLatency:

  • 类型:布尔
  • 描述:(可选项)针对类似于直播娃娃机等期待超低 延迟的使用场景,超低延迟播放模式下,延迟可达到 200~400ms;
  • 默认值:false(不开启)

isFastStartup:

  • 类型:布尔
  • 描述:(可选项)设置 快速启动后,如果 CDN 缓存 GOP,daniulive player 可快速出帧;
  • 默认值:true(秒开)

isMute:

  • 类型:布尔
  • 描述:(可选项)设置播放过程中,实时静音/取消静音;
  • 默认值:false(取消静音)

isHardwareDecoder:

  • 类型:布尔
  • 描述:(可选项)设置是否用硬解码播放,硬解码/软解码;
  • 默认值:false(软解)

url:

  • 类型:字符串
  • 描述:(必填项)支持 rtmp、rtsp地址类型(类型控制请开发者自行判断,模块不做地址限制判断逻辑);

callback(ret, err)

ret:

  • 类型:JSON 对象
  • 内部字段:
{
    status: true,   //布尔型;true||false
}

err:

  • 类型:JSON 对象
  • 内部字段:
{
    msg : ''
}

示例代码

var demo = api.require('daniuPlayer');
demo.openPlayer({
    rect : {
        x : 5,
        y : 0,
        w : api.frameWidth-5,
        h : 200 
    },
    playBuffer : 200, // 默认200ms
    isLowLatency : false, //超低延时,默认fasle:不开启 true:开启
    isFastStartup : true, // 是否秒开, 默认true:秒开 false:取消秒开
    isMute : false, //是否静音 默认false:取消静音 true:静音
    isHardwareDecoder : false, //是否硬解 默认false:软解 true:硬解
    url : _deviceid , 
    fixedOn : api.frameName,
    fixed : true
}, function(ret, err) {
    api.toast({ msg : " openPlayer " + JSON.stringify(ret) + " " + JSON.stringify(err) });
});

可用性

iOS系统,Android系统

可提供的1.0.0及更高版本

hidePlayer

隐藏播放器

hidePlayer(callback(ret,err))

callback(ret, err)

ret:

  • 类型:JSON 对象
  • 内部字段:
{
    status: true,   //布尔型;true||false
}

err:

  • 类型:JSON 对象
  • 内部字段:
{
    msg : ''
}

示例代码

var demo = api.require('daniuPlayer');
demo.hidePlayer();

可用性

iOS系统,Android系统

可提供的1.0.0及更高版本

showPlayer

显示播放器

hidePlayer(callback(ret,err))

callback(ret, err)

ret:

  • 类型:JSON 对象
  • 内部字段:
{
    status: true,   //布尔型;true||false
}

err:

  • 类型:JSON 对象
  • 内部字段:
{
    msg : ''
}

示例代码

var demo = api.require('daniuPlayer');
demo.showPlayer();

可用性

iOS系统,Android系统

可提供的1.0.0及更高版本

closePlayer

关闭播放器

closePlayer(callback(ret,err))

callback(ret, err)

ret:

  • 类型:JSON 对象
  • 内部字段:
{
    status: true,   //布尔型;true||false
}

err:

  • 类型:JSON 对象
  • 内部字段:
{
    msg : ''
}

示例代码

var demo = api.require('daniuPlayer');
demo.closePlayer();

可用性

iOS系统,Android系统

可提供的1.0.0及更高版本

switchUrl

切换播放器视频地址 switchUrl({params}, callback(ret, err))

params

url:

  • 类型:字符串
  • 描述:(必填项)支持 rtmp、rtsp地址类型(类型控制请开发者自行判断,模块不做地址限制判断逻辑);

callback(ret, err)

ret:

  • 类型:JSON 对象
  • 内部字段:
{
    status: true,   //布尔型;true||false
}

err:

  • 类型:JSON 对象
  • 内部字段:
{
    msg : ''
}

示例代码

var demo = api.require('daniuPlayer');
demo.switchUrl({
    url : "http://live.hkstv.hk.lxdns.com/live/hks/playlist.m3u8"
}, function(ret, err) {
    api.toast({
        msg : " switchUrl " + JSON.stringify(ret) + " " + JSON.stringify(err)
    });
});

可用性

iOS系统,Android系统

可提供的1.0.0及更高版本

switchMute

设置是否静音 switchMute({params}, callback(ret, err))

params

isMute:

  • 类型:布尔
  • 描述:(可选项)设置播放过程中,实时静音/取消静音;
  • 默认值:false(取消静音)

callback(ret, err)

ret:

  • 类型:JSON 对象
  • 内部字段:
{
    status: true,   //布尔型;true||false
}

err:

  • 类型:JSON 对象
  • 内部字段:
{
    msg : ''
}

示例代码

var demo = api.require('daniuPlayer');
demo.switchMute({
    isMute : true
}, function(ret, err) {
    api.toast({
        msg : " switchMute " + JSON.stringify(ret) + " " + JSON.stringify(err)
    });
});

可用性

iOS系统,Android系统

可提供的1.0.0及更高版本

saveImage

保存快照 saveImage(callback(ret, err))

callback(ret, err)

ret:

  • 类型:JSON 对象
  • 内部字段:
{
    status: true,   //布尔型;true||false
}

err:

  • 类型:JSON 对象
  • 内部字段:
{
    msg : ''
}

示例代码

var demo = api.require('daniuPlayer');
demo.saveImage(function(ret, err) {
    api.toast({
        msg : " saveImage " + JSON.stringify(ret) + " " + JSON.stringify(err)
    });
});

可用性

iOS系统,Android系统

可提供的1.0.0及更高版本

startRecorder

开始录像 startRecorder({params}, callback(ret, err))

params

fileMaxSize:

  • 类型:数字型
  • 描述:(可选项)设置每个录像文件最大 size, 以兆(M)为单位,范围(5M~500M);
  • 默认值:200

callback(ret, err)

ret:

  • 类型:JSON 对象
  • 内部字段:
{
    status: true,   //布尔型;true||false
}

err:

  • 类型:JSON 对象
  • 内部字段:
{
    msg : ''
}

示例代码

var demo = api.require('daniuPlayer');
demo.startRecorder();

可用性

iOS系统,Android系统

可提供的1.0.0及更高版本

stopRecorder

停止录像 stopRecorder(callback(ret, err))

callback(ret, err)

ret:

  • 类型:JSON 对象
  • 内部字段:
{
    status: true,   //布尔型;true||false
}

err:

  • 类型:JSON 对象
  • 内部字段:
{
    msg : ''
}

示例代码

var demo = api.require('daniuPlayer');
demo.stopRecorder();

可用性

iOS系统,Android系统

可提供的1.0.0及更高版本

原创声明,本文系作者授权云+社区发表,未经许可,不得转载。

如有侵权,请联系 yunjia_community@tencent.com 删除。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • 移动直播连麦解决方案

          最开始观看直播是主播在那边又唱又跳,而你想与女神互动,只能简单的刷刷弹幕送送礼物。直到有了连麦,你才能用音视频的方式和主播互动,让女神看到你的画面,...

    腾讯视频云-Zachary
  • APNs推送

    即时通讯中需要对离线消息进行接收,此时就需要离线推送即当应用没有退出登录的情况下,被系统或者用户杀掉进程仍然能收到IMSDK消息提醒。云通讯iOS客户端采用的是...

    腾讯视频云-Zachary
  • 真正的敏捷工作流 —— GitHub flow

    7991 年,随着极限编程(Extreme programming)方法论的提出,持续集成(Continuous integration)也随之成为一项标准化的...

    ThoughtWorks
  • Flutter 实现原理及在马蜂窝的跨平台开发实践

    在马蜂窝旅游 App 很多业务场景里,我们尝试过一些主流的跨平台开发解决方案, 比如 WebView 和 React Native,来提升开发效率和用户体验。但...

    马蜂窝技术
  • Flutter 中的下拉刷新和上拉加载

    在Flutter的官方SDK中给我们提供了下拉刷新的组件RefreshIndicator,但是没有提供上拉分页加载更多的组件。不过不用担心,在Flutter的L...

    拉维
  • Flutter 环境及配置

    Flutter是谷歌的移动UI框架,可以快速在iOS和Android上构建高质量的原生用户界面。 Flutter可以与现有的代码一起工作。

    林小帅
  • 前端基础知识概述 -- 移动端开发的屏幕、图像、字体与布局的兼容适配

    前端的一大工作内容就是去兼容页面在不同内核的浏览器,不同的设备,不同的分辨率下的行为,使页面的能正常工作在各种各样的宿主环境当中。

    Sb_Coco
  • 9.3 VR扫描:英迈与微软达成HoloLens 2全球经销协议;高通研究所打造VR空间Suncave

    近日,全球最大技术分销商英迈宣布已成为微软HoloLens 2首批全球经销商之一,并在今年的英迈物联网峰会上对该AR头显进行演示。据悉,英迈将分阶段营销Holo...

    VRPinea
  • Mac怎么使用隔空投送

    隔空投送,是什么?利用“隔空投送”,您可以通过无线方式将文稿、照片、视频、网站、地图位置等发送到附近的 iPhone、iPad、iPod touch 或 Mac...

    MAC先森
  • JavaScript中Date对象的那些事儿

    任何事情都离不开时间,太阳每天升起的时间,每天你上班的时间,中午吃饭时间等等。在编程生涯中,无时无刻都有一个时间来引导,如数据创建时间(createTime),...

    Javanx

扫码关注云+社区

领取腾讯云代金券