推流 - mengzhuSDK/MengzhuSDK_Android GitHub Wiki

推流集成

  • 权限申请示例,在推流前一定要在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

  • 基础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"/>