コード例 #1
0
        private async Task RecordAsync()
        {
            if (RecordChecked)
            {
                _localRecordService.GetRecordParam();

                LocalRecordResult result =
                    await
                    _localRecordService.StartRecord(
                        _viewLayoutService.GetStreamLayout(_localRecordService.RecordParam.Width,
                                                           _localRecordService.RecordParam.Height));

                if (HasErrorMsg(result.m_result.m_rc.ToString(), result.m_result.m_message))
                {
                    RecordChecked = false;
                }
                else
                {
                    RecordTips =
                        string.Format(
                            $"分辨率:{_localRecordService.RecordParam.Width}*{_localRecordService.RecordParam.Height}\r\n" +
                            $"码率:{_localRecordService.RecordParam.VideoBitrate}\r\n" +
                            $"录制路径:{_localRecordService.RecordDirectory}");
                }
            }
            else
            {
                AsynCallResult result = await _localRecordService.StopRecord();

                if (HasErrorMsg(result.m_rc.ToString(), result.m_message))
                {
                    RecordChecked = true;
                }
            }
        }
コード例 #2
0
        public async Task <LocalRecordResult> StartRecord(List <LiveVideoStreamInfo> liveVideoStreamInfos)
        {
            if (string.IsNullOrEmpty(RecordDirectory))
            {
                return(new LocalRecordResult()
                {
                    m_result = new AsynCallResult()
                    {
                        m_rc = -1,
                        m_message = Messages.WarningRecordDirectoryNotSet
                    }
                });
            }


            if (RecordParam.Width == 0 || RecordParam.Height == 0 || RecordParam.VideoBitrate == 0)
            {
                return(new LocalRecordResult()
                {
                    m_result = new AsynCallResult()
                    {
                        m_rc = -1,
                        m_message = Messages.WarningLiveResolutionNotSet
                    }
                });
            }

            int result = await _sdkService.SetRecordDirectory(RecordDirectory);

            AsynCallResult setRecordParamResult = await _sdkService.SetRecordParam(RecordParam);

            string recordFileName = $"{DateTime.Now:yyyy_MM_dd_HH_mm_ss}.mp4";

            Log.Logger.Debug(
                $"【local record live begins】:width={RecordParam.Width}, height={RecordParam.Height}, bitrate={RecordParam.VideoBitrate}, path={Path.Combine(RecordDirectory, recordFileName)}, videos={liveVideoStreamInfos.Count}");

            for (int i = 0; i < liveVideoStreamInfos.Count; i++)
            {
                Log.Logger.Debug(
                    $"video{i + 1}:x={liveVideoStreamInfos[i].XLocation}, y={liveVideoStreamInfos[i].YLocation}, width={liveVideoStreamInfos[i].Width}, height={liveVideoStreamInfos[i].Height}");
            }

            LocalRecordResult localRecordResult =
                await
                _sdkService.StartRecord(recordFileName, liveVideoStreamInfos.ToArray(), liveVideoStreamInfos.Count);

            RecordId = localRecordResult.m_liveId;

            if (localRecordResult.m_result.m_rc == 0)
            {
                Log.Logger.Debug($"【local record live succeeded】:liveId={localRecordResult.m_liveId}");
            }
            else
            {
                Log.Logger.Error($"【local record live failed】:{localRecordResult.m_result.m_message}");
            }

            return(localRecordResult);
        }