public async void StartUpload()
        {
            if (string.IsNullOrEmpty(FileName))
            {
                MessageBox.Show("Please enter a file name");
                return;
            }


            try
            {
                CurrentState = State.Working;
                ErrorText    = "";
                _cancelToken = new CancellationTokenSource();
                await _clipCreator.ClipAndUpload(OriginalFile.FullName, $"{SafeFileName}.mp4",
                                                 StartTime,
                                                 EndTime,
                                                 new Progress <EncodeProgress>(ep =>
                {
                    EncodeProgress = ep.PercentComplete;
                    EncodeFps = ep.FramesPerSecond;
                }),
                                                 new Progress <UploadProgress>(up =>
                {
                    UploadProgress = up.PercentComplete;
                    UploadRate = up.BitsPerSecond;
                }), _cancelToken.Token);

                CurrentState = State.Done;
                if (DeleteOnSuccess)
                {
                    try
                    {
                        File.Delete(OriginalFile.FullName);
                    }
                    catch
                    {
                        // ignored
                    }
                }
            }
            catch (Exception e)
            {
                CurrentState = State.Error;
                Console.Write(e);
                ErrorText = $"Error: {e.Message}";
            }
        }
示例#2
0
        public async void StartUpload()
        {
            if (string.IsNullOrEmpty(FileName))
            {
                MessageBox.Show("Please enter a file name");
                return;
            }


            try
            {
                CurrentState = State.Working;
                ErrorText    = "";
                _cancelToken = new CancellationTokenSource();
                var uploadProgress = new Progress <UploadProgress>(up =>
                {
                    UploadProgress = up.PercentComplete;
                    UploadRate     = up.BitsPerSecond;
                });
                var encodeProgress = new Progress <EncodeProgress>(ep =>
                {
                    EncodeProgress = ep.PercentComplete;
                    EncodeFps      = ep.FramesPerSecond;
                });

                if (IsMultiClip)
                {
                    YouTubeId = await _clipCreator.ClipAndUpload(VideoFiles.Select(vf => vf.File).ToList(),
                                                                 $"{SafeFileName}.mp4",
                                                                 SelectedEncoder,
                                                                 ForceWideScreen,
                                                                 SelectedDestination,
                                                                 encodeProgress,
                                                                 uploadProgress, _cancelToken.Token);
                }
                else
                {
                    YouTubeId = await _clipCreator.ClipAndUpload(OriginalFile.FullName, $"{SafeFileName}.mp4",
                                                                 Timelines,
                                                                 SelectedEncoder,
                                                                 ForceWideScreen,
                                                                 SelectedDestination,
                                                                 encodeProgress,
                                                                 uploadProgress, _cancelToken.Token);
                }


                CurrentState = State.Done;
                if (!DeleteOnSuccess)
                {
                    return;
                }
                if (!IsMultiClip)
                {
                    await _fileDeleter.Delete(OriginalFile);
                }
                else
                {
                    foreach (var video in VideoFiles)
                    {
                        await _fileDeleter.Delete(video.File);
                    }
                }
            }
            catch (Exception e)
            {
                CurrentState = State.Error;
                Console.Write(e);
                ErrorText = $"Error: {e.Message}";
            }
            finally
            {
                _cancelToken = null;
            }
        }