APICloud下播放RTSP/RTMP流

  • 2019 年 10 月 5 日
  • 筆記

隨著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及更高版本