public void PixelateAndIrisBetweenImages() { string outputFile = "PixelateAndIrisBetweenImages.wmv"; using (ITimeline timeline = new DefaultTimeline()) { timeline.AddAudioGroup().AddTrack().AddClip("testinput.wav", GroupMediaType.Audio, InsertPosition.Relative, 0, 0, 17); IGroup group = timeline.AddVideoGroup(32, 160, 100); ITrack low = group.AddTrack(); ITrack hi = group.AddTrack(); hi.AddClip("image1.jpg", GroupMediaType.Image, InsertPosition.Absoloute, 0, 0, 6); low.AddClip("image2.jpg", GroupMediaType.Image, InsertPosition.Absoloute, 5, 0, 8); hi.AddClip("image3.jpg", GroupMediaType.Image, InsertPosition.Absoloute, 11, 0, 6); // notice that we must apply "in" and "out" of the pixelation effect, to get the // desired effect, like the fade hi.AddTransition(5.0, 1.0, StandardTransitions.CreatePixelate(), true); hi.AddTransition(6.0, 1.0, StandardTransitions.CreatePixelate(), false); // the iris transition is a one shot hi.AddTransition(11.0, 2.0, StandardTransitions.CreateIris(), false); using ( IRenderer renderer = new WindowsMediaRenderer(timeline, outputFile, WindowsMediaProfiles.HighQualityVideo)) { renderer.Render(); } } }
public void RemoveEvents() { int count = 0; EventHandler increment = new EventHandler(delegate { count++; }); EventHandler <AfterEffectAddedEventArgs> incrementForAfterEffectAdded = new EventHandler <AfterEffectAddedEventArgs>(delegate { count++; }); EventHandler <AfterTransitionAddedEventArgs> incrementForAfterTransitionAdded = new EventHandler <AfterTransitionAddedEventArgs>(delegate { count++; }); EventHandler <AfterClipAddedEventArgs> incrementForAfterClipAdded = new EventHandler <AfterClipAddedEventArgs>(delegate { count++; }); using (ITimeline timeline = new DefaultTimeline()) { ITrack track = timeline.AddAudioGroup().AddTrack(); track.AfterEffectAdded += incrementForAfterEffectAdded; track.AfterTransitionAdded += incrementForAfterTransitionAdded; track.AfterClipAdded += incrementForAfterClipAdded; track.BeforeEffectAdded += increment; track.BeforeTransitionAdded += increment; track.BeforeClipAdded += increment; track.AddEffect(0, 2, StandardEffects.CreateDefaultBlur()); track.AddClip("testinput.mp3", GroupMediaType.Audio, InsertPosition.Absoloute, 0, 0, 1); track.AddTransition(0, 2, StandardTransitions.CreateFade()); Assert.AreEqual(6, count); count = 0; track.AfterEffectAdded -= incrementForAfterEffectAdded; track.AfterTransitionAdded -= incrementForAfterTransitionAdded; track.AfterClipAdded -= incrementForAfterClipAdded; track.BeforeEffectAdded -= increment; track.BeforeTransitionAdded -= increment; track.BeforeClipAdded -= increment; track.AddEffect(0, 2, StandardEffects.CreateDefaultBlur()); track.AddClip("testinput.mp3", GroupMediaType.Audio, InsertPosition.Relative, 0, 0, 1); track.AddTransition(2, 2, StandardTransitions.CreateFade()); Assert.AreEqual(0, count); } }
public void AddTransitionsToTrack() { using (ITimeline timeline = new DefaultTimeline()) { IGroup group = timeline.AddVideoGroup(24, 320, 200); ITrack track = group.AddTrack(); TransitionDefinition definition = StandardTransitions.CreateFade(); ITransition transition = track.AddTransition("test", 1, 3, definition, false); Assert.AreEqual(1, track.Transitions.Count); Assert.AreSame(transition, track.Transitions[0]); Assert.AreEqual("test", transition.Name); Assert.AreSame(definition, transition.TransitionDefinition); PrepareToExecute(timeline, @"<timeline framerate=""30.0000000""> <group type=""video"" bitdepth=""24"" height=""200"" framerate=""30.0000000"" previewmode=""0""> <track> <transition start=""1"" stop=""4"" clsid=""{16B280C5-EE70-11D1-9066-00C04FD9189D}"" username=""test"" /> </track> </group> </timeline>"); } }
public void WatermarkVideoClip() { // this demonstrates one way of watermarking a video clip... string outputFile = "WatermarkVideoClip.wmv"; using (ITimeline timeline = new DefaultTimeline(15)) { // greate our default audio track timeline.AddAudioGroup().AddTrack(); // add a video group, 32bpp, 320x240 (32bpp required to allow for an alpha channel) IGroup videoGroup = timeline.AddVideoGroup(32, 320, 240); // add our default video track ITrack videoTrack = videoGroup.AddTrack(); // add another video track, this will be used to contain our watermark image ITrack watermarkTrack = videoGroup.AddTrack(); // add the video in "transitions.wmv" to the first video track, and the audio in "transitions.wmv" // to the first audio track. timeline.AddVideoWithAudio("transitions.wmv"); // add the watermark image in, and apply it for the duration of the videoContent // this image will be stretched to fit the video clip, and in this case is a transparent gif. IClip watermarkClip = watermarkTrack.AddImage("testlogo.gif", 0, videoTrack.Duration); // add a alpha setter effect to the image, this will adjust the alpha of the image to be 0.5 // of it's previous value - so the watermark is 50% transparent. watermarkClip.AddEffect(0, watermarkClip.Duration, StandardEffects.CreateAlphaSetterRamp(0.8)); // add a transition to the watermark track, this allows the video clip to "shine through" the watermark, // base on the values present in the alpha channel of the watermark track. watermarkTrack.AddTransition(0, videoTrack.Duration, StandardTransitions.CreateKey(KeyTransitionType.Alpha, null, null, null, null, null), false); using ( // render it to windows media var renderer = new WindowsMediaRenderer(timeline, outputFile, WindowsMediaProfiles.HighQualityVideo)) { renderer.Render(); } } }
public void AddTransitionSetsAppropriateContainerAndGroup() { using (ITimeline timeline = new DefaultTimeline()) { TransitionDefinition def = StandardTransitions.CreateIris(); IGroup group = timeline.AddAudioGroup(); ITransition groupTransition = group.AddTransition(0, 0, def); Assert.AreSame(group, groupTransition.Container); Assert.AreSame(group, groupTransition.Group); ITrack track = group.AddTrack(); ITransition trackTransition = track.AddTransition(0, 0, def); Assert.AreSame(track, trackTransition.Container); Assert.AreSame(group, trackTransition.Group); IComposition composition = group.AddComposition(); ITransition compositionTransition = composition.AddTransition(0, 0, def); Assert.AreSame(composition, compositionTransition.Container); Assert.AreSame(group, compositionTransition.Group); } }