day16:腾讯云直播
一. 原理:
主播:推流(推流地址)
观众:拉流(播放地址)
二.登陆官网
https://cloud.tencent.com/
三.查看官方文档
1.打开文档
2.SDK集成 选择第一种即可
3.主播推流
4.观众拉流
四.测试:
1.打开控制台
2.云直播产品
3.域名管理
推流域名
4.流管理:直播推流之后就有在线流,显示直播中
五.主播已经把流推上去了,接下来就是拉流,拉流地址点击上面的测试按钮显示拉流地址
六.代码:
1.推流:
public class MainActivity extends AppCompatActivity implements View.OnClickListener {
private Button bt_push;
private Button bt_close;
private TXCloudVideoView pusher_tx_cloud_view;
TXLivePusher mLivePusher;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
initView();
TXLivePushConfig mLivePushConfig = new TXLivePushConfig();
mLivePusher = new TXLivePusher(this);//推流对象
// 一般情况下不需要修改 config 的默认配置
mLivePusher.setConfig(mLivePushConfig);
mLivePusher.startCameraPreview(pusher_tx_cloud_view);//将流预览到videoview
}
private void initView() {
bt_push = (Button) findViewById(R.id.bt_push);
bt_close = (Button) findViewById(R.id.bt_close);
pusher_tx_cloud_view = (TXCloudVideoView) findViewById(R.id.pusher_tx_cloud_view);
bt_push.setOnClickListener(this);
bt_close.setOnClickListener(this);
}
@Override
public void onClick(View v) {
switch (v.getId()) {
case R.id.bt_push:
String rtmpURL = "rtmp://56674.livepush.myqcloud.com/live/demo?txSecret=a53915efced8fc160bab949e1210f7a9&txTime=5D3B237F"; //此处填写您的 rtmp 推流地址
int ret = mLivePusher.startPusher(rtmpURL.trim());
if (ret == -5) {
Toast.makeText(this, "License 校验失败", Toast.LENGTH_SHORT).show();
}
break;
case R.id.bt_close:
mLivePusher.stopPusher();
mLivePusher.stopCameraPreview(true); //如果已经启动了摄像头预览,请在结束推流时将其关闭。
break;
}
}
}
2.拉流
public class Main2Activity extends AppCompatActivity implements View.OnClickListener {
private Button bt_start;
private TXCloudVideoView video_view;
TXLivePlayer mLivePlayer;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main2);
initView();
}
private void initView() {
bt_start = (Button) findViewById(R.id.bt_start);
video_view = (TXCloudVideoView) findViewById(R.id.video_view);
bt_start.setOnClickListener(this);
//创建 player 对象
mLivePlayer = new TXLivePlayer(this);
//关键 player 对象与界面 view
mLivePlayer.setPlayerView(video_view);
}
@Override
public void onClick(View v) {
switch (v.getId()) {
case R.id.bt_start:
String flvUrl = "http://play2.liqian.ltd/live/demostream.flv";
mLivePlayer.startPlay(flvUrl, TXLivePlayer.PLAY_TYPE_LIVE_FLV); //推荐 FLV
break;
}
}
//销毁
@Override
public void onDestroy() {
super.onDestroy();
mLivePlayer.stopPlay(true); // true 代表清除最后一帧画面
video_view.onDestroy();
}
}
练习手册:
题目一:
(1)创建主播推流客户端,动态获取权限
(2)创建观众拉流客户端,动态获取权限
(3)使用友盟进行多渠道打包(看老师的博客):打包过程中要签名和代码混淆
(4)将打包好的一方发送给其他人,进行直播
题目二:
使用recyclerview显示所有的好友,点击item跳转页面实现聊天(多布局)
(1)输入消息点击发送按钮能够发送消息
(2)点击照相机按钮能够拍照存储到SD卡中送给好友并展现在recyclerview中
(3)点击摄像机按钮能够录像并发送给好友并展现在recyclerview中
(4)点击网址能够发送网址给好友并展现在recyclerview中
(5)点击图库能够打开图库选择一张照片发送给好友并展现在recyclerview中
(6)点击视频聊天能够和该好友进行视频聊天
其他功能:
(1)点击消息中的网址能够打开浏览器
(2)长按网址能够将网址分享给好友
(3)长按消息中的视频能够使用友盟分享给QQ好友
(4)长按消息中的图片能够使用友盟将图片分享给QQ好友