/// <summary> /// Render the video from the music file/background image, asynchronously. /// /// Attach event handlers to audioProgress[0] and videoProgress[0] to monitor /// progress, AFTER this function has been called! /// </summary> public void Render(ProgressBar pbarAudio, ProgressBar pbarVideo) { Console.WriteLine("\nBegin render..."); using (ITimeline timeline = new DefaultTimeline()) { Console.Write("Create group..."); // create our primary group IGroup group = timeline.AddVideoGroup("background", 15.0, 32, 720, 480); Console.WriteLine("done."); Console.Write("Create tracks..."); // add a video and audio track to the group ITrack videoTrack = group.AddTrack(); ITrack audioTrack = timeline.AddAudioGroup().AddTrack(); Console.WriteLine("done."); // add the audio/bg image Console.Write("Create audio track..."); IClip audio = audioTrack.AddAudio(this.mp3path); Console.WriteLine("done."); Console.Write("Create video track... length: " + audio.Duration.ToString() + "..."); IClip clip1 = videoTrack.AddImage(this.backgroundImage, 0, audio.Duration); //videoTrack.AddImage(this.backgroundImage, 0, audio.Duration); Console.WriteLine("done."); // set up progress indicators audioProgress[0] = new PercentageProgressParticipant(timeline); videoProgress[0] = new PercentageProgressParticipant(timeline); Console.WriteLine("Timeline duration: " + timeline.Duration); Console.WriteLine("Audio duration: " + audio.Duration); Console.WriteLine("IMG duration: " + videoTrack.Duration); // render our video out Console.Write("Render Start..."); using (renderer = new Splicer.Renderer.WindowsMediaRenderer( timeline, videopath, WindowsMediaProfiles.HighQualityVideo, videoProgress, audioProgress)) { this.pbarA = pbarAudio; this.pbarV = pbarVideo; audioProgress[0].ProgressChanged += new EventHandler <Splicer.Renderer.ProgressChangedEventArgs>(listMusicItem_ProgressChangedAudio); videoProgress[0].ProgressChanged += new EventHandler <Splicer.Renderer.ProgressChangedEventArgs>(listMusicItem_ProgressChangedVideo); renderer.Render(); } Console.WriteLine("Render Completed."); //AsyncCallback cb = new AsyncCallback(CallBack); //IAsyncResult ar = renderer.BeginRender(cb, renderer.State); } }
private void makeMovie(int imageName) { int simpleCount = 0; string simpleAudio = ""; string videoPath = ""; string title = ""; string description = ""; string tags = ""; foreach (VideoListModel videoItem in vList.getData()) { if (simpleCount == 0) { title = videoItem.VideoName; description = videoItem.VideoDescription; tags = videoItem.VideoTags; simpleAudio = videoItem.AudioLocation; videoPath = Application.StartupPath + "\\VideoData\\video\\" + videoItem.VideoName + ".wmv"; } simpleCount++; } label9.Text = title; Console.WriteLine(Application.StartupPath + "\\VideoData\\images\\merged\\" + imageName.ToString() + ".jpg"); using (ITimeline timeline = new DefaultTimeline(1)) { IGroup group = timeline.AddVideoGroup(32, 1920, 1080); ITrack videoTrack = group.AddTrack(); IClip clip1 = videoTrack.AddImage(Application.StartupPath + "\\VideoData\\images\\merged\\" + imageName.ToString() + ".jpg", 0, 0); ITrack audioTrack = timeline.AddAudioGroup().AddTrack(); IClip audio = audioTrack.AddAudio(simpleAudio); IClip clip2 = videoTrack.AddImage(Application.StartupPath + "\\VideoData\\images\\merged\\" + imageName.ToString() + ".jpg", 0, audio.Duration); var participant = new PercentageProgressParticipant(timeline); participant.ProgressChanged += new EventHandler <Splicer.Renderer.ProgressChangedEventArgs>(participant_ProgressChanged); using ( WindowsMediaRenderer renderer = new WindowsMediaRenderer(timeline, videoPath, WindowsMediaProfiles.HighQualityVideo)) { renderer.Render(); } } progressBar1.Value = 0; vList.getData().RemoveAt(0); vList.saveData(); refreshList(); try { //2. Get credentials and upload the file Run(title, description, videoPath, tags); } catch (AggregateException ex) { foreach (var exception in ex.InnerExceptions) { Console.WriteLine(exception.Message); } } }