[iOS]大牛直播SDK基于unity3d平臺的rtmp/rtsp直播播放端SDK接口說明

2.1?demo說明

  • SmartU3diOSPlayer: 大牛直播SDK Unity3D iOS RTMP/RTSP直播播放端工程。

2.2 功能說明

標準接口:

  • 音頻:AAC/PCMA/PCMU/SPEEX(RTMP);
  • 視頻:H.264/H.265(RTSP);
  • 播放協議:RTMP/RTSP;
  • 支持RTSP TCP/UDP模式切換;
  • 支持RTSP timeout設置;
  • 支持RTSP TCP/UDP模式自動切換;
  • 支持純音頻、純視頻、音視頻播放;
  • 支持秒開模式;
  • 音視頻多種render機制;
  • 支持buffer設置;
  • 真正靠譜的超低延遲;
  • 支持多實例播放;
  • 支持播放url快速切換;
  • 斷網自動重連,支持視頻追趕;
  • 支持視頻video實時旋轉、水平反轉、垂直反轉。

增值接口:

  • 同時支持rtsp、rtmp播放;
  • 播放過程中,實時靜音、取消靜音;
  • 播放端回調YUV,供unity3d調用完成繪制;
  • 實時快照;
  • 實時錄像。

2.3 集成說明

拷貝以下文件,到Assets–>Plugins–>iOS目錄:

相關頭文件和調用說明,參見:SmartPlayeriOSMono.cs

Unity3D工程下,File–>Build Settings,Platform選擇iOS,然后點擊build,設置目錄,生成xcode工程:

生成后的xcode工程,添加以下依賴庫:

  • 相關庫:libSmartPlayerSDK.a
  • 引入以下依賴framework
    • libz.tbd
    • libbz2.tbd
    • libiconv.tbd
    • libstdc++.tbd
    • libc++.tbd
    • Accelerate.framework
    • AssetsLibrary.framework
    • AudioToolBox.framework
    • AVFoundation.framework
    • CoreMedia.framework
    • Foundation.framework
    • GLKit.framework
    • OpenGLES.framework
    • UIKit.framework
    • VideoToolBox.framework
  • 如需集成到自己系統測試,請用大牛直播的app name:

Info.plist–>右鍵Open As–>Source Code

添加或者編輯

<key>CFBundleName</key>

<string>SmartiOSPlayer</string>

  • 快照添加到“照片”權限:

Info.plist–>右鍵Open As–>Source Code

添加

<key>NSPhotoLibraryUsageDescription</key>
<string>1</string>

  • 導出后的xcode工程,如編譯不過,參考以下設置: Library Search Paths:$(SRCROOT)/Libraries

2.4?調用時序(V2)

  1. 【最先調用】NT_U3D_Init:player初始化,目前預留;
  2. 【獲得player句柄】NT_U3D_Open,設置上下文信息,返回player句柄;
  3. 【設置GameObject】NT_U3D_Set_Game_Object,注冊Game Object,用于消息傳遞;
  4. 【設置硬解碼】NT_U3D_SetVideoDecoderMode,設置是否用硬解碼播放,如硬解碼不支持,自動適配到軟解碼;
  5. 【緩沖設置】NT_U3D_SetBuffer,設置播放端緩存數據buffer,以毫秒(ms)為單位,如超低延遲模式下,不需buffer數據,設置為0;
  6. 【RTSP TCP/UDP設置】NT_U3D_SetRTSPTcpMode,設置TCP/UDP播放模式,注意:此接口僅用于RTSP;
  7. 【實時靜音-可實時調用】NT_U3D_SetMute,設置播放過程中,實時靜音/取消靜音;
  8. 【快速啟動】NT_U3D_SetFastStartup,Set fast startup(快速啟動),設置快速啟動后,如果CDN緩存GOP,daniulive player可快速出幀;
  9. 【低延遲模式】NT_U3D_SetPlayerLowLatencyMode,針對類似于直播娃娃機等期待超低延遲的使用場景,超低延遲播放模式下,延遲甚至可達到200~400ms;
  10. 【視頻顯示角度設置-可實時調用】NT_U3D_SetRotation,針對類似于安防攝像頭或其他設備出來的圖像倒置現象,支持視頻播放view順時針旋轉, 當前支持 0度,90度, 180度, 270度 旋轉,注意除了0度之外, 其他角度都會額外消耗性能;
  11. 【下載速度回調設置】NT_U3D_SetReportDownloadSpeed,設置下載速度上報, 默認不上報下載速度;
  12. 【快照設置】NT_U3D_SetSaveImageFlag(),設置是否需要在播放或錄像過程中快照;
  13. 【快照-錄像或播放后,可隨時調用】NT_U3D_SaveCurImage,播放過程中,根據設置路徑和文件名,實時快照;
  14. 【快速切換url-可實時調用】NT_U3D_SwitchPlaybackUrl,快速切換播放url,快速切換時,只換播放source部分,適用于不同數據流之間,快速切換(如娃娃機雙攝像頭切換或高低分辨率流切換);
  15. 【錄像設置】NT_U3D_CreateFileDirectory,創建文件路徑,注意:iOS只提供接口,未提供具體實現;
  16. 【錄像設置】NT_U3D_SetRecorderDirectory,設置文件路徑;
  17. 【錄像設置】NT_U3D_SetRecorderFileMaxSize,設置每個錄像文件最大size,以兆(M)為單位,范圍(5M~500M);
  18. 【設置播放或錄像URL】NT_U3D_SetUrl,設置播放/錄像url;
  19. 【播放】NT_U3D_StartPlay,開始播放;
  20. 【播放】NT_U3D_GetVideoFrame,獲取底層回調的YUV數據;
  21. 【播放】NT_U3D_StopPlay,停止播放;
  22. 【錄像】NT_U3D_StartRecorder,開始錄像;
  23. 【錄像】NT_U3D_StopRecorder,停止錄像;
  24. 【關閉】NT_U3D_Close, 關閉播放器實例;
  25. 【最后調用】NT_U3D_UnInit,UnInit Player,最后調用。

2.5?Event回調

///?<summary>

///?android 傳遞過來 code

///?</summary>

///?<param name=”code”></param>

public?void?onNTSmartEvent(string?param)

{

if?(!param.Contains(“,”))

{

Debug.Log(“[onNTSmartEvent] android傳遞參數錯誤”);

return;

}

string[] strs = param.Split(‘,’);

string?player_handle =strs[0];

string?code = strs[1];

string?param1 = strs[2];

string?param2 = strs[3];

string?param3 = strs[4];

string?param4 = strs[5];

Debug.Log(“[onNTSmartEvent] code: 0x”?+ Convert.ToString(Convert.ToInt32(code), 16));

switch?(Convert.ToInt32(code))

{

case?EVENTID.EVENT_DANIULIVE_ERC_PLAYER_STARTED:

Debug.Log(“開始。。”);

break;

case?EVENTID.EVENT_DANIULIVE_ERC_PLAYER_CONNECTING:

Debug.Log(“連接中。。”);

break;

case?EVENTID.EVENT_DANIULIVE_ERC_PLAYER_CONNECTION_FAILED:

Debug.Log(“連接失敗。。”);

break;

case?EVENTID.EVENT_DANIULIVE_ERC_PLAYER_CONNECTED:

Debug.Log(“連接成功。。”);

break;

case?EVENTID.EVENT_DANIULIVE_ERC_PLAYER_DISCONNECTED:

Debug.Log(“連接斷開。。”);

break;

case?EVENTID.EVENT_DANIULIVE_ERC_PLAYER_STOP:

Debug.Log(“停止播放。。”);

break;

case?EVENTID.EVENT_DANIULIVE_ERC_PLAYER_RESOLUTION_INFO:

Debug.Log(“分辨率信息: width: ”?+ Convert.ToInt32(param1) + “, height: ”?+ Convert.ToInt32(param2));

break;

case?EVENTID.EVENT_DANIULIVE_ERC_PLAYER_NO_MEDIADATA_RECEIVED:

Debug.Log(“收不到媒體數據,可能是url錯誤。。”);

break;

case?EVENTID.EVENT_DANIULIVE_ERC_PLAYER_SWITCH_URL:

Debug.Log(“切換播放URL。。”);

break;

 

case?EVENTID.EVENT_DANIULIVE_ERC_PLAYER_CAPTURE_IMAGE:

Debug.Log(“快照: ”?+ param1 + ” 路徑:”?+ param3);

 

if?(Convert.ToInt32(param1) == 0)

{

Debug.Log(“截取快照成功。.”);

}

else

{

Debug.Log(“截取快照失敗。.”);

}

break;

case?EVENTID.EVENT_DANIULIVE_ERC_PLAYER_RECORDER_START_NEW_FILE:

Debug.Log(“[record]開始一個新的錄像文件 : ”?+ param3);

break;

case?EVENTID.EVENT_DANIULIVE_ERC_PLAYER_ONE_RECORDER_FILE_FINISHED:

Debug.Log(“[record]已生成一個錄像文件 : ”?+ param3);

break;

case?EVENTID.EVENT_DANIULIVE_ERC_PLAYER_START_BUFFERING:

Debug.Log(“Start_Buffering”);

break;

case?EVENTID.EVENT_DANIULIVE_ERC_PLAYER_BUFFERING:

Debug.Log(“Buffering: ”?+ Convert.ToInt32(param1));

break;

case?EVENTID.EVENT_DANIULIVE_ERC_PLAYER_STOP_BUFFERING:

Debug.Log(“Stop_Buffering”);

break;

case?EVENTID.EVENT_DANIULIVE_ERC_PLAYER_DOWNLOAD_SPEED:

Debug.Log(“download_speed:”?+ param1 + “Byte/s”?+ “, ”

+ (Convert.ToInt32(param1) * 8 / 1000) + “kbps”?+ “, ”?+ (Convert.ToInt32(param1) / 1024)

+ “KB/s”);

break;

}

}

更多資料,可以訪問?https://github.com/daniulive/SmarterStreaming?or?http://www.nokunlock.com/

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