/// <summary>
    /// Creates a MediaItem that represents a TV stream. The MediaItem also holds information about stream indices to provide PiP
    /// functions (<paramref name="slotIndex"/>).
    /// </summary>
    /// <param name="slotIndex">Index of the slot (0/1)</param>
    /// <param name="path">Path or URL of the stream</param>
    /// <param name="channel"></param>
    /// <returns></returns>
    public static LiveTvMediaItem CreateMediaItem(int slotIndex, string path, IChannel channel)
    {
      if (!String.IsNullOrEmpty(path))
      {
        ISystemResolver systemResolver = ServiceRegistration.Get<ISystemResolver>();
        IDictionary<Guid, MediaItemAspect> aspects = new Dictionary<Guid, MediaItemAspect>();
        MediaItemAspect providerResourceAspect;
        MediaItemAspect mediaAspect;

        SlimTvResourceAccessor resourceAccessor = new SlimTvResourceAccessor(slotIndex, path);
        aspects[ProviderResourceAspect.ASPECT_ID] = providerResourceAspect = new MediaItemAspect(ProviderResourceAspect.Metadata);
        aspects[MediaAspect.ASPECT_ID] = mediaAspect = new MediaItemAspect(MediaAspect.Metadata);
        // VideoAspect needs to be included to associate VideoPlayer later!
        aspects[VideoAspect.ASPECT_ID] = new MediaItemAspect(VideoAspect.Metadata);
        providerResourceAspect.SetAttribute(ProviderResourceAspect.ATTR_SYSTEM_ID, systemResolver.LocalSystemId);

        String raPath = resourceAccessor.CanonicalLocalResourcePath.Serialize();
        providerResourceAspect.SetAttribute(ProviderResourceAspect.ATTR_RESOURCE_ACCESSOR_PATH, raPath);

        mediaAspect.SetAttribute(MediaAspect.ATTR_TITLE, "Live TV");
        mediaAspect.SetAttribute(MediaAspect.ATTR_MIME_TYPE, "video/livetv"); // Custom mimetype for LiveTv

        LiveTvMediaItem tvStream = new LiveTvMediaItem(new Guid(), aspects);

        tvStream.AdditionalProperties[LiveTvMediaItem.SLOT_INDEX] = slotIndex;
        tvStream.AdditionalProperties[LiveTvMediaItem.CHANNEL] = channel;
        tvStream.AdditionalProperties[LiveTvMediaItem.TUNING_TIME] = DateTime.Now;
        return tvStream;
      }
      return null;
    }
        /// <summary>
        /// Creates a MediaItem that represents a TV stream. The MediaItem also holds information about stream indices to provide PiP
        /// functions (<paramref name="slotIndex"/>).
        /// </summary>
        /// <param name="slotIndex">Index of the slot (0/1)</param>
        /// <param name="path">Path or URL of the stream</param>
        /// <param name="channel"></param>
        /// <returns></returns>
        public static LiveTvMediaItem CreateMediaItem(int slotIndex, string path, IChannel channel)
        {
            if (!String.IsNullOrEmpty(path))
            {
                ISystemResolver systemResolver = ServiceRegistration.Get <ISystemResolver>();
                IDictionary <Guid, MediaItemAspect> aspects = new Dictionary <Guid, MediaItemAspect>();
                MediaItemAspect providerResourceAspect;
                MediaItemAspect mediaAspect;

                SlimTvResourceAccessor resourceAccessor = new SlimTvResourceAccessor(slotIndex, path);
                aspects[ProviderResourceAspect.ASPECT_ID] = providerResourceAspect = new MediaItemAspect(ProviderResourceAspect.Metadata);
                aspects[MediaAspect.ASPECT_ID]            = mediaAspect = new MediaItemAspect(MediaAspect.Metadata);
                // VideoAspect needs to be included to associate VideoPlayer later!
                aspects[VideoAspect.ASPECT_ID] = new MediaItemAspect(VideoAspect.Metadata);
                providerResourceAspect.SetAttribute(ProviderResourceAspect.ATTR_SYSTEM_ID, systemResolver.LocalSystemId);

                String raPath = resourceAccessor.CanonicalLocalResourcePath.Serialize();
                providerResourceAspect.SetAttribute(ProviderResourceAspect.ATTR_RESOURCE_ACCESSOR_PATH, raPath);

                mediaAspect.SetAttribute(MediaAspect.ATTR_TITLE, "Live TV");
                mediaAspect.SetAttribute(MediaAspect.ATTR_MIME_TYPE, "video/livetv"); // Custom mimetype for LiveTv

                LiveTvMediaItem tvStream = new LiveTvMediaItem(new Guid(), aspects);

                tvStream.AdditionalProperties[LiveTvMediaItem.SLOT_INDEX]  = slotIndex;
                tvStream.AdditionalProperties[LiveTvMediaItem.CHANNEL]     = channel;
                tvStream.AdditionalProperties[LiveTvMediaItem.TUNING_TIME] = DateTime.Now;
                return(tvStream);
            }
            return(null);
        }