コード例 #1
0
        public async Task StateChanged()
        {
            var media         = new Media(new Instance(), RealMediaPath, Media.FromType.FromPath);
            var tcs           = new TaskCompletionSource <bool>();
            var openingCalled = false;

            media.EventManager.StateChanged += (sender, args) =>
            {
                if (media.State == VLCState.Opening)
                {
                    openingCalled = true;
                    return;
                }
                Assert.AreEqual(VLCState.Playing, media.State);
                tcs.SetResult(true);
            };

            var mp = new MediaPlayer(media);

            mp.Play();
            await tcs.Task;

            Assert.True(tcs.Task.Result);
            Assert.True(openingCalled);
        }
コード例 #2
0
        public void SubItemTreeAdded()
        {
            var media = new Media(new Instance(), RealMediaPath, Media.FromType.FromPath);

            //TODO: Implement MediaList.cs
            Assert.Fail();
        }
コード例 #3
0
ファイル: MediaTests.cs プロジェクト: paulrouget/LibVLCSharp
        public void Duplicate()
        {
            var media     = new Media(new Instance(), new FileStream(Path.GetTempFileName(), FileMode.OpenOrCreate));
            var duplicate = media.Duplicate();

            Assert.AreNotEqual(duplicate.NativeReference, media.NativeReference);
        }
コード例 #4
0
ファイル: MediaTests.cs プロジェクト: paulrouget/LibVLCSharp
        public void CreateMedia()
        {
            var instance = new Instance();

            var media = new Media(instance, Path.GetTempFileName(), Media.FromType.FromPath);

            Assert.AreNotEqual(IntPtr.Zero, media.NativeReference);
        }
コード例 #5
0
ファイル: MediaTests.cs プロジェクト: paulrouget/LibVLCSharp
        public void ReleaseMedia()
        {
            var media = new Media(new Instance(), Path.GetTempFileName(), Media.FromType.FromPath);

            media.Dispose();

            Assert.AreEqual(IntPtr.Zero, media.NativeReference);
        }
コード例 #6
0
ファイル: MediaTests.cs プロジェクト: paulrouget/LibVLCSharp
        public void CreateMediaFromFileStream()
        {
            // TODO: fix this.
            var media = new Media(new Instance(), new FileStream(RealMediaPath, FileMode.Open, FileAccess.Read, FileShare.Read));

            media.Parse();
            Assert.NotZero(media.Tracks.First().Data.Audio.Channels);
        }
コード例 #7
0
ファイル: MediaTests.cs プロジェクト: paulrouget/LibVLCSharp
        public void SetMetadata()
        {
            var          media = new Media(new Instance(), Path.GetTempFileName(), Media.FromType.FromPath);
            const string test  = "test";

            media.SetMeta(Media.MetadataType.ShowName, test);
            Assert.True(media.SaveMeta());
            Assert.AreEqual(test, media.Meta(Media.MetadataType.ShowName));
        }
コード例 #8
0
        static void Main(string[] args)
        {
            var instance = new Instance();
            var media    = new Media(instance, "http://www.quirksmode.org/html5/videos/big_buck_bunny.mp4", Media.FromType.FromLocation);
            var mp       = new MediaPlayer(media);

            mp.Play();
            Console.ReadKey();
        }
コード例 #9
0
        public void FreedMedia()
        {
            var media       = new Media(new Instance(), RealMediaPath, Media.FromType.FromPath);
            var eventCalled = false;

            media.EventManager.MediaFreed += (sender, args) =>
            {
                eventCalled = true;
            };

            media.Dispose();

            Assert.True(eventCalled);
        }
コード例 #10
0
ファイル: MediaTests.cs プロジェクト: paulrouget/LibVLCSharp
        public void CreateRealMedia()
        {
            var instance = new Instance();
            var media    = new Media(instance, RealMediaPath, Media.FromType.FromPath);

            Assert.False(media.IsParsed);
            media.Parse();

            //await media.ParseAsync();
            Assert.True(media.IsParsed);
            Assert.NotZero(media.Duration);
            Assert.NotZero(media.Tracks.First().Data.Audio.Channels);
            Assert.AreEqual(Media.MediaParsedStatus.Done, media.ParsedStatus);
            Assert.AreEqual(Media.MediaType.File, media.Type);
        }
コード例 #11
0
        public void MetaChangedEventSubscribe()
        {
            var media              = new Media(new Instance(), Path.GetTempFileName(), Media.FromType.FromPath);
            var eventManager       = media.EventManager;
            var eventHandlerCalled = false;
            const Media.MetadataType description = Media.MetadataType.Description;

            eventManager.MetaChanged += (sender, args) =>
            {
                Assert.AreEqual(description, args.MetadataType);
                eventHandlerCalled = true;
            };
            media.SetMeta(Media.MetadataType.Description, "test");
            Assert.True(eventHandlerCalled);
        }
コード例 #12
0
        public async Task Play()
        {
            var instance = new Instance();
            var media    = new Media(instance, "http://www.quirksmode.org/html5/videos/big_buck_bunny.mp4", Media.FromType.FromLocation);
            var mp       = new MediaPlayer(media);
            var called   = false;

            mp.EventManager.Playing += (sender, args) =>
            {
                called = true;
            };
            mp.Play();
            await Task.Delay(5000);

            Assert.True(called);
            Assert.True(mp.IsPlaying);
        }
コード例 #13
0
        public void DurationChanged()
        {
            var  media    = new Media(new Instance(), RealMediaPath, Media.FromType.FromPath);
            var  called   = false;
            long duration = 0;

            media.EventManager.DurationChanged += (sender, args) =>
            {
                called   = true;
                duration = args.Duration;
            };

            media.Parse();

            Assert.True(called);
            Assert.NotZero(duration);
        }
コード例 #14
0
ファイル: testvlc.cs プロジェクト: rdp/vlc-1
        public static int Main(string[] args)
        {
            string[] argv = new string[]{
                "-vv", "-I", "dummy", "--plugin-path=../../modules"
            };

            Console.WriteLine ("Running on LibVLC {0} ({1})", VLC.Version,
                               VLC.ChangeSet);
            Console.WriteLine (" (compiled with {0})", VLC.Compiler);

            VLC vlc = new VLC (argv);
            foreach (string mrl in args)
            {
                Media media = new Media (vlc, mrl);
                Player player = new Player (media);

                DumpMedia (media);
                DumpMedia ((Media)media.Clone ());
                media.StateChanged += WriteMediaState;

                /*foreach (MetaType type in Enum.GetValues (typeof (MetaType)))
                {
                    string meta = media.GetMeta (type);
                    if (meta != null)
                        Console.WriteLine (" {0}: {1}", type, meta);
                }*/

                player.Play ();
                do
                {
                    DumpPlayer (player);
                    Sleep (500);
                }
                while (player.IsPlaying);
                player.Stop ();
                media.Dispose ();
                player.Dispose ();
            }

            vlc.Dispose ();
            return 0;
        }
コード例 #15
0
        public void SubItemAdded()
        {
            // FIXME
            var instance = new Instance();
            var media    = new Media(instance, RealMediaPath, Media.FromType.FromPath);
            var subItem  = new Media(instance, Path.GetTempFileName(), Media.FromType.FromPath);

            var eventManager       = media.EventManager;
            var eventHandlerCalled = false;

            eventManager.SubItemAdded += (sender, args) =>
            {
                Assert.AreEqual(subItem, args.SubItem);
                eventHandlerCalled = true;
            };
            media.SubItems.Lock();
            Assert.True(media.SubItems.AddMedia(subItem));
            media.SubItems.Unlock();
            Assert.True(eventHandlerCalled);
        }
コード例 #16
0
        public void AddAndRemoveMediaFromMediaList()
        {
            var instance    = new Instance();
            var mediaList   = new MediaList(instance);
            var media       = new Media(instance, Path.GetTempFileName(), Media.FromType.FromPath);
            var itemAdded   = false;
            var itemDeleted = false;

            mediaList.EventManager.ItemAdded   += (sender, args) => itemAdded = true;
            mediaList.EventManager.ItemDeleted += (sender, args) => itemDeleted = true;
            mediaList.Lock();
            mediaList.AddMedia(media);
            Assert.AreEqual(media, mediaList[0]);
            Assert.AreEqual(1, mediaList.Count);
            Assert.True(itemAdded);
            Assert.Zero(mediaList.IndexOf(media));
            mediaList.RemoveIndex(0);
            Assert.Zero(mediaList.Count);
            Assert.True(itemDeleted);
            mediaList.Unlock();
        }
コード例 #17
0
        public async Task TrackDescription()
        {
            var instance = new Instance();
            var mp       = new MediaPlayer(instance);
            var media    = new Media(instance, "http://www.quirksmode.org/html5/videos/big_buck_bunny.mp4", Media.FromType.FromLocation);
            var tcs      = new TaskCompletionSource <bool>();

            mp.Media = media;
            mp.Play();
            mp.EventManager.Playing += (sender, args) =>
            {
                Assert.Zero(mp.AudioTrack);
                var description = mp.AudioTrackDescription;
                Assert.True(mp.SetAudioTrack(description.First().Id));
                Assert.IsNotEmpty(description);
                tcs.SetResult(true);
            };
            await tcs.Task;

            Assert.True(tcs.Task.Result);
        }
コード例 #18
0
 /**
  * Creates a player object for a given a media.
  *
  * @param media media object
  */
 public Player(Media media)
 {
     this.media = media;
     handle     = LibVLC.PlayerCreateFromMedia(media.Handle, ex);
     Raise();
 }
コード例 #19
0
ファイル: MediaList.cs プロジェクト: paulrouget/LibVLCSharp
 /// <summary>
 /// Get subitems of media descriptor object.
 /// </summary>
 /// <param name="media"></param>
 public MediaList(Media media)
     : base(() => Native.LibVLCMediaSubitems(media.NativeReference), Native.LibVLCMediaListRelease)
 {
 }
コード例 #20
0
ファイル: MediaList.cs プロジェクト: paulrouget/LibVLCSharp
 /// <summary>
 /// Associate media instance with this media list instance. If another
 /// media instance was present it will be released. The
 /// MediaList lock should NOT be held upon entering this function.
 /// </summary>
 /// <param name="media">media instance to add</param>
 public void SetMedia(Media media)
 {
     Native.LibVLCMediaListSetMedia(NativeReference, media.NativeReference);
 }
コード例 #21
0
ファイル: MediaTests.cs プロジェクト: paulrouget/LibVLCSharp
        public void AddOption()
        {
            var media = new Media(new Instance(), new FileStream(Path.GetTempFileName(), FileMode.OpenOrCreate));

            media.AddOption("-sout-all");
        }
コード例 #22
0
ファイル: player.cs プロジェクト: rdp/vlc-1
        Media media; /**< Active media */

        #endregion Fields

        #region Constructors

        /**
         * Creates a player with no medias.
         * An input media will be needed before this media player can be used.
         *
         * @param instance VLC instance
         */
        public Player(VLC instance)
        {
            this.media = null;
            handle = LibVLC.PlayerCreate (instance.Handle, ex);
            Raise ();
        }
コード例 #23
0
ファイル: MediaTests.cs プロジェクト: paulrouget/LibVLCSharp
        public void CreateMediaFromStream()
        {
            var media = new Media(new Instance(), new FileStream(Path.GetTempFileName(), FileMode.OpenOrCreate));

            Assert.AreNotEqual(IntPtr.Zero, media.NativeReference);
        }
コード例 #24
0
ファイル: player.cs プロジェクト: rdp/vlc-1
 /**
  * Creates a player object for a given a media.
  *
  * @param media media object
  */
 public Player(Media media)
 {
     this.media = media;
     handle = LibVLC.PlayerCreateFromMedia (media.Handle, ex);
     Raise ();
 }
コード例 #25
0
 /**
  * Creates a player with no medias.
  * An input media will be needed before this media player can be used.
  *
  * @param instance VLC instance
  */
 public Player(VLC instance)
 {
     this.media = null;
     handle     = LibVLC.PlayerCreate(instance.Handle, ex);
     Raise();
 }
コード例 #26
0
ファイル: testvlc.cs プロジェクト: rdp/vlc-1
 private static void WriteMediaState(Media m, State s)
 {
     Console.WriteLine (" -> {0}", s);
 }
コード例 #27
0
ファイル: testvlc.cs プロジェクト: rdp/vlc-1
 private static void DumpMedia(Media m)
 {
     Console.WriteLine ("Media: {0} {1} (duration: {2}, {3}preparsed)",
                        m.State, m.Location, m.Duration,
                        m.IsPreparsed ? "" : "not ");
 }