Ejemplo n.º 1
0
        public IPlayer GetPlayer(MediaItem mediaItem)
        {
            string mimeType;
            string title;

            if (!mediaItem.GetPlayData(out mimeType, out title))
            {
                return(null);
            }

            IResourceLocator locator    = mediaItem.GetResourceLocator();
            Type             playerType = PlayerRegistration.GetPlayerTypeForMediaItem(locator, mimeType);

            if (playerType == null)
            {
                return(null);
            }
            IInitializablePlayer player = (IInitializablePlayer)Activator.CreateInstance(playerType);

            try
            {
                player.SetMediaItem(locator, title, mediaItem);
            }
            catch (Exception e)
            { // The file might be broken, so the player wasn't able to play it
                ServiceRegistration.Get <ILogger>().Warn("{0}: Unable to play '{1}'", e, playerType, locator);
                IDisposable disposablePlayer = player as IDisposable;
                if (disposablePlayer != null)
                {
                    disposablePlayer.Dispose();
                }
                throw;
            }
            return((IPlayer)player);
        }