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