rtmp/rtsp/hls公網測試地址

相信大家在調試播放器的時候,都有這樣的困惑,很難找到合適的公有測試源,以下是大牛直播整理的真正可用的直播地址源。

其中,rtmp和rtsp的url,用https://github.com/daniulive/SmarterStreaming提供的播放器驗證通過。

hls的地址,用vlc驗證通過。

1. RTMP協議直播源

香港衛視:rtmp://live.hkstv.hk.lxdns.com/live/hks

2. RTSP協議直播源

大熊兔(VOD):rtsp://184.72.239.149/vod/mp4://BigBuckBunny_175k.mov

國外電視臺:rtsp://rtsp-v3-spbtv.msk.spbtv.com/spbtv_v3_1/214_110.sdp

3. HTTP協議直播源

香港衛視:http://live.hkstv.hk.lxdns.com/live/hks/playlist.m3u8

大牛直播SDK功能支持列表

windows屏幕截取/攝像頭推送錄像

  1. 視頻源相關:
  • ?[屏幕/攝像頭]支持幀率、關鍵幀間隔、碼率、編碼profile、編碼速度等設置;
  • ?[屏幕]支持屏幕裁剪,根據幀率和推送分辨率,自動推薦碼流;
  • ?[攝像頭]支持攝像頭選擇、分辨率設置、幀率設置;
  • ?[擴展數據]支持外部H.264接口輸入;
  1. 音頻源相關
  • ?[音頻]采集麥克風;
  • ?[音頻]采集揚聲器;
  • ?[擴展數據]AAC, Speex WB, PCMA, PCMU數據接口輸入;
  1. 攝像頭和屏幕合成
  • ?[攝像頭和屏幕實時切換]支持推送過程中,攝像頭和屏幕互相切換,單畫面顯示攝像頭或屏幕;
  • ?[攝像頭疊加到屏幕] 支持攝像頭按照設置坐標,疊加到屏幕指定位置,并支持實時關閉疊加層;
  • ?[屏幕疊加到攝像頭] 支持屏幕按照設定坐標,疊加到攝像頭指定位置,并支持實時關閉疊加層;
  1. 水印和透明度遮擋
  • ?[實時水印]支持動態水印設置,完美支持文字水印、實時時間水印和圖片水印
  • ?[透明度]可以設置透明度處理(設置遮蓋);
  1. 音頻合成
  • ?[音頻]支持揚聲器和麥克風音頻混音輸出(同時選擇“采集揚聲器”和“采集麥克風”);
  1. 音頻處理
  • ?[音頻]支持音頻“端點檢測(VAD)”,自適應碼流,音頻碼流更節省;
  • ?[音頻]支持回音消除功能(一對一功能:可通過在兩臺windows機器同時開啟daniulive的推送和播放端demo,相互推送播放測試);
  • ?[音頻]支持噪音抑制功能;
  • ?[音頻]支持自動增益控制;
  1. 音視頻推送類型選擇
  • ?[視頻]支持推送H.264;
  • ?[音頻]支持推送AAC;
  • ?[音頻]支持推送Speex;
  • ?[音頻]支持推送PCMA/PCMU;
  1. 音視頻類型、靜音、快照、錄像等
  • ?[音視頻]支持純音頻、純視頻、音視頻推送;
  • ?[音頻]推送過程中實時靜音/取消靜音;
  • ?[對接服務器]完美支持自建服務器或CDN;
  • ?[錄像]錄像和推送完全分離,完美支持“邊推送邊錄像”、“先推送、后錄像”、“先錄像,后推送;
  • ?[錄像]支持設置錄像文件前綴、錄像文件大小,錄像文件增加日期、時間;
  • ?[快照]支持推送或錄像過程中,隨時快照

Windows導播平臺或多路合成、混音推流/錄像

對應“SmartMixStreamDemo.exe”

  • ?支持“windows屏幕截取/攝像頭推送錄像”模塊所有功能;
  • ?支持拉取rtmp流;
  • ?支持拉取rtsp流;
  • ?支持本地采集到屏幕或攝像頭數據,和遠程拉取得rtmp或rtsp流做合成、混音輸出;
  • ?支持導播過程中,隨時切斷某一路音視頻或音頻;
  • ?支持rtsp數據轉rtmp推送出去;
  • ?音頻混音同時選擇“采集麥克風”+“采集揚聲器”。

windows/iOS拉流轉發模塊

對應“SmartStreamRelayDemo.exe”

  • ?[拉流]支持拉取rtsp流;
  • ?[拉流]支持拉取rtmp流;
  • ?[預覽]支持拉取到的rtsp/rtmp隨時本地預覽、關閉預覽;
  • ?[拉流音頻調節]支持拉取的rtsp/rtmp流靜音;
  • ?[url切換]支持轉發過程中,拉取的rtsp/rtmp或本地flv文件實時內容切換
  • ?[轉發]超低延遲轉發拉取的rtsp/rtmp流到rtmp server。

android推流/iOS推流

  • ?多分辨率選擇;
  • ?支持橫豎屏推送;
  • ?音視頻推送、純音頻推送、純視頻推送;
  • ?支持邊采集、邊錄像
  • ?支持rtmp推送 live|record模式設置;
  • ?真正靠譜的錄像、推流分離模式,支持推流過程中隨時開啟錄像,錄像過程中,隨時推流;
  • ?支持本地錄像文件回放、處理;
  • ?采集過程中,前后攝像頭切換;
  • ?提供編碼前(YUV/RGB)、編碼后音視頻(H.264/AAC)接口對接,方便AR/VR設備調用。
  • ?android/iOS自帶美顏功能;
  • ?android完美支持文字水印、實時時間水印和圖片水印
  • ?支持推送端實時靜音/取消靜音
  • ?支持軟硬編碼自適應;
  • ?android支持后臺service推送攝像頭或屏幕(推送屏幕需要5.0+版本);
  • ?iOS支持后臺推送屏幕(基于ReplayKit,需要iOS 10.0+版本);
  • ?android支持實時傳遞遠端PCM數據;
  • ?支持gop間隔、幀率、bierate、android編碼profile和編碼速度設置;
  • ?支持推送端鏡像設置;
  • ?[音頻]android支持噪音抑制功能;
  • ?[音頻]android支持自動增益控制;
  • ?[音頻]android支持Speex推送;
  • ?[音頻]android支持Speex編碼質量設置;
  • ?[快照]支持推送或錄像過程中,隨時快照;
  • ?iOS支持裁剪模式設置;
  • ?完美支持各個廠家CDN。

windows播放器/android播放器/iOS播放器

  • ?超低延遲的rtmp播放器;
  • ?超低延遲的rtsp播放器;
  • ?完美支持多實例播放(同時播放多路stream,可同時支持rtmp、rtsp stream播放);
  • ?支持RTSP TCP/UDP模式切換;
  • ?支持播放端,buffer設置;
  • ?支持秒開模式;
  • ?windows雙擊畫面進入全屏模式;
  • ?audio支持aac/speex/g.711;
  • ?windows/iOS播放端sdk支持回調編碼過的音視頻數據(Video:H.264/YUV Audio:aac/speex/pcma/pcmu)到上層;
  • ?android播放端sdk支持回調編碼過的音視頻數據(Video:YUV/RGB Audio:pcma/pcmu)到上層;
  • ?支持自定義播放布局;
  • ?音視頻多種render機制;
  • ?支持播放過程中,’實時靜音/取消靜音’;
  • ?支持播放段視頻view實時旋轉(0° 90° 180° 270°);
  • ?支持播放url快速切換,同等配置的流,切換url依舊可以錄制到同一個文件
  • ?android/iOS支持軟硬解碼,業內真正靠譜的超低延遲、低資源占用播放rtsp/rtmp 1080p+;
  • ?[快照]支持播放/錄像過程中,隨時快照
  • ?[windows點播播放器]支持本地flv文件播放(支持獲取flv文件的duration(時長);支持顯示當前播放位置;支持開始播放或播放過程中seek(跳轉播放位置),也許是行業內seek最快的flv點播播放器。)
  • ?支持針對類似于娃娃機直播方案的超低延遲模式設置(公網200~400ms)。

大牛直播SDK集成和調用說明

大牛直播SDK集成和調用說明

大牛直播demo使用說明

如何實現簡單粗暴靠譜的直播抓娃娃方案

市面上的娃娃機方案五花八門,daniulive認為最簡單靠譜粗暴性價比的方案如下:

RTMP攝像機–>CDN–>daniulive player(專門針對直播娃娃機開通了“超低延遲”模式,公網實際延遲在200~400毫秒).

娃娃機抓取過程錄制方案:

行業內首屈一指的錄制方案,利用大牛直播播放端SDK,支持兩個攝像頭切換過程中(SmartPlayerSwitchUrl)錄制到同一個MP4文件,便于用戶分享抓取過程或進行申訴。

娃娃機視頻管理方案:

利用大牛直播的Windows播放器,同時多窗口播放rtmp攝像機數據,采用輪詢播放的方式,有設備發生重連或斷線之類,實時統計或者告警,保證前端rtmp攝像機的正常運轉。

相關播放器下載:

Windows平臺下載

Android平臺下載

iOS平臺下載

比快更快,效果輕松PK市面上“全球第一、國際領先”的各類技術方案。

大牛直播精英群:?294891451?大牛直播技術交流群:?499687479

最近接到最大的質疑是:為什么只有大牛直播推薦這種rtmp攝像頭方案?

回答:我們不是做云服務的,通俗點說,我們不是靠帶寬盈利的,我們期望客戶采用更穩定靠譜的技術方案,服務于更好的商業模式。

可能的其他方案:

PC機一臺或工業主板(android或linux),每個連接兩個攝像頭。

a) 操作娃娃機的用戶,走私有協議,來實現所謂低延遲抓取;

b) 其他觀看者,數據傳到特定服務器,走標準協議,延遲1-3秒。

為什么我們不采用這個方案:

  1. 碼率:以720*1280分辨率,20幀碼流為例,如果以android板件或windows系統編碼,再優化的算法也要占用1.2M碼流;如果走rtmp攝像頭,因為攝像頭本身數據壓縮率比較高,碼流大概占用在0.3至0.4M,也就是說,同一臺攝像機,同等分辨率,碼流只有windows或android采集攝像頭編碼的1/4~1/3。
  2. 成本決策:以1M碼流一天的流量費用1塊錢為例,1000個并發,走PC或工業主板,帶寬成本1000元,rtmp攝像機成本250~300元。
  3. 實際上下行帶寬:問題來了,上行1.2M的碼流好傳,還是0.3M更容易抗網絡抖動?下行呢?答案不言而喻。
  4. 平臺穩定性:娃娃機屬于24小時不間斷推送的,一般rtmp攝像機,可靠運行60天,出問題的概率遠小于PC或工業板件;
  5. 隔離效應:

a) 攝像機單獨部署,網線直接接交換機,每個模塊獨立,相互干擾的可能性為0;

b) PC或工控機連攝像頭,普通攝像頭(非工業級攝像頭)連續運行60天面臨功耗和穩定性問題;

c) PC或工控機,托兩路,上行帶寬2.4M,是不是能一直得到保障?如廠商考慮成本,順帶娃娃機控制模塊也跑在這個板件,相互影響的概率是不是增大了?

質疑1:別扯了,我可以用480*640分辨率啊,反正也能滿足娃娃機抓取要求,0.6M就夠了

回答:是的,兩路1.2M,如果rtmp,每一路大概0.13至0.2M,兩路0.3至0.4M,如果沒有用戶抓娃娃,場景不發生變化時候,你關注下哪怕是720*1280分辨率下,rtmp攝像頭實際占用碼流,小到嚇人。

質疑2:說了這么多,你們只能用rtmp攝像頭嗎?

回答:我們有提供android工業主板推兩路rtmp數據的方案,問題在于,這個帶寬成本和其他風險,你們愿意買單嗎?

附錄:如何簡單粗暴的測試Windows推送端和Windows播放器

附錄2:大牛直播Android工業板推兩路效果

啥也不說,直接看視頻演示

參考資料:https://github.com/daniulive/SmarterStreaming

apicloud如何對接大牛直播SDK

隨著apicloud的普及,越來越多的用戶苦于apicloud下沒有一款真正靠譜低延遲的rtmp/rtsp直播播放器苦惱。

鑒于此,大牛直播SDK攜手apicloud資深版主,推出apicloud對接方案:

apicloud官方鏈接:https://www.apicloud.com/mod_detail/49069

apicloud對接版本說明:https://docs.apicloud.com/Client-API/Open-SDK/daniuPlayer

相關接口如下:

視沃科技-大牛直播SDK

專注、極致、智慧,國內外為數不多不依賴開源框架、跨平臺(windows/android/iOS)、公網推送(支持rtmp)-轉發-播放-錄像(支持rtmp/rtsp),比快更快,業界真正靠譜的超低延遲(真1秒,低延遲模式下200~400ms)。

適用于在線教育、無紙化推屏/會議、智慧教室、智能可視門禁對講、超低延遲娃娃機抓取播放方案、媒體移動直播、應急指揮調度(針對保險、城管、交警、消防、公安等職能管理部門的單兵應急執法系統)、可視化購物、遠程專家診斷、可視化巡檢、(如電信/電力線路/鐵路沿線/水利設施/油田/消防設施巡檢)、移動視頻安防監控,企業內訓、金融在線直播室、微信直播、監控對接、活動現場直播、游戲直播、秀場直播等場景。

daniuPlayer 模塊概述

本模塊封裝了大牛直播SDK,支持rtsp、rtmp播放(請開發者自行控制播放格式),支持秒開模式,支持快速切換視頻播放地址等。

License文件打包模塊包需注意事項請參考License打包模塊包注意事項

模塊接口

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

如何基于ReplayKit實現低延遲rtmp推屏

目錄

1背景說明

2 iOS錄制屏幕三要素

3集成說明

4 SDK對接

5 SDK運行

6如何在移動端測試

7 Demo下載

1背景說明

在ReplayKit live未出來之前,iOS推流屏幕信息,必須使用實際或虛擬的AirPlay模式,使用起來非常不便,自iOS 10開始,蘋果在 iOS 9 的 ReplayKit 保存錄屏視頻的基礎上,增加了視頻流實時直播功能,iOS 11新增的ReplayKit2,進一步提升了Replaykit的易用性,可以對整個手機實現屏幕錄制,不再局限于特定App。ReplayKit的出現,讓直播更穩定、對設備性能要求低、并可直接嵌入主 app。

2?iOS錄制屏幕三要素

宿主App:被錄屏的應用(對應SmartiOSScreenPublisherV2)

容器App:本身與錄屏直播沒有直接關系, 僅僅提供錄屏App擴展的發布渠道(對應DaniuliveExtSetupUI)

錄屏App擴展:實現錄屏和直播的主要功能(對應DaniuliveExt)

3集成說明

添加擴展:File->New Target:

填寫Product Name:

配置好Product Name(記得勾選”Include UI Extension”)。點”Finish”后可以看到,工程多了兩個目錄,target也多了兩個,對應直播擴展和UI擴展:

APP內需要處理的兩個擴展:

Broadcast UI Extension:?提供類似用戶登錄、URL設置等配置選項的界面,本實例,由于我們在DaniuliveExtSetupUI中新創建了MainInterface.storyboard,將info.plist中的:

NSExtensionPrincipalClass

BroadcastSetupViewController

換成

NSExtensionMainStoryboard

MainInterface

Broadcast Upload Extension:接收圖像和音頻數據, 進行直播,集成daniulive推送SDK的工作主要在Upload擴展的代碼中進行,info.plist中添加音頻權限:

NSMicrophoneUsageDescription

請允許使用麥克風

如需生成后臺可直接啟用的錄制程序,info.plist中NSExtensionPointIdentifier改為:

NSExtensionPointIdentifier

com.apple.broadcast-services-upload

如需APP內部debug,查看SampleHandler里面的log,請設置為

NSExtensionPointIdentifier

com.apple.broadcast-services

4 SDK對接

導入DaniuliveSDK,對應“DaniuliveExt\daniuliveSDK”下的include和libs。

添加依賴庫:

編寫UI擴展(對應DaniuliveExtSetupUI):

//Called when the user has finished interacting with the view controller and a broadcast stream can start

– (void)userDidFinishSetup?{

// Broadcast url that will be returned to the application

NSURL *broadcastURL = [NSURL URLWithString: _rtmpUrl.text];

// Service specific broadcast data example which will be supplied to the process extension during broadcast

NSString *endpointURL = _rtmpUrl.text;

NSDictionary *setupInfo = @{@”endpointURL”?: endpointURL};

// Set broadcast settings

RPBroadcastConfiguration *broadcastConfig = [[RPBroadcastConfiguration alloc] init];

// Tell ReplayKit that the extension is finished setting up and can begin broadcasting

[self.extensionContext completeRequestWithBroadcastURL:broadcastURL broadcastConfiguration:broadcastConfig setupInfo:setupInfo];

}

– (void)userDidCancelSetup?{

// Tell ReplayKit that the extension was

// cancelled by the user

NSError * err = [NSError errorWithDomain:@”com.daniulive.ios”

code:-1

userInfo:nil];

[self.extensionContext cancelRequestWithError:err];

}

SampleHandler.m調用SDK即可:

[if !supportLists]1.?[endif]初始化并推送:

[self InitPublisher];

[self StartPublisher];

[if !supportLists]2.?[endif]實時數據回調處理:

– (void)processSampleBuffer:(CMSampleBufferRef)sampleBuffer

withType:(RPSampleBufferType)sampleBufferType {

switch (sampleBufferType) {

case RPSampleBufferTypeVideo:

{

NSLog(@”RPSampleBufferTypeVideo”);

if(_smart_publisher_sdk)

{

[_smart_publisher_sdk SmartPublisherPostVideoSampleBuffer:sampleBuffer];

}

}

break;

case RPSampleBufferTypeAudioApp:

NSLog(@”RPSampleBufferTypeAudioApp”);

if (s_headPhoneIn || s_isMicEnable == Mic_Disable)

{

if (CMSampleBufferDataIsReady(sampleBuffer) != NO)

{

if(_smart_publisher_sdk)

{

NSInteger type = 2;

[_smart_publisher_sdk SmartPublisherPostAudioSampleBuffer:sampleBuffer inputType:type];

}

}

}

break;

case RPSampleBufferTypeAudioMic:

NSLog(@”RPSampleBufferTypeAudioMic”);

if(_smart_publisher_sdk)

{

NSInteger type = 1;

[_smart_publisher_sdk SmartPublisherPostAudioSampleBuffer:sampleBuffer inputType:type];

}

break;

default:

break;

}

}

[if !supportLists]3.?[endif]退出:

[self StopPublisher];

[self UnInitPublisher];

NOTE:集成時DaniuliveExt請使用daniulive demo里面的app-name測試,如需授權,請聯系大牛直播SDK工作人員。

5 SDK運行

1. 先運行SmartiOSScreenPublisherV2,在移動端生成宿主app;

2. 再運行DaniuliveExtSetupUI,加載到宿主app;

3. 最后運行DaniuliveExt,加載到宿主app。

6如何在移動端測試

前臺啟動,設置推送的url,點擊“開始推屏”:

后臺啟動(推屏rtmp url可在前臺推送url頁面設置):

 

7 Demo下載

測試Demo可以到Github或者QQ群共享下載

Github:https://github.com/daniulive/SmarterStreaming/

CSDN Demo下載鏈接:?https://download.csdn.net/download/renhui1112/10313775

QQ群:

大牛直播精英群: 294891451

大牛直播技術交流群: 499687479

污污直播app-污污直播破解版永久免费版