private void m_MetaChanged(MediaBase sender, VlcEventArgs <Metadatas> e)
 {
     Dispatcher.BeginInvoke(new Action(async() =>
     {
         try
         {
             var title = _vlc.Media?.Metadatas?.Title;
             if (string.IsNullOrEmpty(title))
             {
                 return;
             }
             var txt = Encoding.UTF8.GetString(Encoding.Default.GetBytes(title));
             if (Uri.IsWellFormedUriString(txt, UriKind.Absolute))
             {
                 return;
             }
             if (txt?.Length < 320)
             {
                 await Send("nowplaying", txt);
             }
         }
         catch
         {
             //Collection was modified; enumeration operation may not execute.
         }
     }), DispatcherPriority.Background);
 }
        private async void M_MediaSubItemAdded(MediaBase sender, VlcEventArgs <MediaBase> e)
        {
            _subCounter++;
            await Send("navigatable", _subCounter > 2);

            SetHandlersForMedia(e.Data);
        }
예제 #3
0
 private void media_StateChanged(MediaBase sender, VlcEventArgs <Vlc.DotNet.Core.Interops.Signatures.LibVlc.Media.States> e)
 {
     if (e.Data == Vlc.DotNet.Core.Interops.Signatures.LibVlc.Media.States.Stopped)
     {
         this.btn_play.Content = "\uf04b";
     }
     else if (e.Data == Vlc.DotNet.Core.Interops.Signatures.LibVlc.Media.States.Paused)
     {
         if (this.MediaState == MTC_Player.MediaState.Playing)
         {
             if (sender.Duration.TotalSeconds - this.durationMedia.TotalSeconds < 1)
             {
                 myVlcControl.Position = 0f;
                 myVlcControl.Play();
             }
             else
             {
                 this.btn_play.Content = "\uf04b";
                 myVlcControl.Stop();
             }
         }
     }
     else if (e.Data == Vlc.DotNet.Core.Interops.Signatures.LibVlc.Media.States.Playing)
     {
         this.btn_play.Content = "\uf04c";
     }
 }
        void SetHandlersForMedia(MediaBase media)
        {
            media.MediaSubItemAdded += M_MediaSubItemAdded;
            media.MetaChanged       += m_MetaChanged;
            media.StateChanged      += (oo, ee) => Dispatcher.BeginInvoke(new Action(async() =>
            {
                switch (media.State)
                {
                case States.Playing:
                    try
                    {
                        if (_currentMedia?.SubItems.Count > 0)
                        {
                            var m   = (LocationMedia)media;
                            var lst = ((LocationMedia)_currentMedia).SubItems;
                            if (lst.Count > 1 && lst.Any(mm => mm.MRL == m.MRL))
                            {
                                await Send("chapterchanged", lst.IndexOf(lst.First(mm => mm.MRL == m.MRL)) + 1);
                            }
                        }
                        _hasSubtitles = _vlc.VideoProperties.SpuDescription != null &&
                                        _vlc.VideoProperties.SpuDescription.Next != null;
                    }
                    catch
                    {
                    }
                    await Send("playing", "");
                    break;

                case States.Opening:
                    await Send("opening");
                    break;
                }
            }), DispatcherPriority.Background);
        }
예제 #5
0
        public async Task <MediaBase> GetMediaByIDAsync(string id)
        {
            var message = await m_client.GetAsync("https://api.themoviedb.org/3/tv/" + id + "?api_key=295f15628e2e84110ce9197ae94e652b");

            JObject   json  = JObject.Parse(await message.Content.ReadAsStringAsync());
            MediaBase movie = await ParseMediaFromJsonAsync(json, false);

            return(movie);
        }
예제 #6
0
        public async Task <IActionResult> Index()
        {
            #region Cache Response

            var existingMovies = await GetResponseAndSaveToCache(new GetExistingMoviesRequest()
            {
                Amount = _takeAmount
            });

            var radarrHistory = await GetResponseAndSaveToCache(new GetHistoryRequest { Order = Order.desc, Page = 1, PageSize = 20 });

            var latestEpisode = await GetResponseAndSaveToCache(new GetLatestEpisodeRequest()
            {
                Order = Order.desc, PageSize = 1
            });

            #endregion

            var first = new List <HistoryBase>()
            {
                radarrHistory.History.Records.FirstOrDefault(),
                latestEpisode.History.Records.FirstOrDefault()
            }.OrderByDescending(x => x.Date).FirstOrDefault();

            var lastUpdated = new MediaBase();

            if (first is Domain.API_Responses.Radarr.v3.Record)
            {
                var latest = await _mediator.Send(new GetSingleExistingMovieRequest {
                    RadarrMovieId = radarrHistory.History.Records.FirstOrDefault(x => x.EventType.Equals(ApiConstants.Imported)).MovieId.ToString()
                });

                lastUpdated = latest.Movie as MediaBase;
            }
            else
            {
                var latest = await _mediator.Send(new GetSingleSeriesRequest(latestEpisode.History.Records.FirstOrDefault(x => x.EventType.Equals(ApiConstants.Imported)).SeriesId));

                lastUpdated = latest.TvShow as MediaBase;
            }

            var model = new IndexViewModel()
            {
                LatestMovie  = lastUpdated,
                LatestSeries = latestEpisode.History,
                PartialView  = new IndexListPartialViewModel
                {
                    Movies      = existingMovies.Movies.Take(_takeAmount),
                    TotalPages  = existingMovies.TotalPages,
                    CurrentPage = existingMovies.CurrentPage,
                }
            };

            return(View(model));
        }
예제 #7
0
        /// <summary>
        /// Called by <see cref="VlcControl.Media"/> when the media information was parsed.
        /// </summary>
        /// <param name="sender">Event sending media. </param>
        /// <param name="e">VLC event arguments. </param>
        private void MediaOnParsedChanged(MediaBase sender, VlcEventArgs <int> e)
        {
            textBlock.Text = string.Format(
                "Duration: {0:00}:{1:00}:{2:00}",
                myVlcControl.Media.Duration.Hours,
                myVlcControl.Media.Duration.Minutes,
                myVlcControl.Media.Duration.Seconds);

            sliderVolume.Value     = myVlcControl.AudioProperties.Volume;
            checkboxMute.IsChecked = myVlcControl.AudioProperties.IsMute;
        }
예제 #8
0
        private static void LoadMediaBase(MediaBase entity, Media media)
        {
            entity.Id             = media.Id;
            entity.ParentId       = media.ParentId;
            entity.CreateDateTime = media.CreateDateTime;
            entity.IsTrashed      = media.IsTrashed;

            entity.FileExtension      = media.getProperty("umbracoExtension").Value.ToString();
            entity.RelativePathToFile = media.HasProperty("umbracoFile") ? media.getProperty("umbracoFile").Value.ToString() : string.Empty;
            entity.FileSize           = Convert.ToInt64(media.getProperty("umbracoBytes").Value.ToString());
        }
예제 #9
0
 public void baseMedia()
 {
     if (this.LocalFile != null)
     {
         this._media = new PathMedia(this.LocalFile.FullName);
     }
     else if (this.TypeMedia.Code == "URL")
     {
         this._media = new LocationMedia(this.Url);
     }
 }
예제 #10
0
        private bool InternalExecute(MediaBase inputMedia)
        {
            Debug.WriteLine(this, "Loudness operation started");
            string Params = $"-nostats -i \"{inputMedia.FullPath}\" -ss {MeasureStart} -t {(MeasureDuration == TimeSpan.Zero ? inputMedia.DurationPlay : MeasureDuration)} -filter_complex ebur128=peak=sample -f null -";

            if (RunProcess(Params))
            {
                Debug.WriteLine(this, "Loudness operation succeed");
                OperationStatus = FileOperationStatus.Finished;
                return(true);
            }
            Debug.WriteLine("FFmpeg rewraper Execute(): Failed for {0}. Command line was {1}", Source, Params);
            return(false);
        }
예제 #11
0
    void Awake()
    {
        DontDestroyOnLoad(gameObject);

                #if UNITY_EDITOR
        _media = gameObject.AddComponent <MediaStandalone>();
                #elif UNITY_ANDROID
        _media = gameObject.AddComponent <MediaAndroid>();
                #elif UNITY_IOS
        _media = gameObject.AddComponent <MediaIOS>();
                #elif UNITY_WEBGL
        _media = gameObject.AddComponent <MediaWebGL>();
                #else
        Debug.LogError("NOT IMPLEMENTED");
                #endif
    }
예제 #12
0
        void media_StateChanged(MediaBase sender, VlcEventArgs <Vlc.DotNet.Core.Interops.Signatures.LibVlc.Media.States> e)
        {
            switch (e.Data)
            {
            case Vlc.DotNet.Core.Interops.Signatures.LibVlc.Media.States.Buffering:
                LoadingVisual.Visibility = Visibility.Visible;
                break;

            case Vlc.DotNet.Core.Interops.Signatures.LibVlc.Media.States.Playing:
                LoadingVisual.Visibility = Visibility.Collapsed;
                break;

            case Vlc.DotNet.Core.Interops.Signatures.LibVlc.Media.States.NothingSpecial:
                break;
            }
        }
예제 #13
0
        private async Task <MediaBase> ParseMediaFromJsonAsync(JObject json, List <MediaBase> mediaList = null)
        {
            await UpdateAuthTokenAsync();

            string id      = json["id"].ToString();
            var    message = await m_client.GetAsync($"https://api.thetvdb.com/series/{id}");

            JObject result = JObject.Parse(await message.Content.ReadAsStringAsync());

            result = JObject.Parse(result["data"].ToString());
            if (!result.ContainsKey("id"))
            {
                return(null);
            }
            string tvdbid = result["id"].ToString();
            JArray genres = JArray.Parse(result["genre"].ToString());

            foreach (JToken genre in genres.Children())
            {
                if (genre.ToString() == "Anime")
                {
                    return(null);
                }
            }
            if (!await m_indexer.DoesShowExistAsync(tvdbid))
            {
                return(null);
            }

            if (tvdbid == null || tvdbid == string.Empty)
            {
                return(null);
            }
            string posterPath = result["poster"].ToString();

            if (posterPath == null || posterPath == string.Empty)
            {
                return(null);
            }
            MediaBase media = new MediaBase(result["seriesName"].ToString(), result["overview"].ToString(), m_basePosterURL + posterPath, id, tvdbid);

            if (mediaList != null)
            {
                mediaList.Add(media);
            }
            return(media);
        }
예제 #14
0
 private void PlayMedia(MediaBase media)
 {
     if (media != null)
     {
         if (myVlcControl.Medias != null && myVlcControl.Medias.Count > 0)
         {
             myVlcControl.Medias.Clear();
         }
         media.StateChanged  -= media_StateChanged;
         media.StateChanged  += media_StateChanged;
         media.ParsedChanged -= media_ParsedChanged;
         media.ParsedChanged += media_ParsedChanged;
         myVlcControl.Media   = media;
         myVlcControl.Play();
         this.MediaState = MTC_Player.MediaState.Playing;
     }
 }
예제 #15
0
        public string SaveStreamToMediaService(Stream stream, string suffix, string extension, string mimeType)
        {
            var saveName = string.Format(@"{0}_{1}.{2}", DateTime.Now.ToString("yyyyMMddHHmmssfffffff"), suffix, extension);

            var mediaBase = new MediaBase
            {
                FileName = saveName,
                FileSize = stream.Length,
                MediaOwner = _applicationId,
                Title = Path.GetFileNameWithoutExtension(saveName),
                FileType = FileType.Image
            };

            var guid = _mediaStoreClient.SaveFile(_applicationId, null, saveName, stream.Length, mediaBase, stream);

            return string.Format(@"http://m.{0}.com/File/{1}?mimeType={2}", _mediaServiceEnvironment, guid, mimeType);
        }
 private CasparItem _getItem(MediaBase media, VideoLayer videolayer, long seek)
 {
     if (media != null && media.MediaType == TMediaType.Movie)
     {
         CasparItem item = new CasparItem(string.Empty);
         item.Clipname           = $"\"{(media is ServerMedia ? Path.GetFileNameWithoutExtension(media.FileName) : media.FullPath)}\"";
         item.ChannelLayout      = ChannelLayout.Stereo;
         item.VideoLayer         = (int)videolayer;
         item.Seek               = (int)seek;
         item.FieldOrderInverted = media.FieldOrderInverted;
         return(item);
     }
     else
     {
         return(null);
     }
 }
예제 #17
0
        private async Task <MediaBase> ParseMediaFromJsonAsync(JObject json, bool checkDownload, List <MediaBase> mediaList = null)
        {
            string id      = json["id"].ToString();
            var    message = await m_client.GetAsync($"https://api.themoviedb.org/3/tv/{id}/external_ids?api_key=295f15628e2e84110ce9197ae94e652b");

            JObject result = JObject.Parse(await message.Content.ReadAsStringAsync());

            if (!result.ContainsKey("tvdb_id"))
            {
                return(null);
            }
            string tvdbid = result["tvdb_id"].ToString();

            if (tvdbid == null || tvdbid == string.Empty)
            {
                return(null);
            }
            bool?isAnime = await m_tvdbInfo.IsAnimeAsync(tvdbid);

            if (!isAnime.HasValue)
            {
                return(null);
            }
            if (isAnime.Value != true)
            {
                return(null);
            }
            if (checkDownload && !await m_indexer.DoesShowExistAsync(tvdbid))
            {
                return(null);
            }
            string posterPath = json["poster_path"].ToString();

            if (posterPath == null || posterPath == string.Empty)
            {
                return(null);
            }
            MediaBase media = new MediaBase(json["name"].ToString(), "", m_basePosterURL + json["poster_path"].ToString(), id, tvdbid);

            if (mediaList != null)
            {
                mediaList.Add(media);
            }
            return(media);
        }
        public bool Load(MediaBase media, VideoLayer videolayer, long seek, long duration)
        {
            var channel = _casparChannel;

            if (CheckConnected(channel) &&
                media != null)
            {
                CasparItem item = _getItem(media, videolayer, seek);
                if (item != null)
                {
                    item.Length = (int)duration;
                    channel.Load(item);
                    Event removed;
                    _visible.TryRemove(videolayer, out removed);
                    _loadedNext.TryRemove(videolayer, out removed);
                    Debug.WriteLine("CasparLoad media {0} Layer {1} Seek {2}", media, videolayer, seek);
                    return(true);
                }
            }
            return(false);
        }
예제 #19
0
        public void Play(MediaBase media)
        {
            if (DesignMode)
            {
                return;
            }

            //Initialize a default VlcManager
            if (myVlcManager == null)
            {
                myVlcManager = new VlcManager();
            }
            InitVlcMediaPlayer();
            if (media.Initialize(myVlcManager.VlcClient) == IntPtr.Zero)
            {
                return;
            }

            LibVlcMethods.libvlc_media_player_set_media(VlcMediaPlayer, media.VlcMedia);
            LibVlcMethods.libvlc_media_player_play(VlcMediaPlayer);
        }
    void testLocalPhoto2()
    {
        object    textureObj = Resources.Load("test2", typeof(Texture2D));
        Texture2D texture    = (Texture2D)textureObj;

        //texture.anisoLevel = 1;
        //texture.filterMode = FilterMode.Bilinear;
        //texture.wrapMode = TextureWrapMode.Clamp;

        //scale to small size
        int aScaleSize = MediaBase.getAScaleSize(texture.width);

        TextureScale.Bilinear(texture, texture.width / aScaleSize, texture.height / aScaleSize);

        JpegInfo jpi   = ExifReader.ReadJpeg(texture.EncodeToJPG(), "Foo");
        int      angle = 0;

        switch (jpi.Orientation)
        {
        case ExifOrientation.TopLeft:
            break;

        case ExifOrientation.TopRight:
            angle = -90;
            break;

        case ExifOrientation.BottomLeft:
            angle = 90;
            break;

        case ExifOrientation.BottomRight:
            angle = 180;
            break;
        }
        texture = TextureRotate.RotateImage(texture, angle);

        Sprite picture = Sprite.Create(texture, new Rect(0, 0, texture.width, texture.height), Vector2.zero, 1);

        PictureLoaded(true, "", picture);
    }
예제 #21
0
        private void OnMediaStateChange(MediaBase sender, Vlc.DotNet.Core.VlcEventArgs <Vlc.DotNet.Core.Interops.Signatures.LibVlc.Media.States> e)
        {
            if (e.Data == Vlc.DotNet.Core.Interops.Signatures.LibVlc.Media.States.Playing)
            {
                if (!initialized)
                {
                    if (media.Duration.TotalMilliseconds > 0)
                    {
                        if (!Autoplay)
                        {
                            vlc.Pause();
                        }
                        else
                        {
                            rect.Visibility = System.Windows.Visibility.Hidden;
                        }

                        durationMilliseconds = (float)media.Duration.TotalMilliseconds;
                        initialized          = true;
                        OnMediaLoaded();
                    }
                    else if (media.SubItems.Count > 0)
                    {
                        var subItems = media.SubItems;
                        media.StateChanged       -= OnMediaStateChange;
                        subItems[0].StateChanged += OnMediaStateChange;
                        media     = subItems[0];
                        vlc.Media = subItems[0];
                        vlc.Play();
                    }
                    else
                    {
                        OnMediaFailed();
                    }
                }
            }
        }
예제 #22
0
        public async Task ProcessMediaAsync(MediaBase media, int season, int episode, bool restore = false)
        {
            MediaFile file = new MediaFile(media, season, episode);

            file.IsProcessing = true;
            m_data.AddMedia(file);
            if (!await m_database.MediaExistsAsync(media.SearchID, season, episode))
            {
                m_database.AddMedia(media.SearchID, season, episode);
            }
            foreach (IMediaService service in m_services)
            {
                await service.ProcessMediaAsync(file, restore);

                while (!file.IsFinishedProcessing)
                {
                    if (file.ShouldStopAllProcessing)
                    {
                        Console.WriteLine($"{service.GetType().Name} has stopped all further processing of this media");
                        return;
                    }
                    await Task.Delay(100);
                }
            }
            file.Complete();
            file.IsProcessing = false;
            m_database.RemoveMedia(media.SearchID, season, episode);
            m_localDatabase.AddMedia($"{media.ID}", season, episode, file.FilePath);
            var p = new Process();

            p.StartInfo = new ProcessStartInfo(file.FilePath)
            {
                UseShellExecute = true
            };
            p.Start();
        }
예제 #23
0
 private void PlayMedia(MediaBase media)
 {
     if (media != null)
     {
         if (myVlcControl.Medias != null && myVlcControl.Medias.Count > 0)
             myVlcControl.Medias.Clear();
         media.StateChanged -= media_StateChanged;
         media.StateChanged += media_StateChanged;
         media.ParsedChanged -= media_ParsedChanged;
         media.ParsedChanged += media_ParsedChanged;
         myVlcControl.Media = media;
         myVlcControl.Play();
         this.MediaState = MTC_Player.MediaState.Playing;
     }
 }
예제 #24
0
 public MediaFile(MediaBase media, int season, int episode)
 {
     Media   = media;
     Season  = season;
     Episode = episode;
 }
예제 #25
0
 /// <summary>
 /// Play the media
 /// </summary>
 /// <param name="media">Media to play</param>
 public void Play(MediaBase media)
 {
     Media = media;
     Play();
 }
예제 #26
0
        private bool Encode(IngestDirectory directory, string outFile)
        {
            Debug.WriteLine(this, "Export encode started");
            AddOutputMessage($"Encode started to file {outFile}");
            StringBuilder files = new StringBuilder();
            int           index = 0;
            List <string> complexFilterElements       = new List <string>();
            StringBuilder overlayOutputs              = new StringBuilder();
            List <MediaExportDescription> exportMedia = _exportMediaList.ToList();
            TimeSpan startTimecode    = exportMedia.First().StartTC;
            bool     isXdcamDirectory = directory.Kind == TIngestDirectoryKind.XDCAM;
            VideoFormatDescription outputFormatDesc = VideoFormatDescription.Descriptions[isXdcamDirectory || directory.ExportContainerFormat == TMovieContainerFormat.mxf ? TVideoFormat.PAL : directory.ExportVideoFormat];
            string scaleFilter = $"scale={outputFormatDesc.ImageSize.Width}:{outputFormatDesc.ImageSize.Height}:interl=-1";

            foreach (var e in exportMedia)
            {
                MediaBase media = e.Media as MediaBase;
                if (media != null)
                {
                    files.AppendFormat(System.Globalization.CultureInfo.InvariantCulture, " -ss {0} -t {1} -i \"{2}\"", (e.StartTC - media.TcStart).TotalSeconds, e.Duration.TotalSeconds, media.FullPath);
                    string        videoOutputName  = $"[v{index}]";
                    List <string> itemVideoFilters = new List <string>();
                    if (media.HasExtraLines)
                    {
                        itemVideoFilters.Add("crop=720:576:0:32");
                    }
                    itemVideoFilters.Add(media.FormatDescription().IsWideScreen ? "setdar=dar=16/9" : "setdar=dar=4/3");
                    itemVideoFilters.Add(scaleFilter);
                    complexFilterElements.Add($"[{index}]{string.Join(",", itemVideoFilters)}{videoOutputName}");
                    int audioIndex = index;
                    complexFilterElements.Add(string.Format(System.Globalization.CultureInfo.InvariantCulture, "[{0}]volume={1:F3}dB[a{0}]", audioIndex, e.AudioVolume));
                    index++;
                    var logos = e.Logos.ToArray();
                    for (int i = 0; i < logos.Length; i++)
                    {
                        if (logos[i] is MediaBase logo)
                        {
                            files.Append($" -i \"{logo.FullPath}\"");
                            string newOutputName = $"[v{index}]";
                            complexFilterElements.Add($"{videoOutputName}[{index}]overlay{newOutputName}");
                            videoOutputName = newOutputName;
                            index++;
                        }
                    }
                    overlayOutputs.AppendFormat("{0}[a{1}]", videoOutputName, audioIndex);
                }
            }
            if (isXdcamDirectory || directory.ExportContainerFormat == TMovieContainerFormat.mxf)
            {
                if (MXFVideoExportFormat == TmXFVideoExportFormat.DV25)
                {
                    complexFilterElements.Add(string.Format("{0}concat=n={1}:v=1:a=1[v][p]", string.Join(string.Empty, overlayOutputs), exportMedia.Count));
                }
                else
                {
                    complexFilterElements.Add(string.Format("{0}concat=n={1}:v=1:a=1[vr][p], [vr]{2}[v]", string.Join(string.Empty, overlayOutputs), exportMedia.Count, D10PadFilter));
                }
            }
            else
            {
                complexFilterElements.Add(string.Format("{0}concat=n={1}:v=1:a=1[v][p]", string.Join(string.Empty, overlayOutputs), exportMedia.Count));
            }
            complexFilterElements.Add("[p]apad=pad_len=1024[a]");
            string complexFilter = complexFilterElements.Count > 0 ?
                                   string.Format(" -filter_complex \"{0}\"", string.Join(", ", complexFilterElements)) :
                                   string.Empty;
            string command = string.Format(System.Globalization.CultureInfo.InvariantCulture,
                                           "{0}{1} -map \"[v]\" -map \"[a]\" {2} -timecode {3}{4} -shortest -f {5} -y \"{6}\"",
                                           //0
                                           files.ToString(),
                                           //1
                                           complexFilter,
                                           //2
                                           isXdcamDirectory || directory.ExportContainerFormat == TMovieContainerFormat.mxf ?
                                           String.Format(System.Globalization.CultureInfo.InvariantCulture, "{0} {1}",
                                                         MXFVideoExportFormat == TmXFVideoExportFormat.DV25 ? D10PalDv25
                            : MXFVideoExportFormat == TmXFVideoExportFormat.IMX30 ? D10PalImx30
                            : MXFVideoExportFormat == TmXFVideoExportFormat.IMX40 ? D10PalImx40
                            : D10PalImx50
                                                         ,
                                                         MXFAudioExportFormat == TmXFAudioExportFormat.Channels4Bits24 ? Pcm24Le4Ch
                            : MXFAudioExportFormat == TmXFAudioExportFormat.Channels4Bits16 ? Pcm16Le4Ch
                            : Pcm16Le8Ch)
                    :
                                           directory.ExportParams,
                                           //3
                                           startTimecode.ToSMPTETimecodeString(VideoFormatDescription.Descriptions[Dest.VideoFormat].FrameRate),
                                           //4
                                           isXdcamDirectory || directory.ExportContainerFormat == TMovieContainerFormat.mxf ? $" -metadata creation_time=\"{DateTime.UtcNow.ToString("o")}\"" : string.Empty,
                                           //5
                                           (isXdcamDirectory || directory.ExportContainerFormat == TMovieContainerFormat.mxf) && MXFVideoExportFormat != TmXFVideoExportFormat.DV25 ? "mxf_d10" : directory.ExportContainerFormat.ToString(),
                                           outFile);

            if (RunProcess(command))
            {
                Debug.WriteLine(this, "Export encode succeed");
                AddOutputMessage("Encode finished successfully");
                return(true);
            }
            Debug.WriteLine("FFmpeg Encode(): Failed for {0}", outFile);
            return(false);
        }
예제 #27
0
 private void media_ParsedChanged(MediaBase sender, Vlc.DotNet.Core.VlcEventArgs <int> e)
 {
 }
예제 #28
0
        internal void Previous()
        {
            if (!Random)
                UpdateMediaList();
            else
                UpdateRandomMediaList();

            VlcMediaCollection collection = Random ? mediaRandomList : mediaList;

            MediaBase media;

            for (int cpt = 0; cpt < 2; cpt++)
            {
                media = collection.LastOrDefault(m => m.Status == MediaStates.Played);
                if (media != null)
                {
                    if (SelectedMedia != null)
                    {
                        if (MediaItems.Contains(SelectedMedia))
                            SelectedMedia.Status = collection.IndexOf(media) < collection.IndexOf(SelectedMedia) ? MediaStates.NotPlayed : MediaStates.Played;
                        else
                            collection.Remove(SelectedMedia);
                    }
                    media.Status = MediaStates.Selected;
                    SelectedMedia = media;
                    break;
                }
                if (!Loop)
                    break;
                if (cpt == 0)
                    collection.
                        Where(m => m.Status == MediaStates.NotPlayed).ToList().
                        ForEach(m => m.Status = MediaStates.Played);
            }
        }
예제 #29
0
        internal void Next()
        {
            if (!Random)
                UpdateMediaList();
            else
                UpdateRandomMediaList();

            VlcMediaCollection collection = Random ? mediaRandomList : mediaList;

            if (Loop && SelectedMedia != null && collection.IndexOf(SelectedMedia) == collection.Count - 1)
            {
                collection.ToList().ForEach(m => m.Status = MediaStates.NotPlayed);
            }

            MediaBase media = collection.FirstOrDefault(m => m.Status == MediaStates.NotPlayed);

            if (media != null)
            {
                if (SelectedMedia != null)
                {
                    if (SelectedMedia.Status == MediaStates.SelectedButDisabled)
                        collection.Remove(SelectedMedia);
                    else
                        SelectedMedia.Status = MediaStates.Played;
                }
                media.Status = MediaStates.Selected;
                SelectedMedia = media;
            }
        }
    IEnumerator LoadPictureCoroutine(string path)
    {
        WWW www = new WWW(path);

        if (www.size == 0)
        {
            showlog("size 0");
            yield return(new WaitForSeconds(1.0f));

            LoadPicture(path);
        }
        else if (!string.IsNullOrEmpty(www.error))
        {
            showlog("error");
            PictureLoaded(false, null, null);
        }
        else
        {
            //ExifLib.JpegInfo jpi = ExifLib.ExifReader.ReadJpeg(www.bytes, "test2.jpg");
            //showlog("EXIF: " + jpi.Orientation);

            //Texture2D texture = new Texture2D(www.texture.width, www.texture.height, TextureFormat.RGB24, false);

            //texture.anisoLevel = 1;
            //texture.filterMode = FilterMode.Bilinear;
            //texture.wrapMode = TextureWrapMode.Clamp;

            //www.LoadImageIntoTexture(texture);

            //TextureScale.Bilinear(texture, texture.width / 5, texture.height / 5);
            //texture = TextureRotate.RotateImage(texture, -90);


            Texture2D texture = new Texture2D(www.texture.width, www.texture.height, TextureFormat.RGB24, false);

            texture.anisoLevel = 1;
            texture.filterMode = FilterMode.Bilinear;
            texture.wrapMode   = TextureWrapMode.Clamp;

            www.LoadImageIntoTexture(texture);

            //scale to small size
            int aScaleSize = MediaBase.getAScaleSize(texture.width);
            TextureScale.Bilinear(texture, texture.width / aScaleSize, texture.height / aScaleSize);

            JpegInfo jpi   = ExifReader.ReadJpeg(www.bytes, "Foo");
            int      angle = 0;
            switch (jpi.Orientation)
            {
            case ExifOrientation.TopLeft:
                break;

            case ExifOrientation.TopRight:
                angle = -90;
                break;

            case ExifOrientation.BottomLeft:
                angle = 90;
                break;

            case ExifOrientation.BottomRight:
                angle = 180;
                break;
            }
            texture = TextureRotate.RotateImage(texture, angle);

            Sprite picture = Sprite.Create(texture, new Rect(0, 0, texture.width, texture.height), Vector2.zero, 1);
            PictureLoaded(true, path, picture);
        }
    }
예제 #31
0
파일: VlcContext.cs 프로젝트: hjlfmy/Rubezh
        /// <summary>
        /// Close of LibVlc and VlcControls instance
        /// </summary>
        public static void CloseAll()
        {
            if (HandleManager != null)
            {
                var mediaBases = new MediaBase[HandleManager.MediasHandles.Count];
                HandleManager.MediasHandles.Keys.CopyTo(mediaBases, 0);
                foreach (MediaBase mediaBase in mediaBases)
                {
                    mediaBase.Dispose();
                }

                if (HandleManager.MediaPlayerHandles != null)
                {
                    var mediaPlayers = new IVlcControl[HandleManager.MediaPlayerHandles.Count];
                    HandleManager.MediaPlayerHandles.Keys.CopyTo(mediaPlayers, 0);

                    foreach (IVlcControl mediaPlayerHandle in mediaPlayers)
                    {
                        mediaPlayerHandle.Dispose();
                    }
                    HandleManager.MediaPlayerHandles.Clear();
                }
                if (InteropManager != null)
                    InteropManager.ReleaseInstance.Invoke(HandleManager.LibVlcHandle);
                HandleManager.LibVlcHandle = IntPtr.Zero;
            }
            ErrorHandling = null;
            if (InteropManager == null)
                return;
            InteropManager.Dispose();
            InteropManager = null;
            IsInitialized = false;
        }
        /// <summary>
        /// Called by <see cref="VlcControl.MOVIES"/> when the media information was parsed. 
        /// </summary>
        /// <param name="sender">Event sending media. </param>
        /// <param name="e">VLC event arguments. </param>
        private void MediaOnParsedChanged(MediaBase sender, VlcEventArgs<int> e)
        {
            textBlock.Text = string.Format(
                "Duration: {0:00}:{1:00}:{2:00}",
                myVlcControl.Media.Duration.Hours,
                myVlcControl.Media.Duration.Minutes,
                myVlcControl.Media.Duration.Seconds);

            sliderVolume.Value = myVlcControl.AudioProperties.Volume;
            checkboxMute.IsChecked = myVlcControl.AudioProperties.IsMute;
        }
예제 #33
0
 void media_ParsedChanged(MediaBase sender, VlcEventArgs<int> e)
 {
     this.durationMedia = TimeSpan.Zero;
 }
예제 #34
0
 private void media_StateChanged(MediaBase sender, VlcEventArgs<Vlc.DotNet.Core.Interops.Signatures.LibVlc.Media.States> e)
 {
     if (e.Data == Vlc.DotNet.Core.Interops.Signatures.LibVlc.Media.States.Stopped)
     {
         this.btn_play.Content = "\uf04b";
     }
     else if (e.Data == Vlc.DotNet.Core.Interops.Signatures.LibVlc.Media.States.Paused)
     {
         if (this.MediaState == MTC_Player.MediaState.Playing)
         {
             if (sender.Duration.TotalSeconds - this.durationMedia.TotalSeconds < 1)
             {
                 myVlcControl.Position = 0f;
                 myVlcControl.Play();
             }
             else
             {
                 this.btn_play.Content = "\uf04b";
                 myVlcControl.Stop();
             }
         }
     }
     else if (e.Data == Vlc.DotNet.Core.Interops.Signatures.LibVlc.Media.States.Playing)
     {
         this.btn_play.Content = "\uf04c";
     }
 }
 /// <summary>
 /// Plays a media.
 /// </summary>
 public void Play(MediaBase media)
 {
     Medias.Play(media);
 }
 private void MediaOnParsedChanged(MediaBase sender, VlcEventArgs<int> e)
 {
     alta_txt_curTime.Text = myVlcControl.Media.Duration.Format();
 }
예제 #37
0
        private async Task <bool> DoExecute(MediaBase inputMedia)
        {
            string Params = $"-nostats -i \"{inputMedia.FullPath}\" -ss {MeasureStart} -t {(MeasureDuration == TimeSpan.Zero ? inputMedia.DurationPlay : MeasureDuration)} -filter_complex ebur128=peak=sample -f null -";

            return(await RunProcess(Params));
        }
 /// <summary>
 /// Play a media
 /// </summary>
 public void Play(MediaBase media)
 {
     Medias.Play(media);
 }
예제 #39
0
 void media_ParsedChanged(MediaBase sender, VlcEventArgs <int> e)
 {
     this.durationMedia = TimeSpan.Zero;
 }
예제 #40
0
파일: VlcManager.cs 프로젝트: ch4/vlcdotnet
 /// <summary>
 /// Play media argument
 /// </summary>
 /// <param name="media">Media to play</param>
 public void Play(MediaBase media)
 {
     MediaLibrary.MediaItems.Clear();
     MediaLibrary.MediaItems.Add(media);
     MediaLibrary.SelectedMedia = media;
     Play();
 }
 private void MediaOnParsedChanged(MediaBase sender, VlcEventArgs <int> e)
 {
     alta_txt_curTime.Text = myVlcControl.Media.Duration.Format();
 }