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); } }
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); } }
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); } }
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); } }
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); } }