void TranscodeVideoTest(string filename) { using (MFSystem.Start()) { var details = VideoAttributes.TestFor(filename); TraceInfo.WriteLine("Frame Rate: {0}, Frame Size: {1}x{2}, Video: {3} @ {4}Mbs, Audio: {5}, {6}Khz @ {7}Kbs, ".F (details.FrameRate, details.FrameSize.Width, details.FrameSize.Height, details.VideoEncoding, details.BitRate == 0 ? "-- " : details.BitRate.ToString(), details.AudioEncoding, details.AudioSamplesPerSecond / 1000, details.AudioAverageBytesPerSecond / 1000)); TraceInfo.WriteLine("Begining video re-encoding."); details.Transcoder.ProcessVideo((readers, saveToSink) => { readers.First().SourceReader.Samples(AVOperations.FadeIn(saveToSink)); }); TraceInfo.WriteLine("Video converted. Review the video file {0} to confirm it looks OK.", details.Transcoder.DestinationFile); TraceInfo.WriteLine("Success!"); } }
void TranscodeVideoTest(string filename) { List <int> supportedAudioBitRates = new List <int>(); using (MFSystem.Start()) { var details = VideoAttributes.TestFor(filename); TraceInfo.WriteLine("Frame Rate: {0}, Frame Size: {1}x{2}, Video: {3} @ {4}Mbs, Audio: {5}, {6}Khz @ {7}Kbs, ".F (details.FrameRate, details.FrameSize.Width, details.FrameSize.Height, details.VideoEncoding, details.BitRate == 0 ? "-- " : details.BitRate.ToString(), details.AudioEncoding, details.AudioSamplesPerSecond / 1000, details.AudioAverageBytesPerSecond / 1000)); TraceInfo.WriteLine("Begining video re-encoding."); details.Transcoder.ProcessVideo((readers, saveToSink) => { int lastSecond = 0; var fn = AVOperations.FadeIn(saveToSink); readers.First().SourceReader.Samples(sample => { if (sample.Stream.CurrentMediaType.IsVideo && sample.Sample != null) { var s = (int)sample.Sample.SampleTime.FromNanoToSeconds(); if (s != lastSecond) { TraceInfo.WriteLine("Converted: {0} seconds", s); } lastSecond = s; if (s > 10) { return(false); } } return(fn(sample)); }); }); TraceInfo.WriteLine("Video converted. Review the video file {0} to confirm it looks OK.", details.Transcoder.DestinationFile); TraceInfo.WriteLine("Success!"); } }
void sourceVideoTextBox_TextChanged(object sender, EventArgs e) { Settings.Default.lastVideoFile = sourceVideoTextBox.Text; Settings.Default.Save(); if (lookForAudioBitRates != null) { lookForAudioBitRates.Stop(); lookForAudioBitRates.Dispose(); lookForAudioBitRates = null; } OnGameDataFileChanged(); SetTanscodeMessage("", "", ""); if (sourceVideoTextBox.Text.Trim() == "") { return; } if (!File.Exists(sourceVideoTextBox.Text)) { SetTanscodeMessage(sourceVideoFileErrorMessage: "*File does not exist"); return; } try { var data = OverlayData.FromFile(sourceVideoTextBox.Text); var fileName = data.VideoFiles.Last().FileName; if (!File.Exists(fileName)) { SetTanscodeMessage(sourceVideoFileErrorMessage: "*Captured video does not exist: " + fileName); return; } var currentVersion = Assembly.GetExecutingAssembly().GetName().Version.ToString(); if (data.CapturedVersion != null && data.CapturedVersion != currentVersion) { SetTanscodeMessage(warningDetails: "*Video was captured with version {0}.\nIt is recommended to transcode and capture using the same version.\nTranscoding may not work.".F(data.CapturedVersion)); } var details = VideoAttributes.TestFor(data); SetTanscodeMessage(formatDetails: "Frame Rate: {0}, Frame Size: {1}x{2}, Video: {3} @ {4}Mbs, Audio: {5}, {6}Khz @ {7}Kbs, ".F (details.FrameRate, details.FrameSize.Width, details.FrameSize.Height, details.VideoEncoding, details.BitRate == 0 ? "-- " : details.BitRate.ToString(), details.AudioEncoding, details.AudioSamplesPerSecond / 1000, details.AudioAverageBytesPerSecond / 1000), sourceVideoFileErrorMessage: details.ErrorMessage); } catch (Exception ex) { SetTanscodeMessage(sourceVideoFileErrorMessage: "*Error reading the video file. {0}".F(ex.Message)); lookForAudioBitRates = new System.Windows.Forms.Timer(); lookForAudioBitRates.Tick += sourceVideoTextBox_TextChanged; lookForAudioBitRates.Interval = 5000; lookForAudioBitRates.Start(); } }