最近发现好多之前学到东西基本都忘记了,然后想了下还是写博客吧,这样子方便之后复习加强记忆挺不错的。
前言:最近公司要开发一个简单的视频播放APP,要实现的功能
①直播(主播端是抓屏)
②发弹幕
首先屡清楚开发直播的步骤
第一步:服务器,不管是主播端还是播放端都是依赖服务器的,主播端推送流给服务器,客户端接受流并播放
第二步:主播端,实现抓屏技术,然后推送流到服务器
第三步:客户端,接收服务器端的流推送并播放
第四步:弹幕实现
第五步:弹幕服务器,是现在客户端发弹幕,主播端可以看到
第六步:客户端连接弹幕服务器
OK,思路屡清楚了就甩袖子干吧!
Paste_Image.png配置完成后需要点击nginx.exe启动,之后屏幕会一闪,想看是否已经启动可以去看下资源管理器里面是否有nginx.exe这个进程名字(一般有俩)如果存在就代表服务器启动成功
Paste_Image.png这样的话第一步就已经结束了...
第二步:主播端用的是一个librestreaming的jar包,通过抓屏录制屏幕,把流通过librestreaming推送给ngix服务器,代码的话我就不贴了,主要是在MainActivity里面配置rtmp连接,就是刚才第一步里面的那个连接,唯一不一样的就是我多开了一个前置摄像头运行在后台服务,这样子就更像主播端了。代码下载在末尾地方
第三步:客户端
这里选择很多比如vlcplayer播放器,网上也有开源的,但是我选的是一个第三方收费的,但是我只用的是他的demo演示所有不用收费。然后直接在他的demo里面开发了客户端集成了弹幕和一些效果。
主要类是在LivePlayerDemoActivity,因为是第三方的所有不用担心他的播放,直接拿到rtmp的地址就可以播放了,很简单
第四步:弹幕
这里选的是bilibili开源的烈焰弹幕,使用方式很简单
AndroidStudio里加入依赖 compile 'com.github.ctiao:DanmakuFlameMaster:0.5.3'
布局文件中加入
Paste_Image.png
这样就集成完了,代码中请参考已上传代码
第六步:客户端连接弹幕服务器
客户端这边的弹幕服务器分为接收和发送,发送会调用LivePlayerDemoActivity里面的sendMessageTomqtt方法,里面首先连接服务器参数需要一个url连接,用户名,密码,以及一个标识符,发送成功后mqtt服务器页面后产看到发送的消息数量。
接收时会有一个回调MqttCallback,在这里面拿到数据并展示。
这几步下来基本一个简单的直播客户端就完成了,技术的话基本都是一些别人开源的自己无非就是处理些逻辑把他们连接起来,真要是想做一个直播客户端这里面的水还是很深的,因为要处理的东西太多,这里只是一个思路和一个简单的演示。