Example #1
0
        /// <summary>
        /// Starts the encoding process.
        /// </summary>
        /// <param name="encodingMode">The encoding profile to use.</param>
        /// <param name="bitrate">Bitrate in kbps. Ranges between 1000 and 20000.</param>
        public void StartStreaming(EncodingModeEntry encodingMode, int bitrate)
        {
            if (_isStreaming || tcpStreamHandler == null)
            {
                return;
            }

            if (bitrate < MinBitrate || bitrate > MaxBitrate)
            {
                return;
            }

            IBMDStreamingMutableVideoEncodingMode mutableVideoEncodingMode;

            encodingMode.encodingMode.CreateMutableVideoEncodingMode(out mutableVideoEncodingMode);
            mutableVideoEncodingMode.SetInt(_BMDStreamingEncodingModePropertyID.bmdStreamingEncodingPropertyVideoBitRateKbps, bitrate);
            streamingDeviceInput.SetVideoEncodingMode(mutableVideoEncodingMode);

            // Use tcp command to start (streamingDeviceInput.StartCapture() causes memory leak)
            tcpStreamHandler.StartReceiving();

            _isStreaming = true;
        }