private void _mediaLoad(IMedia media, bool reloadSegments)
        {
            if (reloadSegments)
            {
                _playWholeClip  = false;
                SelectedSegment = null;
            }
            TimeSpan duration    = Duration;
            TimeSpan tcIn        = StartTc;
            decimal  audioVolume = _event != null && _event.AudioVolume != null ? (decimal)_event.AudioVolume : media != null ? media.AudioVolume : 0M;

            if (media != null &&
                duration.Ticks >= _formatDescription.FrameTicks)
            {
                TcIn  = tcIn;
                TcOut = tcIn + duration - TimeSpan.FromTicks(_formatDescription.FrameTicks);
                if (reloadSegments && media is IPersistentMedia)
                {
                    MediaSegments.Clear();
                    foreach (IMediaSegment ms in ((IPersistentMedia)media).MediaSegments.Segments)
                    {
                        MediaSegments.Add(new MediaSegmentViewmodel((IPersistentMedia)media, ms));
                    }
                }
                _loadedSeek = (tcIn.Ticks - media.TcStart.Ticks) / _formatDescription.FrameTicks;
                long newPosition = _preview.PreviewLoaded ? _preview.PreviewSeek + _preview.PreviewPosition - _loadedSeek : 0;
                if (newPosition < 0)
                {
                    newPosition = 0;
                }
                _loadedDuration = duration.Ticks / _formatDescription.FrameTicks;
                _loadedMedia    = media;
                _preview.PreviewLoad(media, _loadedSeek, _loadedDuration, newPosition, audioVolume);
            }
            NotifyPropertyChanged(null);
        }
        public void ReadM3U8File()
        {
            try
            {
                DateTime             createdTime = new FileInfo(outputPath).CreationTime;
                List <MediaSegments> segments    = new List <MediaSegments>();
                M3U8Info             m3U8Info    = new M3U8Info();
                using (StreamReader sr = new StreamReader(outputPath))
                {
                    string        line;
                    MediaSegments segment = new MediaSegments();
                    segment.StartTime = createdTime;
                    while ((line = sr.ReadLine()) != null)
                    {
                        var val = line.Split(":");
                        if (val.Length > 1)
                        {
                            var key   = val[0];
                            var value = val[1];

                            switch (key)
                            {
                            case "#EXT-X-VERSION": m3U8Info.Version = int.Parse(value); break;

                            case "#EXT-X-TARGETDURATION": m3U8Info.Version = int.Parse(value); break;

                            case "#EXT-X-MEDIA-SEQUENCE": m3U8Info.MediaSequence = int.Parse(value); break;

                            case "#EXT-X-PLAYLIST-TYPE": m3U8Info.PlaylistType = value; break;

                            case "#EXTINF": {
                                value = value.Remove(value.Length - 1, 1);
                                var duration = Convert.ToDouble(value);
                                segment.Duration = duration;
                                segment.EndTime  = segment.StartTime.AddSeconds(duration);
                                createdTime      = segment.EndTime;
                            }; break;

                            case "#EXT-X-BYTERANGE":
                            {
                                var byterange = value.Split("@");
                                segment.Size      = int.Parse(byterange[0]);
                                segment.ByteIndex = int.Parse(byterange[1]);
                            }; break;

                            case "#EXT-X-DISCONTINUITY": break;

                            default: break;
                            }
                        }
                        if (val.Length == 1)
                        {
                            if (line.Contains(".ts"))
                            {
                                segment.FileName = line.Split(".")[0];
                                segment.StreamId = "stream";
                                segments.Add(segment);
                                // _db.MediaSegments.Add(segment);
                                segment           = new MediaSegments();
                                segment.StartTime = createdTime;
                            }
                        }
                        // Use a tab to indent each line of the file.
                        Debug.WriteLine("\t" + line);
                    }
                }
                _db.M3U8Info.Add(m3U8Info);
                _db.MediaSegments.AddRange(segments);
                _db.SaveChanges();
            }
            catch (Exception ex)
            {
                Debug.WriteLine(ex);
            }
        }