/// <summary> /// 把传递过来的项移动到最后一项 /// </summary> /// <param name="videoItem"></param> private void MoveVideo(PlaylistItemInfo videoItem) { //修改当前项播放的时间 videoItem.StartTime = videoItem.StartTime.AddSeconds(playListTimeLength); //加到结尾 plists.Add(videoItem); //移除第一项 plists.RemoveAt(0); }
/// <summary> /// 重新排列当前播放列表 /// </summary> private void RearrangePlayList() { PlayListHandleEvent(this, "播放列表排列"); if (plists.Count == 1) { PlaylistItemInfo item = new PlaylistItemInfo(); item.MD5Key = plists[0].MD5Key; item.MediaFileName = plists[0].MediaFileName; item.PlayTime = plists[0].PlayTime; } plists[0].StartTime = DateTime.Now; for (int i = 1; i < plists.Count; i++) { plists[i].StartTime = plists[i - 1].StartTime.AddSeconds(plists[i - 1].PlayTime); } }
/// <summary> /// 从本地载入播放列表 /// </summary> public bool LoadPlayList() { try { string xmlDocPath = PlayerSetting.DefaultVideosPath + "PlayList.xml"; if (System.IO.File.Exists(xmlDocPath)) { XmlDocument xmlDoc = new XmlDocument(); xmlDoc.Load(xmlDocPath); PlaylistInfo plm = PlaylistInfo.ToModel(xmlDoc.OuterXml); //播放列表赋值 plists = plm.MediaPlayList; //计算整个播放列表播放时间的间隔加上循环间隔时长 playListTimeLength = 0; //foreach (PlaylistItemInfo item in plists) //{ // playListTimeLength += item.PlayTime; //} for (int i = 0; i < plists.Count; i++) { string relativurl = plists[i].MediaFileName; string path = PlayerSetting.DefaultVideosPath + relativurl; string md5Value = plists[i].MD5Key; if (!string.IsNullOrEmpty(md5Value)) { string MediaMd5 = SeatManage.SeatManageComm.SeatComm.GetMD5HashFromFile(path); if (MediaMd5.Equals(md5Value)) { playListTimeLength += plists[i].PlayTime; } else { PlayListHandleEvent(this, string.Format("文件{0} MD5校验失败!", relativurl)); plists.RemoveAt(i); i--; } } } //TODO:根据当前时间重新排列播放列表 RearrangePlayList(); return(true); } else if (!string.IsNullOrEmpty((PlayerSetting.DefaultVideo))) { string[] fileNames = PlayerSetting.DefaultVideo.Split(';'); plists = new List <PlaylistItemInfo>(); foreach (string name in fileNames) { if (string.IsNullOrEmpty(name)) { continue; } PlaylistItemInfo item = new PlaylistItemInfo(); item.MD5Key = SeatManage.SeatManageComm.SeatComm.GetMD5HashFromFile(string.Format("{0}{1}", PlayerSetting.DefaultVideosPath, name)); item.MediaFileName = name; item.PlayTime = 30; plists.Add(item); playListTimeLength += 30; } if (plists.Count < 1) { SeatManage.SeatManageComm.WriteLog.Write("播放列表不存在"); PlayListHandleEvent(this, "本地播放列表不存在!"); return(false); } RearrangePlayList(); return(true); } else { SeatManage.SeatManageComm.WriteLog.Write("播放列表不存在"); PlayListHandleEvent(this, "本地播放列表不存在!"); return(false); } } catch { SeatManage.SeatManageComm.WriteLog.Write("载入播放列表失败"); PlayListHandleEvent(this, "载入播放列表失败!"); return(false); } }