推流集成
- 权限申请示例,在推流前一定要在app内进行权限申请。
/**
* 判断录音权限
*
* @param context
* @return
*/
public static boolean isAudioRoot(Context context) {
if (Build.VERSION.SDK_INT >= 23) {
if (ContextCompat.checkSelfPermission(context, Manifest.permission.RECORD_AUDIO) != PackageManager.PERMISSION_GRANTED) {
ActivityCompat.requestPermissions((Activity) context, new String[]{Manifest.permission.RECORD_AUDIO},
1);
return false;
} else {
return true;
}
}
return true;
}
/**
* 判断拍照权限
* @param context
* @return
*/
public static boolean isCameraRoot(Context context) {
if (Build.VERSION.SDK_INT >= 23) {
if (ContextCompat.checkSelfPermission(context, Manifest.permission.CAMERA) != PackageManager.PERMISSION_GRANTED) {
ActivityCompat.requestPermissions((Activity) context, new String[]{Manifest.permission.CAMERA}, 1);
return false;
} else {
return true;
}
}
return true;
}
IPushClickListener推流UI点击回调
/**
* 点击结束直播
*/
void onStopLive();
/**
* 点击聊天用户头像回调
*/
void onChatAvatar(ChatTextDto chatTextDto);
/**
* 点击全体禁言
*/
void onALLBanChat();
/**
* 点击单体禁言
*/
void onBanChat();
/**
* 点击分享
*/
void onShare(PlayInfoDto dto);
/**
* 点击主播头像
*/
void onLiveAvatar();
/**
* 点击在线人数
*/
void onOnlineNum(MZOnlineUserListDto mzOnlineUserListDto);
推流初始化
//推流配置 具体内容请查看API文档
StreamAVOption streamAVOption = new StreamAVOption();
streamAVOption.streamUrl = pushUrl; //推流地址
MZPushManager mzPushManager = new MZPushManager(getActivity(),streamAVOption);
mzPushManager.initPushLive(streamLiveCameraView); //初始化推流view
StreamLiveCameraView liveCameraView=(StreamLiveCameraView)findViewById(R.id.stream_previewView);
StreamAVOption config=new StreamAVOption();
config.streamUrl=rtmpUrl;
MZPushManager manager=new MZPushManager(this,config);
manager.initPushLive(mLiveCameraView);
manager.setStreamingListener(new PushStreamingListener() {
@Override
public void onScreenShotResult(Bitmap bitmap) {
//截帧回调
}
@Override
public void onOpenConnectionResult(int i) {
//开始连接回调
}
@Override
public void onWriteError(int i) {
// 写入错误回调
}
@Override
public void onCloseConnectionResult(int i) {
// 关闭连接回调
}
});
推流相关API
manager.setPushUrl(rtmpUrl);//设置url
manager.startStreaming();//开始推流
manager.stopStreaming();//结束推流
manager.startRecord();//开始本地录制
manager.stopRecord();//停止本地录制
manager.cutFilter();//切换滤镜
manager.swapCamera();//切换摄像头
manager.setMirror(true,false,false);//设置镜像
manager.StartorStopAudio(boolean);//静音
MZApiRequest mzLiveStreamApiRequest = new MZApiRequest();
mzLiveStreamApiRequest.createRequest(TestActivity.this,MZApiRequest.API_TYPE_LIVE_STREAM);
mzLiveStreamApiRequest.setResultListener(new MZApiDataListener() {
@Override
public void dataResult(String s, Object o) {
}
@Override
public void errorResult(String s, int i, String s1) {
}
});
mzLiveStreamApiRequest.startData(MZApiRequest.API_TYPE_LIVE_STREAM,live_tk,appId,昵称,头像网络地址);
MZApiRequest mzApiRequestStopLive = new MZApiRequest()
mzApiRequestStopLive.createRequest(getActivity(),MZApiRequest.API_TYPE_LIVE_STOP);
mzApiRequestStopLive.setResultListener(new MZApiDataListener() {
@Override
public void dataResult(String s, Object o) {
}
@Override
public void errorResult(String s, int i, String s1) {
}
});
mzApiRequestStopLive.startData(MZApiRequest.API_TYPE_LIVE_STOP,ticketId);
MZApiRequest mzApiRequestBanChat = new MZApiRequest()
mzApiRequestBanChat.createRequest(getActivity(),MZApiRequest.API_TYPE_ROOM_FORBIDDEN);
mzApiRequestBanChat.setResultListener(new MZApiDataListener() {
@Override
public void dataResult(String s, Object o) {
}
@Override
public void errorResult(String s, int i, String s1) {
}
});
mzApiRequestBanChat.startData(MZApiRequest.API_TYPE_ROOM_FORBIDDEN,uId,ticketId,0解除1禁言);
MZApiRequest mzApiRequestAllChat = new MZApiRequest()
mzApiRequestAllChat.createRequest(getActivity(),MZApiRequest.API_TYPE_ROOM_ALLOWCHATALL);
mzApiRequestAllChat.setResultListener(new MZApiDataListener() {
@Override
public void dataResult(String s, Object o) {
}
@Override
public void errorResult(String s, int i, String s1) {
}
});
mzApiRequestAllChat.startData(MZApiRequest.API_TYPE_ROOM_ALLOWCHATALL,ticket_id,channel_id,0开启:1关闭);
<com.mengzhu.live.sdk.ui.push.StreamLiveCameraView
android:id="@+id/stream_previewView"
android:layout_width="match_parent"
android:layout_height="match_parent"/>