Esempio n. 1
0
    void StartTranscoding(uint uid)
    {
        LiveTranscoding live = new LiveTranscoding();

        TranscodingUser user = new TranscodingUser();

        user.uid          = uid;
        user.x            = 0;
        user.y            = 0;
        user.width        = HOSTVIEW_WIDTH;
        user.height       = HOSTVIEW_HEIGHT;
        user.audioChannel = 0;
        user.alpha        = 1;

        TranscodingUser me = user;

        me.uid = MyUID;
        me.x   = me.width;

        live.transcodingUsers = new TranscodingUser[] { me, user };
        live.userCount        = 2;

        live.width             = 2 * HOSTVIEW_WIDTH;
        live.height            = HOSTVIEW_HEIGHT;
        live.videoBitrate      = 400;
        live.videoCodecProfile = VIDEO_CODEC_PROFILE_TYPE.VIDEO_CODEC_PROFILE_HIGH;
        live.videoGop          = 30;
        live.videoFramerate    = 24;
        live.lowLatency        = false;

        live.audioSampleRate   = AUDIO_SAMPLE_RATE_TYPE.AUDIO_SAMPLE_RATE_44100;
        live.audioBitrate      = 48;
        live.audioChannels     = 1;
        live.audioCodecProfile = AUDIO_CODEC_PROFILE_TYPE.AUDIO_CODEC_PROFILE_LC_AAC;

        mRtcEngine.SetLiveTranscoding(live);

        int rc = mRtcEngine.AddPublishStreamUrl(url: YTURL, transcodingEnabled: true);

        Debug.Assert(rc == 0, " error in adding " + YTURL);
        rc = mRtcEngine.AddPublishStreamUrl(url: FBURL, transcodingEnabled: true);
        Debug.Assert(rc == 0, " error in adding " + FBURL);
        rc = mRtcEngine.AddPublishStreamUrl(url: TWURL, transcodingEnabled: hostCount > 1 ? true : false);
        Debug.Assert(rc == 0, " error in adding " + TWURL);
    }
    void StartTranscoding(bool ifRemoteUser = false)
    {
        if (isStreaming && !ifRemoteUser)
        {
            return;
        }
        if (isStreaming && ifRemoteUser)
        {
            mRtcEngine.RemovePublishStreamUrl(RTMP_URL);
        }

        var lt = new LiveTranscoding();

        lt.videoBitrate               = 400;
        lt.videoCodecProfile          = VIDEO_CODEC_PROFILE_TYPE.VIDEO_CODEC_PROFILE_HIGH;
        lt.videoGop                   = 30;
        lt.videoFramerate             = 24;
        lt.lowLatency                 = false;
        lt.audioSampleRate            = AUDIO_SAMPLE_RATE_TYPE.AUDIO_SAMPLE_RATE_44100;
        lt.audioBitrate               = 48;
        lt.audioChannels              = 1;
        lt.audioCodecProfile          = AUDIO_CODEC_PROFILE_TYPE.AUDIO_CODEC_PROFILE_LC_AAC;
        lt.liveStreamAdvancedFeatures = new LiveStreamAdvancedFeature[0];

        var localUesr = new TranscodingUser()
        {
            uid          = 0,
            x            = 0,
            y            = 0,
            width        = 360,
            height       = 640,
            audioChannel = 0,
            alpha        = 1.0,
        };

        if (ifRemoteUser)
        {
            var remoteUser = new TranscodingUser()
            {
                uid          = remoteUid,
                x            = 360,
                y            = 0,
                width        = 360,
                height       = 640,
                audioChannel = 0,
                alpha        = 1.0,
            };
            lt.userCount        = 2;
            lt.width            = 720;
            lt.height           = 640;
            lt.transcodingUsers = new[] { localUesr, remoteUser };
        }
        else
        {
            lt.userCount        = 1;
            lt.width            = 360;
            lt.height           = 640;
            lt.transcodingUsers = new[] { localUesr };
        }

        mRtcEngine.SetLiveTranscoding(lt);

        var rc = mRtcEngine.AddPublishStreamUrl(RTMP_URL, true);

        if (rc == 0)
        {
            logger.UpdateLog(string.Format("Error in AddPublishStreamUrl: {0}", RTMP_URL));
        }
    }