예제 #1
0
        protected override void OnCreate(Bundle savedInstanceState)
        {
            TabLayoutResource = Resource.Layout.Tabbar;
            ToolbarResource   = Resource.Layout.Toolbar;

            base.OnCreate(savedInstanceState);
            global::LibVLCSharp.Shared.Core.Initialize();

            var config = new MediaConfiguration();

            config.EnableHardwareDecoding = true;

            Jammit.Forms.App.DataDirectory = Xamarin.Essentials.FileSystem.AppDataDirectory;

            // To prevent audo desync, use SoXR resampler.
            // See https://code.videolan.org/videolan/LibVLCSharp/issues/263#note_48330
            Jammit.Forms.App.PlayerFactory = async(media) => await System.Threading.Tasks.Task.Run(() =>
                                                                                                   new Audio.VlcJcfPlayer(media, new MediaConfiguration[] { config }, new string[] { "--audio-resampler=soxr" }));

            Jammit.Forms.App.MediaLoader = new Model.FileSystemJcfLoader(Xamarin.Essentials.FileSystem.AppDataDirectory);

            global::Xamarin.Forms.Forms.Init(this, savedInstanceState);

            global::Xamarin.Forms.MessagingCenter.Subscribe <Jammit.Forms.Views.SongPage>(this, "PreventPortrait", sender =>
            {
                RequestedOrientation = ScreenOrientation.Landscape;
            });

            global::Xamarin.Forms.MessagingCenter.Subscribe <Jammit.Forms.Views.SongPage>(this, "AllowLandScapePortrait", sender =>
            {
                RequestedOrientation = ScreenOrientation.Unspecified;
            });

            LoadApplication(new Jammit.Forms.App());
        }
예제 #2
0
 internal DatabaseFormatter(MediaConfiguration mediaConfiguration)
     : base(mediaConfiguration)
 {
     Settings = new DatabaseFormatterSettings();
     Columns = new DatabaseColumnCollection();
     Columns.ItemsInserted += OnColumnsInserted;
 }
예제 #3
0
        private async Task DisplayVideoDecoding()
        {
            var videoDecodings = new List <string>();

            videoDecodings.Add("Software decoding");
            videoDecodings.Add("Hardware decoding");

            var userSelection = await DisplayActionSheet("Video decodings", "Cancel", null,
                                                         videoDecodings.ToArray());

            if (!string.IsNullOrWhiteSpace(userSelection) &&
                videoDecodings.Any(x => x.Equals(userSelection)))
            {
                _firstTimePlaying = true;
                videoView.MediaPlayer.Stop();
                var media = new Media(videoView.LibVLC, _fd);
                if (userSelection.Equals(videoDecodings[0]))
                {
                    videoView.MediaPlayer.Play(media);
                }
                else
                {
                    var configuration = new MediaConfiguration();
                    configuration.EnableHardwareDecoding();
                    media.AddOption(configuration);

                    videoView.MediaPlayer.Play(media);
                }
            }
        }
예제 #4
0
        protected override void OnResume()
        {
            base.OnResume();

            _videoView = new VideoView(this);
            AddContentView(_videoView, new LinearLayout.LayoutParams(ViewGroup.LayoutParams.WrapContent, ViewGroup.LayoutParams.WrapContent));
            var media         = new Media(_videoView.LibVLC, "http://www.quirksmode.org/html5/videos/big_buck_bunny.mp4", Media.FromType.FromLocation);
            var configuration = new MediaConfiguration();

            configuration.EnableHardwareDecoding();
            media.AddOption(configuration);
            _videoView.MediaPlayer.Play(media);
        }
        public MediaPlayer GetMediaPlayer(string filePath)
        {
            var media = new Media(LibVLC, filePath);

            if (Settings.UseHardwareAcceleration)
            {
                var configuration = new MediaConfiguration();
                configuration.EnableHardwareDecoding();
                media.AddOption(configuration);
            }
            var mediaPlayer = new MediaPlayer(media);

            return(mediaPlayer);
        }
예제 #6
0
            protected override void OnCreate(Bundle savedInstanceState)
            {
                base.OnCreate(savedInstanceState);
                SetContentView(Resource.Layout.vlc_view);
                string link = Intent.GetStringExtra("link");

                source_link = Intent.GetStringExtra("source_link");
                _videoView  = new VideoView(this);
                AddContentView(_videoView, new LinearLayout.LayoutParams(ViewGroup.LayoutParams.WrapContent, ViewGroup.LayoutParams.WrapContent));
                var media         = new Media(_videoView.LibVLC, link, Media.FromType.FromLocation);
                var configuration = new MediaConfiguration();

                configuration.EnableHardwareDecoding();
                media.AddOption(configuration);
                _videoView.MediaPlayer.Play(media);
            }
예제 #7
0
        protected override void OnResume()
        {
            base.OnResume();
            _mVideoView = new VideoView(this);
            var lp = new LinearLayout.LayoutParams(ViewGroup.LayoutParams.WrapContent,
                                                   ViewGroup.LayoutParams.WrapContent);

            _mVideoWrapper.AddView(_mVideoView, lp);
            var media = new Media(_mVideoView.LibVLC, "rtsp://184.72.239.149/vod/mp4:BigBuckBunny_175k.mov",
                                  Media.FromType.FromLocation);
            var configuration = new MediaConfiguration();

            configuration.EnableHardwareDecoding();
            media.AddOption(configuration);
            _mVideoView.MediaPlayer.Play(media);
        }
예제 #8
0
        public MediaPlayer GetMediaPlayer(string filePath, List <string> options)
        {
            var media = new Media(LibVLC, filePath);

            if (Settings.UseHardwareAcceleration)
            {
                var configuration = new MediaConfiguration();
                configuration.EnableHardwareDecoding = true;
                media.AddOption(configuration);
            }
            foreach (var option in options)
            {
                media.AddOption(option);
            }
            var mediaPlayer = new MediaPlayer(media);

            return(mediaPlayer);
        }
예제 #9
0
        protected override void OnResume()
        {
            base.OnResume();

            Core.Initialize();

            _libVLC      = new LibVLC();
            _mediaPlayer = new MediaPlayer(_libVLC);

            _videoView = new VideoView(this)
            {
                MediaPlayer = _mediaPlayer
            };
            AddContentView(_videoView, new LinearLayout.LayoutParams(ViewGroup.LayoutParams.WrapContent, ViewGroup.LayoutParams.WrapContent));
            var media         = new Media(_libVLC, "https://download.blender.org/peach/bigbuckbunny_movies/BigBuckBunny_320x180.mp4", FromType.FromLocation);
            var configuration = new MediaConfiguration();

            configuration.EnableHardwareDecoding();
            media.AddOption(configuration);
            _videoView.MediaPlayer.Play(media);
        }
예제 #10
0
파일: Main.cs 프로젝트: Lunah12345/alerssis
        protected override void OnResume()
        {
            base.OnResume();
            Core.Initialize();
            var _libVLC      = new LibVLC();
            var _mediaPlayer = new MediaPlayer(_libVLC);
            var _videoView   = FindViewById <VideoView>(Resource.Id.videoView1);

            _videoView.MediaPlayer = _mediaPlayer;
            var mediaUri      = Android.Net.Uri.Parse("rtsp://*****:*****@190.117.54.230:554/ISAPI/Streaming/channels/101");
            var m             = new Media(_libVLC, mediaUri.ToString(), FromType.FromPath);
            var configuration = new MediaConfiguration();

            configuration.EnableHardwareDecoding = true;

            //m.AddOption(":fullscreen");
            m.AddOption(":codec=avcodec");
            m.AddOption(configuration);
            m.AddOption(":file-caching=1500");
            _mediaPlayer.Media = m;
            _videoView.MediaPlayer.Play(m);
        }
예제 #11
0
        private void btnPlayMedia_Click(object sender, EventArgs e)
        {
            log("btnPlayMedia_Click");

            mMediaInput = new MyMediaInput();

            MP4Streamer mp4Streamer = new MP4Streamer(mMediaInput);

            mp4StreamerThread = new Thread(mp4Streamer.DoWork);
            mp4StreamerThread.Start();

            mMedia = new Media(libVLC, mMediaInput);
            MediaConfiguration mediaConfiguration = new MediaConfiguration();

            mediaConfiguration.EnableHardwareDecoding = true;
            mediaConfiguration.NetworkCaching         = 150;
            mMedia.AddOption(mediaConfiguration);

            /*mMedia.AddOption(":clock-jitter=0");
             * mMedia.AddOption(":clock-synchro=0");*/
            videoView.MediaPlayer.Play(mMedia);
        }
예제 #12
0
        public Media GetMedia(StartupConfiguration startupConfiguration)
        {
            var media = new Media(LibVLC, startupConfiguration.FilePath);

            if (Settings.UseHardwareAcceleration)
            {
                var configuration = new MediaConfiguration();
                configuration.EnableHardwareDecoding = true;
                media.AddOption(configuration);
            }
            //if (!startupConfiguration.AutoPlay)
            //{
            //    media.AddOption(":start-paused");
            //}
            if (!string.IsNullOrWhiteSpace(Settings.MediaOption))
            {
                try
                {
                    media.AddOption(Settings.MediaOption);
                }
                catch (Exception ex)
                {
                    App.DebugLog(ex.ToString());
                }
            }
            if (startupConfiguration.IsFileSubtitlesSelected)
            {
                media.AddOption(startupConfiguration.SelectedSubtitlesFile.EncodingOption);
            }
            //media.AddOption(":freetype-font=/storage/emulated/0/Download/arial.ttf");
            //media.AddOption(":freetype-color=16711680");
            foreach (var sub in startupConfiguration.ExternalSubtitles)
            {
                media.AddSlave(MediaSlaveType.Subtitle, 0, sub.FileUrl);
            }

            return(media);
        }
예제 #13
0
 public void AddSimilar(int key, MediaConfiguration sourceId)
 {
     Enrich(key).Similar.Add(sourceId);
 }
예제 #14
0
        protected override void OnCreate(Bundle savedInstanceState)
        {
            TabLayoutResource = Resource.Layout.Tabbar;
            ToolbarResource   = Resource.Layout.Toolbar;

            base.OnCreate(savedInstanceState);

            // Keep screen on
            Window.AddFlags(
                WindowManagerFlags.KeepScreenOn |
                WindowManagerFlags.DismissKeyguard |
                WindowManagerFlags.ShowWhenLocked |
                WindowManagerFlags.TurnScreenOn
                );

            // Initialize LibVLCSharp
            global::LibVLCSharp.Shared.Core.Initialize();

            var config = new MediaConfiguration();

            config.EnableHardwareDecoding = true;

            Jammit.Forms.App.DataDirectory = Xamarin.Essentials.FileSystem.AppDataDirectory;

#if false
            // To prevent audo desync, use SoXR resampler.
            // See https://code.videolan.org/videolan/LibVLCSharp/issues/263#note_48330
            Jammit.Forms.App.PlayerFactory = async(media) => await System.Threading.Tasks.Task.Run(() =>
                                                                                                   new Audio.VlcJcfPlayer(media, new MediaConfiguration[] { config }, new string[] { }));
#else
            Jammit.Forms.App.PlayerFactory = async(media) => await System.Threading.Tasks.Task.Run(() =>
            {
                var player = new Audio.NAudioJcfPlayer(
                    media,
                    new Audio.AndroidWavePlayer {
                    DesiredLatency = 60, NumberOfBuffers = 2
                },
                    System.IO.Path.Combine(Xamarin.Essentials.FileSystem.AppDataDirectory, "Tracks"),
                    Forms.Resources.Assets.Stick);

                player.TimerAction = () =>
                {
                    Xamarin.Forms.Device.StartTimer(new TimeSpan(0, 0, 1), () =>
                    {
                        Xamarin.Forms.Device.BeginInvokeOnMainThread(() => player.NotifyPositionChanged());

                        return(player.State == Audio.PlaybackStatus.Playing);
                    });
                };

                return(player);
            });
#endif

            Jammit.Forms.App.MediaLoader = new Model.FileSystemJcfLoader(Xamarin.Essentials.FileSystem.AppDataDirectory);

            global::Xamarin.Forms.Forms.Init(this, savedInstanceState);

            global::Xamarin.Essentials.Platform.Init(this, savedInstanceState);

            global::Xamarin.Forms.MessagingCenter.Subscribe <Jammit.Forms.Views.SongPage>(this, "PreventPortrait", sender =>
            {
                RequestedOrientation = ScreenOrientation.Landscape;
            });

            global::Xamarin.Forms.MessagingCenter.Subscribe <Jammit.Forms.Views.SongPage>(this, "AllowLandScapePortrait", sender =>
            {
                RequestedOrientation = ScreenOrientation.Unspecified;
            });

            LoadApplication(new Jammit.Forms.App());
        }
예제 #15
0
 protected Formatter(MediaConfiguration mediaConfiguration)
     : this()
 {
     if (mediaConfiguration == null) throw new ArgumentNullException("mediaConfiguration");
     MediaConfiguration = mediaConfiguration;
 }
예제 #16
0
 internal GridFormatter(MediaConfiguration mediaConfiguration)
     : base(mediaConfiguration)
 {
     Columns = new GridColumnCollection();
     Columns.ItemsInserted += OnColumnsInserted;
 }
예제 #17
0
 public void AddRelated(int key, MediaConfiguration sourceId)
 {
     Enrich(key).Related.Add(sourceId);
 }