public static void Main(string[] args) { /* Init Gtk */ Application.Init(); Core.Init(); /* Init GStreamer */ GStreamer.Init(); if (!GStreamer.CheckInstallation()) return; GLib.ExceptionManager.UnhandledException += new GLib.UnhandledExceptionHandler(OnException); Version version = Assembly.GetExecutingAssembly().GetName().Version; try { AddinsManager manager = new AddinsManager(Path.Combine(Config.HomeDir(), "addins")); manager.LoadConfigModifierAddins(); GUIToolkit guiToolkit = new GUIToolkit(version); IMultimediaToolkit multimediaToolkit = new MultimediaFactory(); manager.LoadExportProjectAddins(guiToolkit.MainWindow); Core.Start(guiToolkit, multimediaToolkit); Application.Run(); } catch(Exception ex) { ProcessExecutionError(ex); } }
public FramesSeriesCapturer(string videoFile,long start, long stop, uint interval, string outputDir) { MultimediaFactory mf= new MultimediaFactory(); this.capturer=mf.GetFramesCapturer(); this.capturer.Open(videoFile); this.start= start; this.stop = stop; this.interval = interval; this.outputDir = outputDir; this.seriesName = System.IO.Path.GetFileName(outputDir); this.totalFrames = (int)Math.Floor((double)((stop - start) / interval))+1; }
/* FIXME: hackish as hell! */ public static MediaFile DiscoverFile(string filePath) { int duration=0; bool hasVideo; bool hasAudio; string AudioEncoderType = ""; string VideoEncoderType = ""; int fps=0; int height=0; int width=0; LongoMatch.Common.Image preview=null; MultimediaFactory factory; IMetadataReader reader; IFramesCapturer thumbnailer; try { factory = new MultimediaFactory(); reader = factory.GetMetadataReader(); reader.Open(filePath); hasVideo = (bool) reader.GetMetadata(MetadataType.HasVideo); hasAudio = (bool) reader.GetMetadata(MetadataType.HasAudio); if(hasAudio) { AudioEncoderType = (string) reader.GetMetadata(MetadataType.AudioEncoderType); } if(hasVideo) { VideoEncoderType = (string) reader.GetMetadata(MetadataType.VideoEncoderType); fps = (int) reader.GetMetadata(MetadataType.Fps); thumbnailer = factory.GetFramesCapturer(); thumbnailer.Open(filePath); thumbnailer.SeekTime(1000,false); preview = thumbnailer.GetCurrentFrame(THUMBNAIL_MAX_WIDTH,THUMBNAIL_MAX_HEIGHT); duration =(int)((thumbnailer as GstPlayer).StreamLength/1000); /* On Windows some formats report a 0 duration, try a last time with the reader */ if(duration == 0) duration = (int)reader.GetMetadata(MetadataType.Duration); thumbnailer.Dispose(); } height = (int) reader.GetMetadata(MetadataType.DimensionX); width = (int) reader.GetMetadata(MetadataType.DimensionY); reader.Close(); reader.Dispose(); return new LongoMatch.Store.MediaFile(filePath,duration*1000, (ushort)fps,hasAudio, hasVideo,VideoEncoderType, AudioEncoderType,(uint)height, (uint)width,preview); } catch(GLib.GException ex) { throw new Exception(Catalog.GetString("Invalid video file:")+"\n"+ex.Message); } }
public MediaFile DiscoverFile(string filePath, bool takeScreenshot = true) { long duration = 0; uint width, height, fps_n, fps_d, par_n, par_d, ret, fps = 0; string container, audio_codec, video_codec; bool has_audio, has_video; float par = 0; IntPtr container_ptr, audio_codec_ptr, video_codec_ptr; IntPtr error = IntPtr.Zero; LongoMatch.Core.Common.Image preview = null; MultimediaFactory factory; IFramesCapturer thumbnailer; ret = lgm_discover_uri (filePath, out duration, out width, out height, out fps_n, out fps_d, out par_n, out par_d, out container_ptr, out video_codec_ptr, out audio_codec_ptr, out error); if (error != IntPtr.Zero) throw new GLib.GException (error); if (ret != 0) { throw new Exception (Catalog.GetString ("Could not parse file:") + filePath); } has_audio = audio_codec_ptr != IntPtr.Zero; has_video = video_codec_ptr != IntPtr.Zero; container = GLib.Marshaller.PtrToStringGFree (container_ptr); audio_codec = GLib.Marshaller.PtrToStringGFree (audio_codec_ptr); video_codec = GLib.Marshaller.PtrToStringGFree (video_codec_ptr); /* From nanoseconds to milliseconds */ duration = duration / (1000 * 1000); if (has_video) { fps = fps_n / fps_d; par = (float)par_n / par_d; if (takeScreenshot) { factory = new MultimediaFactory (); thumbnailer = factory.GetFramesCapturer (); thumbnailer.Open (filePath); preview = thumbnailer.GetFrame (new Time { TotalSeconds = 2 }, false, THUMBNAIL_MAX_WIDTH, THUMBNAIL_MAX_HEIGHT); thumbnailer.Dispose (); } } return new LongoMatch.Core.Store.MediaFile (filePath, duration, (ushort)fps, has_audio, has_video, container, video_codec, audio_codec, width, height, par, preview, null); }
public static MediaFile GetMediaFile(string filePath) { int duration, fps=0, height=0, width=0; bool hasVideo, hasAudio; string audioCodec = "", videoCodec = ""; MultimediaFactory factory; IMetadataReader reader = null; try{ factory = new MultimediaFactory(); reader = factory.getMetadataReader(); reader.Open(filePath); duration = (int)reader.GetMetadata(MetadataType.Duration); hasVideo = (bool) reader.GetMetadata(MetadataType.HasVideo); hasAudio = (bool) reader.GetMetadata(MetadataType.HasAudio); if (hasAudio) audioCodec = (string) reader.GetMetadata(MetadataType.AudioEncoderType); if (hasVideo){ videoCodec = (string) reader.GetMetadata(MetadataType.VideoEncoderType); fps = (int) reader.GetMetadata(MetadataType.Fps); } height = (int) reader.GetMetadata(MetadataType.DimensionX); width = (int) reader.GetMetadata (MetadataType.DimensionY); return new MediaFile(filePath,duration*1000,(ushort)fps, hasAudio,hasVideo,videoCodec,audioCodec, (uint)height,(uint)width); } catch (GLib.GException ex){ throw new Exception (Catalog.GetString("Invalid video file:")+"\n"+ex.Message); } finally { reader.Close(); reader.Dispose(); } }
private void PlayerInit() { MultimediaFactory factory; Widget playerWidget; factory= new MultimediaFactory(); player = factory.GetPlayer(320,280); tickHandler = new LongoMatch.Video.Common.TickHandler(OnTick); player.Tick += tickHandler; player.StateChange += OnStateChanged; player.Eos += OnEndOfStream; player.Error += OnError; player.ReadyToSeek += OnReadyToSeek; playerWidget = (Widget)player; playerWidget.ButtonPressEvent += OnVideoboxButtonPressEvent; playerWidget.ScrollEvent += OnVideoboxScrollEvent; playerWidget.Show(); videobox.Add(playerWidget); }