public void Load(Stream stream) { _thumbnails.Clear(); JsonSerializer serializer = new JsonSerializer(); JObject jRoot; using (StreamReader reader = new StreamReader(stream)) jRoot = JObject.Load(new JsonTextReader(reader)); JArray jThumbs = jRoot["thumbnails"] as JArray; foreach (JObject thumb in jThumbs) { byte[] image = Convert.FromBase64String(thumb["image"].Value <string>()); JpegBitmapDecoder decoder = new JpegBitmapDecoder(new MemoryStream(image), BitmapCreateOptions.None, BitmapCacheOption.None); TimeSpan timestamp = TimeSpan.Parse(thumb["time"].Value <string>()); VideoThumbnail thumbnail = new VideoThumbnail { Thumbnail = decoder.Frames[0], Timestamp = timestamp }; Add(thumbnail); } }
public void Add(VideoThumbnail videoThumbnail) { for (int i = 0; i < _thumbnails.Count; i++) { if (_thumbnails[i].Timestamp > videoThumbnail.Timestamp) { _thumbnails.Insert(i, videoThumbnail); return; } } _thumbnails.Add(videoThumbnail); }
public VideoThumbnail Get(TimeSpan timestamp) { if (_thumbnails.Count == 0) { return(null); } for (int index = _thumbnails.Count - 1; index >= 0; index--) { VideoThumbnail thumbnail = _thumbnails[index]; if (thumbnail.Timestamp <= timestamp) { return(thumbnail); } } return(_thumbnails.First()); }