예제 #1
0
파일: CameraIOS.cs 프로젝트: llenroc/viime
        /// <summary>
        /// Initializes a new instance of the <see cref="T:Camera.iOS.Renderers.CameraView.CameraIOS"/> class.
        /// </summary>
        public CameraIOS()
        {
            _log = IoC.Resolve <ILogger>();
            _tag = $"{GetType()} ";

            // retrieve system version
            var versionParts  = UIDevice.CurrentDevice.SystemVersion.Split('.');
            var versionString = versionParts [0] + "." + versionParts [1];

            _systemVersion = Convert.ToDouble(versionString, CultureInfo.InvariantCulture);

            _mainView = new UIView()
            {
                TranslatesAutoresizingMaskIntoConstraints = false
            };
            AutoresizingMask = UIViewAutoresizing.FlexibleMargins;

            _session = new LFLiveSession(LFLiveAudioConfiguration.DefaultConfigurationForQuality(LFLiveAudioQuality.High),
                                         LFLiveVideoConfiguration.DefaultConfigurationForQuality((LFLiveVideoQuality.Low3)));

            // retrieve camera device if available
            _cameraAvailable = true;

            Add(_mainView);

            // set layout constraints for main view
            AddConstraints(NSLayoutConstraint.FromVisualFormat("V:|[mainView]|", NSLayoutFormatOptions.DirectionLeftToRight, null, new NSDictionary("mainView", _mainView)));
            AddConstraints(NSLayoutConstraint.FromVisualFormat("H:|[mainView]|", NSLayoutFormatOptions.AlignAllTop, null, new NSDictionary("mainView", _mainView)));
        }
예제 #2
0
파일: CameraIOS.cs 프로젝트: llenroc/viime
        /// <summary>
        /// Takes the video.
        /// </summary>
        /// <returns>The photo.</returns>
        public void TakeVideo()
        {
            try
            {
                if (!_cameraBusy)
                {
                    SetBusy(true);

                    var stream = new LFLiveStreamInfo();

                    stream.Url = rtmpUrl;

                    var audioConfiguration = new LFLiveAudioConfiguration
                    {
                        AudioBitrate    = LFLiveAudioBitRate.LFLiveAudioBitRate_96Kbps,
                        AudioSampleRate = LFLiveAudioSampleRate.LFLiveAudioSampleRate_44100Hz
                    };

                    var videoConfiguration = new LFLiveVideoConfiguration
                    {
                        VideoFrameRate           = 30,
                        VideoMaxFrameRate        = 30,
                        VideoMinFrameRate        = 30,
                        VideoBitRate             = 4200,
                        VideoMaxBitRate          = 4200,
                        VideoMinBitRate          = 4200,
                        VideoMaxKeyframeInterval = 60,
                        SessionPreset            = LFLiveVideoSessionPreset.LFCaptureSessionPreset720x1280,
                        VideoSize = new CGSize(720, 1280)
                    };

                    stream.AudioConfiguration = audioConfiguration;
                    stream.VideoConfiguration = videoConfiguration;

                    _session.AdaptiveBitrate = false;
                    _session.ReconnectCount  = 10;

                    ToggleLiveStream(true, stream);

                    var info = _session.StreamInfo;
                }
                else
                {
                    ToggleLiveStream(false);
                }
            }
            catch (Exception error)
            {
                _log.WriteLineTime(_tag + "\n" +
                                   "CaptureImageWithMetadata() Failed to take photo \n " +
                                   "ErrorMessage: \n" +
                                   error.Message + "\n" +
                                   "Stacktrace: \n " +
                                   error.StackTrace);
            }
        }