Exemple #1
0
        public void InferTotalBitrate(bool force = false)
        {
            if (MediaStreams == null)
            {
                return;
            }

            if (!force && Bitrate.HasValue)
            {
                return;
            }

            var internalStreams = MediaStreams
                                  .Where(i => !i.IsExternal)
                                  .ToList();

            if (internalStreams.Count == 0)
            {
                return;
            }

            var bitrate = internalStreams
                          .Select(m => m.BitRate ?? 0)
                          .Sum();

            if (bitrate > 0)
            {
                Bitrate = bitrate;
            }
        }
        /// <summary>
        /// Find the first streamable audio stream for the specified language
        /// </summary>
        /// <returns></returns>
        protected int FindAudioStream(string lang = "")
        {
            if (string.IsNullOrEmpty(lang))
            {
                lang = "eng";
            }
            if (MediaStreams == null || !MediaStreams.Any())
            {
                return(0);
            }

            Logging.Logger.ReportVerbose("Looking for audio stream in {0}", lang);
            MediaStream stream = null;

            foreach (var codec in StreamableCodecs)
            {
                stream = MediaStreams.FirstOrDefault(s => s.Type == MediaStreamType.Audio && (s.Language == null || s.Language.Equals(lang, StringComparison.OrdinalIgnoreCase)) &&
                                                     s.Codec.Equals(codec, StringComparison.OrdinalIgnoreCase));
                if (stream != null)
                {
                    break;
                }
            }
            Logging.Logger.ReportVerbose("Requesting audio stream #{0}", stream != null ? stream.Index : 0);
            return(stream != null ? stream.Index : 0);
        }
    void ExportMediaStreams(XmlElement parent, MediaStreams streams, Boolean isOffline)
    {
        XmlElement elt = AddChild(parent, "Streams");

        elt.SetAttribute("Count", streams.Count.ToString(myNumberFormat));
        //IEnumerator enumStream = streams.GetEnumerator();
        foreach (MediaStream stream in streams)
        {
            ExportMediaStream(elt, stream, isOffline);
        }
    }