private void btnAddFiles_Click(object sender, EventArgs e) { using (OpenFileDialog dlg = new OpenFileDialog()) { dlg.Filter = "Video files (*.mp4,*.mpg,*.mpeg,*.mod,*.avi,*.wmv,*.mts,*.m2t,*.ts,*.tod,*.m2v,*.m4v,*.webm,*.dat,*.mpe,*.mpeg4,*.ogm)|*.mp4;*.mpg;*.mpeg;*.mod;*.avi;*.wmv;*.mts;*.m2t;*.ts;*.tod;*.m2v;*.m4v;*.webm;*.dat;*.mpe;*.mpeg4;*.ogm|All files (*.*)|*.*"; dlg.Multiselect = true; if (dlg.ShowDialog(this) == DialogResult.OK) { var avinfo = new PrimoSoftware.AVBlocks.MediaInfo(); foreach (string fileName in dlg.FileNames) { avinfo.InputFile = fileName; if (avinfo.Load()) { var videoInfo = GetVideoStream(avinfo); if (videoInfo != null) { m_settings.InputFiles.Add(fileName); ListViewItem lvi = new ListViewItem(fileName); lvi.SubItems.Add(FormatVideoInfo(videoInfo)); lvFiles.Items.Add(lvi); } } } } } }
private PrimoSoftware.AVBlocks.VideoStreamInfo GetVideoStream(PrimoSoftware.AVBlocks.MediaInfo avinfo) { foreach (var stream in avinfo.Streams) { if (stream.MediaType == PrimoSoftware.AVBlocks.MediaType.Video) { return((PrimoSoftware.AVBlocks.VideoStreamInfo)stream); } } return(null); }
static bool DecodeAvcFile(Options opt) { // transcoder will fail if output exists (by design) DeleteFile(opt.OutputFile); var mediaInfo = new PrimoSoftware.AVBlocks.MediaInfo(); mediaInfo.Inputs[0].File = opt.InputFile; if (!mediaInfo.Open()) { PrintError("MediaInfo.Open()", mediaInfo.Error); return(false); } MediaSocket inSocket = MediaSocket.FromMediaInfo(mediaInfo); MediaSocket outSocket = CreateOutputSocket(opt); // create Transcoder using (Transcoder transcoder = new Transcoder()) { transcoder.AllowDemoMode = true; transcoder.Inputs.Add(inSocket); transcoder.Outputs.Add(outSocket); bool res = transcoder.Open(); PrintError("Transcoder open", transcoder.Error); if (!res) { return(false); } res = transcoder.Run(); PrintError("Transcoder run", transcoder.Error); if (!res) { return(false); } transcoder.Close(); PrintError("Transcoder close", transcoder.Error); if (!res) { return(false); } } return(true); }