Inheritance: IMultimediaToolkit
Exemple #1
0
        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);
            }
        }
Exemple #4
0
        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);
        }
Exemple #5
0
        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);
        }