视频广播设置了黑屏Android

时间:2019-07-08 13:04:59

标签: agora.io

嗨,我正在尝试设置Agora Android广播sdk。在接收端它使我陷入黑屏。我添加了应用ID和临时令牌。

现在,我正在Application类的onCreate()方法中初始化sdk:

RtcEngine.create(context, context.getString(R.string.private_app_id), VideoEngineEventHandler(context).iRtcEngineEventHandler)

VideoEngineEventHandler

class VideoEngineEventHandler(private val context: Context) {

private var TAG: String = VideoEngineEventHandler::class.java.simpleName

val iRtcEngineEventHandler = object : IRtcEngineEventHandler() {

    override fun onConnectionLost() {
        super.onConnectionLost()
        Log.d(TAG, "On Connection Lost")
    }

    override fun onUserJoined(uid: Int, elapsed: Int) {
        super.onUserJoined(uid, elapsed)
        Log.d(TAG, "On User Joined: $uid")
    }

    override fun onUserOffline(uid: Int, reason: Int) {
        super.onUserOffline(uid, reason)
        Log.d(TAG, "On User Offline")
    }

    override fun onUserEnableVideo(uid: Int, enabled: Boolean) {
        super.onUserEnableVideo(uid, enabled)
        Log.d(TAG, "onUserEnableVideo: $uid : enable: $enabled")
    }
}

广播活动

class BroadcastActivity : BaseActivity() {

private var mRtcEngine: RtcEngine? = null

override fun onCreate(savedInstanceState: Bundle?) {
    super.onCreate(savedInstanceState)
    setContentView(R.layout.activity_broadcast)
    launchBroadcast(intent.getBooleanExtra("IS_BROADCAST", false))
}

private fun launchBroadcast(isBroadcast: Boolean) {
    mRtcEngine = AwaazRepository.rtcEngine()
    if (isBroadcast) {
        mRtcEngine?.let {
            it.setChannelProfile(Constants.CHANNEL_PROFILE_LIVE_BROADCASTING)
            it.setClientRole(Constants.CLIENT_ROLE_BROADCASTER)
            it.enableVideo()
            setOrientation(it)
            setupLocalVideo(it)
            it.joinChannel(getString(R.string.agora_access_token), "TESTING", null, 0)
        }
    } else {
        mRtcEngine?.let {
            it.setChannelProfile(Constants.CHANNEL_PROFILE_LIVE_BROADCASTING)
            it.setClientRole(Constants.CLIENT_ROLE_AUDIENCE)
            it.enableVideo()
            setOrientation(it)
            setupRemoteVideo(0, it)
            it.joinChannel(getString(R.string.agora_access_token), "TESTING", null, 0)
        }
    }
}

private fun setOrientation(rtcEngine: RtcEngine) {
    val orientationMode = VideoEncoderConfiguration.ORIENTATION_MODE.ORIENTATION_MODE_FIXED_PORTRAIT
    val dimensions = VideoEncoderConfiguration.VideoDimensions(360, 640)
    val videoEncoderConfiguration = VideoEncoderConfiguration(dimensions, VideoEncoderConfiguration.FRAME_RATE.FRAME_RATE_FPS_24, VideoEncoderConfiguration.STANDARD_BITRATE, orientationMode)
    rtcEngine.setVideoEncoderConfiguration(videoEncoderConfiguration)
}

private fun setupLocalVideo(rtcEngine: RtcEngine) {
    val surfaceView = RtcEngine.CreateRendererView(baseContext)
    surfaceView.setZOrderMediaOverlay(true)
    container.addView(surfaceView)
    rtcEngine.setupLocalVideo(VideoCanvas(surfaceView, VideoCanvas.RENDER_MODE_ADAPTIVE, 0))
}

private fun setupRemoteVideo(uid: Int, rtcEngine: RtcEngine) {
    if (container.childCount >= 1) {
        return
    }
    val surfaceView = RtcEngine.CreateRendererView(baseContext)
    container.addView(surfaceView)
    rtcEngine.setupRemoteVideo(VideoCanvas(surfaceView, VideoCanvas.RENDER_MODE_ADAPTIVE, uid))
    surfaceView.tag = uid
}

override fun onPause() {
    super.onPause()
    mRtcEngine?.leaveChannel()
}
 }

0 个答案:

没有答案
相关问题