[Android]大牛直播SDK基于unity3d平台的rtmp/rtsp直播播放端SDK接口说明

1.1 demo说明

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

1.2 功能说明

标准接口:

  • 音频:AAC/G.711/speex;
  • 视频:264;
  • 播放协议:RTMP/RTSP;
  • 支持RTSP TCP/UDP模式切换;
  • 支持纯音频、纯视频、音视频播放;
  • 支持秒开模式;
  • 音视频多种render机制;
  • 支持buffer设置;
  • 真正靠谱的超低延迟;
  • 支持多实例播放;
  • 支持播放url快速切换;
  • 断网自动重连,支持视频追赶;
  • 支持视频video实时旋转。

增值接口:

  • 同时支持rtsp、rtmp播放;
  • 播放过程中,实时静音、取消静音;
  • 播放端回调YUV,供unity3d调用完成绘制;
  • 实时快照;
  • 实时录像。

1.3集成说明

  • Unity3D接口和调用demo,参见:SmartPlayerAndroidMono.cs
  • SmartU3dAndroidPlayer\Assets\Plugins\Android\libs下相关库到工程:
  • Smartavengine.jar加入到工程;
  • smartplayerunity3d.jar加入工程;
  • libs\arm64-v8a 和 SmartPlayer\libs\armeabi 下 libSmartPlayer.so。
  • 在SmartU3dAndroidPlayer\Assets\Plugins\Android\AndroidManifest.xml配置相关权限:

<uses-permission android:name=”android.permission.WRITE_EXTERNAL_STORAGE” > </uses-permission>

<uses-permission android:name=”android.permission.INTERNET” ></uses-permission>

<uses-permission android:name=”android.permission.MOUNT_UNMOUNT_FILESYSTEMS” />

<uses-permission android:name=”android.permission.MODIFY_AUDIO_SETTINGS” />

  • 如需集成到自己系统测试,请用大牛直播SDK的app name(不然集成提示license failed),正式授权版按照授权app name正常使用即可:
  • 如何改app-name:
  • Unity3D模式下:File–>Build Settings–>Android–>Player Settings,设置Product Name。

1.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. 【audio输出类型】NT_U3D_SetAudioOutputType(),如果use_audiotrack设置为0,将会自动选择输出设备,如果设置为1,使用audiotrack模式;
  6. 【缓冲设置】NT_U3D_SetBuffer,设置播放端缓存数据buffer,以毫秒(ms)为单位,如超低延迟模式下,不需buffer数据,设置为0;
  7. 【RTSP TCP/UDP设置】NT_U3D_SetRTSPTcpMode,设置TCP/UDP播放模式,注意:此接口仅用于RTSP;
  8. 【实时静音-可实时调用】NT_U3D_SetMute,设置播放过程中,实时静音/取消静音;
  9. 【快速启动】NT_U3D_SetFastStartup,Set fast startup(快速启动),设置快速启动后,如果CDN缓存GOP,daniulive player可快速出帧;
  10. 【低延迟模式】NT_U3D_SetPlayerLowLatencyMode,针对类似于直播娃娃机等期待超低延迟的使用场景,超低延迟播放模式下,延迟甚至可达到200~400ms;
  11. 【视频显示角度设置-可实时调用】NT_U3D_SetRotation,针对类似于安防摄像头或其他设备出来的图像倒置现象,支持视频播放view顺时针旋转, 当前支持 0度,90度, 180度, 270度 旋转,注意除了0度之外, 其他角度都会额外消耗性能;
  12. 【下载速度回调设置】NT_U3D_SetReportDownloadSpeed,设置下载速度上报, 默认不上报下载速度;
  13. 【快照设置】NT_U3D_SetSaveImageFlag(),设置是否需要在播放或录像过程中快照;
  14. 【快照-录像或播放后,可随时调用】NT_U3D_SaveCurImage,播放过程中,根据设置路径和文件名,实时快照;
  15. 【快速切换url-可实时调用】NT_U3D_SwitchPlaybackUrl,快速切换播放url,快速切换时,只换播放source部分,适用于不同数据流之间,快速切换(如娃娃机双摄像头切换或高低分辨率流切换);
  16. 【录像设置】NT_U3D_CreateFileDirectory,创建文件路径;
  17. 【录像设置】NT_U3D_SetRecorderDirectory,设置文件路径;
  18. 【录像设置】NT_U3D_SetRecorderFileMaxSize,设置每个录像文件最大size,以兆(M)为单位,范围(5M~500M);
  19. 【设置播放或录像URL】NT_U3D_SetUrl,设置播放/录像url;
  20. 【播放】NT_U3D_StartPlay,开始播放;
  21. 【播放】NT_U3D_GetVideoFrame,获取底层回调的YUV数据;
  22. 【播放】NT_U3D_StopPlay,停止播放;
  23. 【录像】NT_U3D_StartRecorder,开始录像;
  24. 【录像】NT_U3D_StopRecorder,停止录像;
  25. 【关闭】NT_U3D_Close, 关闭播放器实例;
  26. 【最后调用】NT_U3D_UnInit,UnInit Player,最后调用。

1.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;

}

}

经测试,Android、iOS端效果如下,播放端延迟低于1秒,也可能是unity3d平台下最快最稳定的rtmp播放器/rtsp播放器:

视频效果图:

更多资料,可以访问 https://github.com/daniulive/SmarterStreaming or http://www.daniulive.com/

大牛直播SDK-Windows RTMP推送端使用说明

由于大牛直播SDK Demo主要侧重于SDK接口展示,庞大的功能让好多使用者望而却步,以下是Windows推送端SDK简单的介绍:

大牛直播SDK推送端提供C++/C#两套接口,对外提供32/64位库。

对应Demo:

  •  Windows测试程序:SmartPublisherDemo.exe;
  •  Windows C++工程:WIN-PublisherSDK-CPP-Demo;
  •  Windows C#工程:WIN-PublisherSDK-CSharp-Demo;

使用说明:

视频采集设置:

问题[确认数据源]:采集桌面还是摄像头?如果桌面,全屏还是部分区域?

回答:

  1. 如果是摄像头:可以选择摄像头列表,然后分辨率、帧率。
  2. 如果是屏幕:默认帧率是5帧,可以根据实际场景调整,选取屏幕区域,可以实时拉取选择需要采集或录像区域;
  3. 如果是叠加模式:可选择摄像头叠加到屏幕,还是屏幕叠加到摄像头;
  4. 更高需求的用户,可以设置水印或应用层遮盖。

问题:如果是摄像头,采集到的摄像头角度不对怎么办?

回答:我们支持摄像头镜像和翻转设置,摄像头可通过SDK接口轻松实现水平/垂直翻转、镜像效果。

码率设置:

问题[设置码率]:自己设置码流还是用我们推荐值?

回答:

选择使用平均码率,关键帧间隔一般设置到屏幕或摄像头设置帧率的2~5倍(如帧率15,关键帧间隔可以设置到60),默认可以2倍,码率如果是专业用户,可以自行设定,如果是普通用户,可以点击“获取默认值”,拿到大牛直播SDK推荐的码率。

NOTE:点击“推送”或“录像”之前,一定设置码率,如不想手动设置,请点击“获取默认值”!!!

音频采集设置:

问答式:采集音频吗?如果采集,采集麦克风还是扬声器的,亦或混音?

回答:

  1. 如果想采集电脑输出的音频(比如音乐之类),可以选择“采集扬声器”;
  2. 如果想采集麦克风音频,可以选择“采集麦克风”,并选择相关设备;
  3. 如果两个都想采集,可以两个都选择,混音输出。

音频编码:

问题:是AAC还是SPEEX?

回答:我们默认是AAC编码模式,如果需要码率更低,可以选择SPEEX编码模式,码率更低。

音频处理:

问题:我想过滤背景噪音怎么办?

回答:选中“噪音抑制”。

问题:我想做一对一互动怎么办?

回答:选中“回音消除”。

问题:我推送或者录像过程中,随时静音怎么办?

回答:推送过程中,随时选择或取消选择“静音”功能。

推送:

问题:我想同时推送到多个url怎么办(比如一个内网服务器,一个外网服务器)?

回答:同时填写多个url,然后点推送即可。

截图:

问题:我想推送或者录像过程中,截取当前图像怎么办?

回答:那就设置好截图路径,推送或录像过程中,随时点击“截图”。

录像:

问题:我还想录像,怎么办?

回答:设置录像文件存放目录,文件前缀、单个文件大小,是否加日期、时间,随时录制即可。

实时预览:

问题:我还想看看视频特别是合成后的效果,怎么办?

回答:点击页面的“预览”按钮,就可以看到。

大牛直播SDK release note

视沃科技(大牛直播SDK)2018-10-18 release note:

1. 安卓转发SDK支持音频(PCMU/PCMA,Speex等)转AAC后再推流;

2. 安卓播放SDK支持音频(PCMU/PCMA,Speex等)转AAC后再录像接口;

3. 安卓播放SDK优化rtmp h264播放;

4. 安卓播放SDK支持rtmp扩展h265播放;

5. 安卓转发SDK优化rtsp转发;

6. 安卓播放SDK优化rtsp录像;

7. 安卓播放SDK优化rtsp h264播放;

8. 安卓转发SDK支持h265转发(rtsp/rtmp h265转rtmp h265推送);

9. 安卓播放SDK硬解码支持Surface直接绘制模式;

10. 安卓推送SDK优化音频编码, 降低音频码率.

视沃科技(大牛直播SDK)2018-10-16 release note:

1. Windows转发SDK支持h265转发(rtsp/rtmp h265转rtmp h265推送)

2. Windows播放SDK优化rtsp h264播放;

3. Windows播放SDK优化rtsp录像;

4. Windows转发SDK优化rtsp转发;

5. Windows推送SDK常规优化.

视沃科技(大牛直播SDK)2018-09-26 release note:

1. Windows播放SDK支持rtmp扩展h265播放;

2. Windows播放SDK优化rtmp h264播放

3. Windows推送SDK增加外部PCM音频数据对接接口;

4. iOS录像SDK支持音频(PCMU/PCMA,Speex等)转AAC后再录像接口;

5. iOS转发SDK支持音频(PCMU/PCMA,Speex等)转AAC后再推流.

视沃科技(大牛直播SDK)2018-09-13 release note:

1. 安卓播放SDK支持rtsp h265播放;

2.安卓播放SDK支持rtsp h265录像;

3. 安卓播放SDK增加rtsp超时时间设置接口;

4. 安卓播放SDK增加rtsp tcp-udp自动切换设置接口;

5. 安卓播放SDK上报rtsp 401事件;

6. 安卓推送SDK吐编码后的AAC数据;

7. 安卓推送SDK吐编码后的H264数据方便对接第三方平台.

视沃科技(大牛直播SDK)2018-09-12 release note:

1. Windows播放SDK支持音频(PCMU/PCMA,Speex等)转AAC后再录像接口;

2. Windows转发支持音频(PCMU/PCMA,Speex等)转AAC后再推流;

3. Windows推送SDK优化音频推送.

视沃科技(大牛直播SDK)2018-09-06 release note:

1.  iOS播放SDK增加rtsp超时时间设置接口;

2. iOS播放SDK增加rtsp tcp-udp自动切换设置接口;

3. iOS播放SDK上报rtsp 401事件;

4. iOS播放SDK支持rtsp h265播放;

5. iOS录像SDK支持rtsp h265录制;

6. iOS推送、播放SDK支持模拟器编译运行;

7. 更新Windows推送、播放、转发C#demo至官方最新版本;

8. 更新Windows Unity3d播放demo(Daniulive-Unity3D-Win-SmartPlayer-2018-09-04);

9. 更新Windows SDK集成说明文档(视沃科技-Windows-SDK集成说明2.8.pdf)。

视沃科技(大牛直播SDK)2018-08-29 release note:

1.Windows播放SDK增加rtsp超时时间设置接口;

2. Windows播放SDK增加rtsp tcp-udp自动切换设置接口;

3. Windows播放SDK上报rtsp 401事件;

4. 优化Windows rtsp播放;

5. 优化Windows推送.

视沃科技(大牛直播SDK)2018-08-03 release note:

1.Android支持内置轻量级RTSP服务SDK;

2. iOS支持内置轻量级RTSP服务SDK;

3. 发布最新版本移动端SDK调用说明.

视沃科技(大牛直播SDK)2018-07-30 release note:

1.Windows 录像SDK支持rtsp h265录制,也许是业内为数不多的支持RTSP H.265录制到MP4文件的录像SDK.

视沃科技(大牛直播SDK)2018-07-25 release note:

1.Windows 播放SDK支持rtsp h265播放.

2.优化Windows推送和播放.

视沃科技(大牛直播SDK)2018-07-19 release note:

1.Android/iOS推送SDK增加推送字符串和二进制数据接口.

2.Android/iOS播放SDK增加用户数据回调接口.

3.Android/iOS播放SDK增加SEI数据回调接口.

4.Android/iOS播放SDK增加水平反转、垂直反转接口.

视沃科技(大牛直播SDK)2018-06-25 release note:

1.Windows推送内置rtsp server,无需部署服务器,即可发布rtsp音视频流.

2.安卓推送SDK扩展H264/AAC接口,方便用户直接传sps/pps给sdk.

3.安卓推送SDK支持可变分辨率水印.

4.Windows/安卓/iOS播放SDK优化rtsp播放.

5.Windows推送demo增加rtsp相关操作.

6.同步C#工程至2018年6月1日release版本.

视沃科技(大牛直播SDK)2018-06-01 release note:

1.Windows推送SDK增加预览接口.

2.Windows推送demo增加预览功能,可以先预览后推送.

3.Windows播放SDK深度优化rtsp播放,比好更好!

视沃科技(大牛直播SDK)2018-05-30 release note:

大牛直播SDK官方支持Android/iOS Unity3d RTMP/RTSP直播SDK.

视沃科技(大牛直播SDK)2018-05-10 release note:

1.Windows推送SDK增加发送文本,二进制数据接口.

2.Windows播放SDK增加吐文本,二进制数据接口.

3.Windows播放SDK增加吐H264 Sei数据接口.

4.Windows播放SDK增加水平垂直反转接口.

5.优化Windows播放SDK,降低CPU.

6.优化Windows推送SDK.

视沃科技(大牛直播SDK)2018-04-28 release note:

1.[Android]增加转发demo(rtsp转rtmp推送,rtmp转rtmp推送).

2.[Android]播放SDK优化rtsp播放.

3.[Android]播放SDK增加吐h264,aac/pcmu/pcma/speex接口.

4.[Android]推送SDK增加新的推送H264,AAC/PCMU/PCMA/Speex接口.

5.[Android]优化安卓推送SDK.

视沃科技(大牛直播SDK)2018-04-24 release note:

1.Windows推送SDK增加摄像头水平镜像,垂直反转接口, 增加90度,180度,270度旋转接口.

2.Windows推送SDK支持窗口采集推送,支持动态切换窗口.

3.Windows推送SDK增加设置多个视频码率的接口.

4.Windows推送SDK增加在采集屏幕时停用Win7 Aero的接口.

5.Windows推送SDK优化摄像头采集.

6.优化Windows播放SDK.

视沃科技(大牛直播SDK)2018-04-20 release note

1.Windows推送SDK增加DXGI屏幕采集方式,大大提高win8及以上系统桌面采集速度;

2.Windows推送SDK增加CPU自适应动态调整机制,降低SDK对机器性能的依赖性;

3.Windows推送SDK整体优化;

4.Windows推送SDK和播放SDK静态连接运行时库,方便各个vs版本对接;

5.优化Windows RTSP播放,兼容性和播放体验更优异。

视沃科技(大牛直播SDK)2018-03-29 release note

1.IOS播放SDK增加录像接口;

2.IOS播放SDK增加吐H264/AAC/PCMU/PCMA/SPEEX接口;

3.IOS推送SDK增强推送H264接口;

4.IOS推送SDK增加推送AAC/PCMU/PCMA/SPEEX接口;

5.IOS推送SDK支持推屏;

6.IOS增加播放-转发-录像三合一Demo;

7.IOS增加基于ReplayKit录屏推送demo;

8.IOS推送和播放SDK增加V2接口。

视沃科技(大牛直播SDK)2018-03-05 release note

1.[windows播放端]支持播放过程中,rtsp/rtmp或本地flv文件实时切换;

2.[windows转发端]支持转发过程中,拉取的rtsp/rtmp或本地flv文件实时内容切换;

3.[Android推送|播放端]Android全面升级V2接口(Android studio工程),并优化后台推屏幕/摄像头Demo。

视沃科技(大牛直播SDK)2018-02-28 release note

1.[windows播放端]支持本地flv点播:

  • 支持获取flv文件的duration(时长);
  • 支持显示当前播放位置;
  • 支持开始播放或播放过程中seek(跳转播放位置),也许是行业内seek最快的flv点播播放器。
  1. [windows转发端]支持本地flv文件转发,亦可支持指定位置转发。

视沃科技(大牛直播SDK)2018-02-01新功能抢先体验版:

1.[android]提供V2接口,支持播放端录像。

2.[iOS]支持播放端录像;

3.[iOS]支持iOS端转发功能(拉取rtsp/rtmp流,转发到设定rtmp url);

比“最好”还好:

  1. 大牛直播SDK录像

a) 支持switchUrl接口;

b) 同等参数配置的两个url,可以录制到同一个mp4文件(彻底解决了娃娃机抓取等场景,因为频繁切换url,想申诉时,用户只能录屏,用新的SDK接口,同等摄像头参数配置,无论怎么切换url,自动录制到一个mp4文件)

c) 不同参数配置的两个url,自动识别,自动录制到不同mp4文件。

  1. iOS转发:

a) 大牛直播SDK转发功能,同样支持switchUrl接口,切换不同分辨率的url,一样正常转发;

b) 配合大牛直播播放SDK,转发数据切换,自动适配。

  1. 大牛直播SDK的播放、录像、转发功能完全分离:

a) 可以只播放,随时录像,随时转发;

b) 可以只录像,随时播放,随时转发;

c) 可以只转发,随时播放,随时录像。

视沃科技(大牛直播SDK)2017-12-22 release note

1.iOS播放SDK增加旋转接口.

/**

  • 设置顺时针旋转, 注意除了0度之外, 其他角度都会额外消耗性能
  • @param degress: 当前支持 0度,90度, 180度, 270度 旋转
  • @return {0} if successful */
  • (NSInteger)SmartPlayerSetRotation:(NSInteger)degress;

2.iOS播放推送SDK整体优化,点击本地下载

2017-11-20 release note

  1. 更新android studio demo工程,点击本地下载

视沃科技(大牛直播SDK)2017-11-16 release note

  1. [windows平台] 发布Windows C#多路流媒体转发模块SDK Demo,点击本地下载
  2. android Player增加buffer状态显示和实时带宽占用接口.
  3. iOS推送和播放端整体优化.

2017-11-10 release note:

  1. windows/android/iOS Player SDK增加”超低延迟”模式,适用于类似直播娃娃机等相关场景.
  2. iOS Player增加buffer状态显示和实时带宽占用接口.
  3. iOS Player增加回调YUV数据接口.
  4. android/iOS推送和播放器整体优化.

视沃科技(大牛直播SDK)2017-10-25 release note:

1.[Windows播放端]SDK增加下载速度上报接口.

2.[Windows播放端]SDK增加获取下载速度接口.

3.[Windows播放端]SDK增加buffer开始,停止,进度通知.

4.[Windows播放端]SDK增加吐PCM数据接口.

5.[Windows播放端]SDK增加和服务器链接状态上报接口.

6.[Windows播放端]SDK支持64位.

7.[Windows推送端]SDK支持64位.

8.[文档]更新ppt产品介绍.

视沃科技(大牛直播SDK)2017-09-25 release note:

1.[Windows播放端] sdk增加吐编码过的音视频数据接口.

2.[Windows推送端] sdk增加推送H264数据接口.

3.[Windows推送端] sdk增加推送AAC, Speex WB, PCMA, PCMU数据接口.

4.[Windows转发] 新增多路拉流转发demo.

…….