智能小视频Smartsmallvideo

    手机录屏直播

    初始化直播 LiveScreenStreamSession

    LiveConfig.Builder builder = new LiveConfig.Builder();
    builder.setVideoWidth(1280)
            .setVideoHeight(720)
            .setVideoFPS(30)
            .setInitVideoBitrate(1280 * 720)
            .setMinVideoBitrate(1280 * 720 / 4)
            .setMaxVideoBitrate(1280 * 720 * 2)
            .setVideoEnabled(true)
            .setAudioSampleRate(44100)
            .setAudioBitrate(64000)
            .setAudioEnabled(true)
            .setActivityRotation(Surface.ROTATION_0);
    mSession = new LiveScreenStreamSession(this, builder.build());
    mSession.setRtmpEventListener(this);
    mSession.setupDevice();
    mSession.setCaptureErrorListener(new LiveScreenStreamSession.CaptureErrorListener() {
        @Override
        public void onError(int error, String desc) {
            Toast.makeText(ScreenStreamingService.this, desc, Toast.LENGTH_SHORT).show();
        }
    });

    申请 Android 录屏权限

    由于 MediaProjection 的机制,用户每次录屏之前都必须采用以下方法获取录屏权限

    MediaProjectionManager mMediaProjectionManager = (MediaProjectionManager) getSystemService(Context.MEDIA_PROJECTION_SERVICE);
    startActivityForResult(mMediaProjectionManager.createScreenCaptureIntent(), REQUEST_MEDIA_PROJECTION);

    并且重写 Activity 的相应方法,代码如下

    if (requestCode == REQUEST_MEDIA_PROJECTION) {
        if (resultCode != Activity.RESULT_OK) {
            Log.i(TAG, "User cancelled");
            Toast.makeText(this, "User cancelled", Toast.LENGTH_SHORT).show();
            finish();
            return;
        }
        Log.i(TAG, "Starting screen capture");
        mResultCode = resultCode;
        mResultData = data;
        Intent i = getIntent();
        i.putExtra("result_code", resultCode);
        i.putExtra("result_data", data);
        ScreenStreamingService.start(this, i);
        finish();
    }

    当获取到录屏的 resultCode 和 resultData 后,即可调用以下方法

    // 开始录屏,配置 RTMP 地址
    mSession.startMediaProjection(mResultCode, mResultData);
    mSession.configRtmpSession(pushUrlBase + mRoomName + mRole.toString(), mRole);
    
    // 销毁,不再使用时调用
    mSession.destroyRtmpSession();
    mSession.releaseDevice();

    开始、暂停、恢复、结束推流

    以下操作LiveScreenStreamSession可调用多次

    // 开始推流
    mLiveCaptureSession.startStreaming();
    
    // 暂停推流
    mLiveCaptureSession.pauseStreaming();
    
    // 恢复推流
    mLiveCaptureSession.resumeStreaming();
    
    // 停止推流
    mLiveCaptureSession.stopStreaming();

    其他 Session 相关设置

    除了以上介绍的功能,录屏直播 Session 还支持互动直播、设置滤镜、设置背景音乐和设置音量增益等功能,相关功能的使用方法与LiveStreamSession相同,故不再做介绍。

    上一篇
    摄像实时直播
    下一篇
    视频上传