public ItemVideoStream(ItemContainer parent, string path, string title, EncoderBuilder settings) : base(string.Format("{0} {1} {2}kBps {3}", title, settings.Resolution, settings.VidBitrate, settings.Audio), parent) { this.path = path; this.mime = settings.GetMime(); this.date = DateTime.Now; this.bitrate = settings.VidBitrate; this.resolution = settings.Resolution; this.queryString = settings.GetParamString(); this.dlnaType = settings.GetDlnaType(); }
public override void BrowseMetadata(XmlWriter writer, MediaSettings settings, string host, string idParams, HashSet <string> filterSet, int parentId) { EncoderBuilder encBuilder = EncoderBuilder.GetEncoder(this.SubtitlesPath); writer.WriteStartElement("item"); writer.WriteAttributeString("id", this.Id.ToString()); writer.WriteAttributeString("restricted", "true"); writer.WriteAttributeString("parentID", parentId + "_" + (this.Audio ? AudioIndex : VideoIndex)); //Povinne hodnoty writer.WriteElementString("dc", "title", null, this.Title); writer.WriteElementString("upnp", "class", null, this.Audio ? "object.item.audioItem" : "object.item.videoItem"); //Volitelne hodnoty if (filterSet == null || filterSet.Contains("dc:date")) { writer.WriteElementString("dc", "date", null, this.Date.ToString("yyyy-MM-dd")); } if (filterSet == null || filterSet.Any(a => a.StartsWith("res"))) { writer.WriteStartElement("res"); if (filterSet == null || filterSet.Contains("res@duration")) { writer.WriteAttributeString("duration", "0:00:00.000"); } if (this.Audio) { if (encBuilder.AudBitrate != null && (filterSet == null || filterSet.Contains("res@bitrate"))) { writer.WriteAttributeString("bitrate", encBuilder.AudBitrate); } writer.WriteAttributeString("protocolInfo", string.Format("http-get:*:{0}:{1}{2}", this.Mime, encBuilder.GetDlnaType(), settings.Audio.StreamFeature)); writer.WriteValue(host + "/encode/audio?id=" + this.Id + this.SubtitlesPath); } else { if (encBuilder.VidBitrate != null && (filterSet == null || filterSet.Contains("res@bitrate"))) { writer.WriteAttributeString("bitrate", encBuilder.VidBitrate); } if (this.Resolution != null && (filterSet == null || filterSet.Contains("res@resolution"))) { writer.WriteAttributeString("resolution", this.Resolution); } writer.WriteAttributeString("protocolInfo", string.Format("http-get:*:{0}:{1}{2}", this.Mime, encBuilder.GetDlnaType(), settings.Video.StreamFeature)); writer.WriteValue(host + "/encode/video?id=" + this.Id + this.SubtitlesPath); } writer.WriteEndElement(); } writer.WriteEndElement(); }