Exemple #1
0
        /// <summary>
        /// Starts media recording asynchronously
        /// </summary>
        /// <param name="encodingProfile">
        /// Encoding profile used for the recording session
        /// </param>
        public async Task StartRecordingAsync(MediaEncodingProfile encodingProfile)
        {
            try
            {
                // We cannot start recording twice.
                if (mediaSink != null && recordingStarted)
                {
                    throw new InvalidOperationException("Recording already started.");
                }

                // Release sink if there is one already.
                CleanupSink();

                // Create new sink
                mediaSink = new StspMediaSinkProxy();
                mediaSink.IncomingConnectionEvent += mediaSink_IncomingConnectionEvent;

                var mfExtension = await mediaSink.InitializeAsync(encodingProfile.Audio, encodingProfile.Video);

                await mediaCapture.StartRecordToCustomSinkAsync(encodingProfile, mfExtension);

                recordingStarted = true;
            }
            catch (Exception e)
            {
                CleanupSink();
                throw e;
            }
        }
Exemple #2
0
        public async Task StartRecordToSinkAsync(MediaEncodingProfile encodingProfile)
        {
            lock (this)
            {
                isInitialized.CheckIfFulfills("Camera", "initialized", true);
                isRecording.CheckIfFulfills("Camera", "recording", false);
                isRecording = true;
            }

            CleanupSink();
            mediaSink = new StspMediaSinkProxy();
            mediaSink.IncomingConnectionEvent += MediaSink_IncomingConnectionEvent;
            try
            {
                IMediaExtension mfExtension = await mediaSink.InitializeAsync(encodingProfile.Audio, encodingProfile.Video);

                await mediaCapture.StartRecordToCustomSinkAsync(encodingProfile, mfExtension);
            }
            catch (Exception ex)
            {
                CleanupSink();
                throw new Exception($"Camera could not start record to sink: { ex.Message }. { Logger.GetExceptionLocalization(this) }");
            }
        }
        /// <summary>
        /// Starts media recording asynchronously
        /// </summary>
        /// <param name="encodingProfile">
        /// Encoding profile used for the recording session
        /// </param>
        public async Task StartRecordingAsync(MediaEncodingProfile encodingProfile)
        {
            try
            {
                // We cannot start recording twice.
                if (mediaSink != null && recordingStarted)
                {
                    throw new InvalidOperationException("Recording already started.");
                }

                // Release sink if there is one already.
                CleanupSink();

                // Create new sink
                mediaSink = new StspMediaSinkProxy();
                mediaSink.IncomingConnectionEvent += mediaSink_IncomingConnectionEvent;

                var mfExtension = await mediaSink.InitializeAsync(encodingProfile.Audio, encodingProfile.Video);
                await mediaCapture.StartRecordToCustomSinkAsync(encodingProfile, mfExtension);

                recordingStarted = true;
            }
            catch (Exception e)
            {
                CleanupSink();
                throw e;
            }
        }