在 MSDK-4.9 版本就已支持了直播的功能,只需提供 rtmp 地址就可以实现无人机直播。
客户端推流
MSDK-4.9 提供了 LiveStreamManager 来管理图传的推流:
LiveStreamManager.java
DJISDKManager.getInstance().getLiveStreamManager() 复制代码
LiveStreamManager 实现直播功能非常简单,只需要实现三个步骤:
- 设置 rtmp 抓流地址
- 启动推流
- 关闭推流
1、设置 rtmp 地址
Sets the URL address of the RTMP Server.
DJISDKManager.getInstance().getLiveStreamManager().setLiveUrl(liveShowUrl); 复制代码
2、启动直播
Starts the live streaming.The encoder will start to encoding the video frame if it is needed. The video will be streamed to the RTMP server if the server is available
int result = DJISDKManager.getInstance().getLiveStreamManager().startStream(); 复制代码
返回的 result
是一个 error code.
3、关闭直播
Stop the live streaming. The operation is asynchronous
DJISDKManager.getInstance().getLiveStreamManager().stopStream(); 复制代码
当然,LiveStreamManager 也提供了其他功能的设置,具体参数设置可以查看 MSDK-LiveStreamManager Doc
服务端抓流
其实,只要服务端支持 rtmp 协议的都是可以直接解析播放的,如果为了能直观的看到效果,可以使用 B 站的直播间:
将 rtmp 地址与直播码拼接成 liveShowUrl ,直接 set 给 LiveStreamManager,然后 startStream 开启直播:
String liveShowUrl = rtmp 地址+直播码 DJISDKManager.getInstance().getLiveStreamManager().setLiveUrl(liveShowUrl); DJISDKManager.getInstance().getLiveStreamManager().startStream(); 复制代码
等待一小段时间,就可以在直播间看到无人机传输过来的直播视频了。
我们也可以基于一些第三方的开源框架,搭建自己的抓流服务端.
Red5-Server
Red5 是一个用Java编写的开源Flash服务器,支持的功能有:
- Streaming Video (FLV, F4V, MP4, 3GP)
- Streaming Audio (MP3, F4A, M4A, AAC)
- Recording Client Streams (FLV and AVC+AAC in FLV container)
- Shared Objects
- Live Stream Publishing
- Remoting
- Protocols: RTMP, RTMPT, RTMPS, and RTMPE
下载
当前最新版本是 Release-1.1.1 版本,下载最新的 red5-server-1.1.1.zip 即可
安装
如果嫌弃上面安装过于繁琐的话,这里推荐个简易安装:
- JDK 环境必须安装
- 在 red5-server-1.1.1 文件夹下运行
./red5.sh start
命令,启动 red5 服务
运行
- 在浏览器中输入本地的 red5 服务地址: http://localhost:5080/
- 选择 launch a demo
- 选择 Publisher demo
Publisher 页面解释(从上而下):
- Monitor: View(预览页面)/Publish(推送)切换
- Log: 当前执行的日志
- Name: 直播码,和 B 站的直播码类似
- Stop: 停止直播
- Play/Pause: 播放/暂停直播
- Enable Aundio/Video : 勾选当前可用
- servers: 直播地址
- close/connect : 关闭/连接直播服务
- Location: rtmp 推流地址
server 端设置步骤:
1、填写自己的 Name ,设置直播码
2、点击 servers 的 connect 按钮开启服务,开启成功时,按钮会变成 close
3、点击 Play 开始抓流播放,播放成功时,按钮会变成 Pause
client 端设置步骤:
1、将 Location 的 rtmp 地址与 Name 直播码拼接成直播地址 rtmp://Red5 IP地址/oflaDemo/codelang
2、setLiveUrl
3、startStream