public void CreateVideoFromImages(List<string> imagePaths, AudioUoW audio, string outputPath, VideoQuality vq,
            List<VideoRenderedEventHandler> renderCompleted = null)
        {
            try
            {
                using (ITimeline timeline = new DefaultTimeline())
                {
                    var profile = SplicerWMVProfile.GetProfile(vq);

                    var group = timeline.AddVideoGroup(32, profile.Width, profile.Height);
                    var videoTrack = group.AddTrack();
                    var audioTrack = timeline.AddAudioGroup().AddTrack();

                    var a = audioTrack.AddAudio(audio.AudioPath);

                    var imageDuration = a.Duration/imagePaths.Count;

                    foreach (var imagePath in imagePaths)
                    {
                        videoTrack.AddImage(imagePath, InsertPosition.Relative, 0, 0, imageDuration);
                    }

                    IRenderer renderer = new WindowsMediaRenderer(timeline, outputPath, profile.Profile);

                    renderer.BeginRender(RenderingCompleted, new VideoRenderedAsyncState() { Renderer = renderer, Audio = audio, RenderCompleted = renderCompleted });
                }
            }
            catch (Exception ex)
            {
                Log.Error(ex.Message, ex);
                if (renderCompleted != null)
                {
                    foreach (var rc in renderCompleted)
                        rc(ex, new VideoRenderedEventArgs());
                }
            }
        }
        public void CreateVideoFromImages(List<string> imagePaths, AudioUoW audio, string outputPath, VideoQuality vq,
            List<VideoRenderedEventHandler> renderCompleted = null)
        {
            try
            {
                var vew = new VideoEncoderWrapper();

                vew.EncodingCompleted += (sender, args) =>
                {
                    EncodingCompleted(this, EventArgs.Empty);
                    if (renderCompleted != null)
                    {
                        foreach (var rc in renderCompleted)
                        {
                            rc(this, new VideoRenderedEventArgs() { Audio = audio });
                        }
                    }
                };

                vew.EncodeAsync(imagePaths[0], audio.AudioPath, outputPath);
            }
            catch (Exception ex)
            {
                Log.Error(ex.Message, ex);
                throw;
            }
        }
        public void CreateVideoFromImages(List<string> imagePaths, AudioUoW audio, string outputPath, VideoQuality vq,
            List<VideoRenderedEventHandler> renderCompleted = null)
        {
            try
            {
                //_ve.SetImageFilePath(imagePaths[0]);
                //_ve.SetAudioFilePath(GetCorrectFilename(audio.AudioPath));
                //_ve.SetVideoOutputPath(outputPath);

                //_ve.Encode();
            }
            catch (Exception ex)
            {
                Log.Error(ex.Message, ex);
            }
        }
Пример #4
0
        private void PreviousButton_Click(object sender, EventArgs e)
        {
            try
            {
                if (_currentPage == 1) return;

                UpdateAudio(_currentAudio);

                _currentPage--;
                CalculateLimits();

                _currentAudio = _audios[_currentPage - 1];
                SetFields(_currentAudio);
            }
            catch (Exception ex)
            {
                Log.Error(ex.Message, ex);
            }
        }
Пример #5
0
 private void UpdateAudio(AudioUoW audio)
 {
     try
     {
         audio.Title = TitleTextBox.Text;
         audio.Description = DescriptionTextBox.Text;
         audio.Tags = _ms.GetTagsFromTagString(TagsTextBox.Text);
         audio.SocialMediaMessage = SocialMediaMessageTextBox.Text;
     }
     catch (Exception ex)
     {
         Log.Error(ex.Message, ex);
     }
 }
Пример #6
0
        private void Setup()
        {
            try
            {
                if (_audios == null || _audios.Count == 0)
                    ShowNoAudiosMessage();

                _currentAudio = _audios[0];
                SetFields(_currentAudio);

                CalculateLimits();
            }
            catch (Exception ex)
            {
                Log.Error(ex.Message, ex);
            }
        }
Пример #7
0
 private void SetFields(AudioUoW audio)
 {
     try
     {
         TitleTextBox.Text = audio.Title;
         DescriptionTextBox.Text = audio.Description;
         TagsTextBox.Text = _ms.GenerateTagsString(audio.Tags);
         SocialMediaMessageTextBox.Text = audio.SocialMediaMessage;
     }
     catch (Exception ex)
     {
         Log.Error(ex.Message, ex);
     }
 }
        public async void UploadVideo(AudioUoW audio, OauthTokenModel otm, List<VideoUploadedEventHandler> videoUploaded = null)
        {
            try
            {
                Video returnedVideo = null;
                using (var stream = File.OpenRead(audio.VideoPath))
                {

                    var video = new Video
                    {
                        Snippet = new VideoSnippet
                        {
                            Title = audio.Title,
                            Description = audio.Description,
                            Tags = audio.Tags,
                            //TODO get category list info
                            CategoryId = "22"
                        },
                        Status = new VideoStatus
                        {
                            PrivacyStatus = "unlisted",
                            Embeddable = true,
                            License = "youtube"
                        }
                    };

                    var headers = new Dictionary<string, string>();

                    headers["Authorization"] = otm.TokenType + " " + otm.AccessToken;
                    headers["X-Upload-Content-Length"] = stream.Length.ToString();
                    headers["x-upload-content-type"] = "application/octet-stream";

                    IJsonSerializer js = new NewtonsoftJsonSerializer();
                    var videoData = js.Serialize(video);

                    var response =
                        await
                            WebHelper.GetRawResponsePost(
                                "https://www.googleapis.com/upload/youtube/v3/videos?uploadType=resumable&part=snippet,status,contentDetails",
                                videoData, headers);

                    var uploadUrl = response.Headers.Location;

                    returnedVideo = await WebHelper.Post<Video>(
                        uploadUrl.AbsoluteUri,
                        stream, headers);
                    audio.YouTubeUrl = "https://www.youtube.com/watch?v=" + returnedVideo.Id;
                }

                if (videoUploaded == null) return;

                foreach (var vu in videoUploaded)
                {
                    vu(this, new VideoUploadedEventArgs() {Audio = audio});
                }
            }
            catch (Exception ex)
            {
                Log.Error(ex.Message, ex);
            }
        }
 public void UploadVideo(AudioUoW audio, OauthTokenModel otm, VideoUploadedEventArgs videoUploaded = null)
 {
     try
     {
         _vns.UploadVideo(audio, otm, new List<VideoUploadedEventHandler>());
     }
     catch (Exception ex)
     {
         Log.Error(ex.Message, ex);
     }
 }
 public void MakePost(OauthTokenModel otm, AudioUoW audio)
 {
     try
     {
         var fc = new FacebookClient(otm.AccessToken);
         dynamic response = fc.Post("/me/feed", new { message = audio.SocialMediaMessage, link = audio.SoundCloudUrl });
     }
     catch (Exception ex)
     {
         Log.Error(ex.Message, ex);
     }
 }
        public async void UploadAudio(AudioUoW audio, OauthTokenModel otm, List<AudioUploadedEventHandler> audioUploaded = null)
        {
            try
            {
                var buffer = new byte[16*1024];
                using (var stream = File.OpenRead(audio.AudioPath))
                {
                    using (var ms = new MemoryStream())
                    {
                        int read;
                        while ((read = stream.Read(buffer, 0, buffer.Length)) > 0)
                        {
                            ms.Write(buffer, 0, read);
                        }
                        buffer = ms.ToArray();
                    }
                }

                var dict = new Dictionary<string, object>
                {
                    {"track[title]", audio.Title},
                    {"track[description]", audio.Description},
                    {"track[tag_list]", _ms.GenerateTagsString(audio.Tags, ' ')}
                };

                var fileData = new Dictionary<string, byte[]> {{"track[asset_data]", buffer}};

                var track = await WebHelper.PostFile<soundcloud_track>(API_URL + "/tracks.json?oauth_token=" + otm.AccessToken, dict, fileData);
                audio.SoundCloudUrl = track.permalink_url;

                if (audioUploaded == null) return;

                foreach (var au in audioUploaded)
                {
                    au(this, new AudioUploadedEventArgs() { Audio = audio });
                }
            }
            catch (Exception ex)
            {
                Log.Error(ex.Message, ex);
            }
        }