/// <summary> /// 更新播放列表,并写入文件 /// </summary> /// <param name="model">播放列表</param> /// <returns>成功写入返回true,否则返回false</returns> private bool WritePlayListToFile(AMS_PlayListMd5 model) { XmlDocument xmlDoc = new XmlDocument(); //获取应用程序所在文件夹 string FilePath = PlayerSetting.DefaultVideosPath + "PlayList.xml"; try { if (model == null) { return(false); } xmlDoc.LoadXml(model.ToXml()); DirectoryInfo d = new DirectoryInfo(PlayerSetting.DefaultVideosPath); if (!d.Exists) { d.Create(); } xmlDoc.Save(FilePath); return(true); } catch (Exception ex) { SeatManage.SeatManageComm.WriteLog.Write(ex.Message); return(false); } }
/// <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); AMS_PlayListMd5 plm = AMS_PlayListMd5.Parse(xmlDoc.OuterXml); //播放列表赋值 plists = plm.PlayVideoItems; //计算整个播放列表播放时间的间隔加上循环间隔时长 playListTimeLength = plm.PlayListTimeLength + plm.PlayElapsed; //TODO:根据当前时间重新排列播放列表 RearrangePlayList(); return(true); } else { SeatManage.SeatManageComm.WriteLog.Write("播放列表不存在"); PlayListHandleEvent(this, "本地播放列表不存在!"); return(false); } } catch { SeatManage.SeatManageComm.WriteLog.Write("载入播放列表失败"); PlayListHandleEvent(this, "载入播放列表失败!"); return(false); } }
/// <summary> /// 获取播放列表 /// </summary> private bool DownloadPlaylist(ref AMS_PlayListMd5 model) { while (true) { //获取今天的播放列表 model = null; try { List <SeatManage.ClassModel.AMS_PlayListMd5> playlist = SeatManage.Bll.AMS_PlayList.GetMd5PlayListByStatus(SeatManage.EnumType.LogStatus.Valid); if (playlist.Count > 0) { model = playlist[0]; } else { PlayListHandleEvent(this, "没有有效的播放列表"); return(false); } timer1.Stop(); timer1.Dispose(); return(true); } catch (Exception ex) { PlayListHandleEvent(this, "服务器连接失败,正在重试……"); System.Threading.Thread.Sleep(2000); if (s > 300) { timer1.Stop(); timer1.Dispose(); return(false); } } //if (model != null) //{ // timer1.Stop(); // timer1.Dispose(); // return true; //} //else //{ // SeatManage.SeatManageComm.WriteLog.Write(ex.Message); // return false; //} } }
/// <summary> /// 解析播放列表并下载视频文件 /// </summary> /// <param name="model">下载的文件地址</param> private List <string> GetDownloadVideoFile(AMS_PlayListMd5 model) { //存放待下载的媒体文件 List <string> downloadFiles = new List <string>(); //播放列表存放的文件夹 DirectoryInfo direct = new DirectoryInfo(PlayerSetting.DefaultVideosPath); if (!direct.Exists) { direct.Create(); } //下载所有的媒体文件。 foreach (AMS_VideoMd5Item vm in model.VideoFiles) { downloadFiles.Add(vm.RelativeUrl); } return(downloadFiles); }
/// <summary> /// 获取当前应该播放的媒体信息 /// </summary> /// <param name="isOffline">是否脱机运行</param> public void Run() { if (PlayerSetting.IsOffline == "1") { //从服务器上获取新的播放列表以及媒体文件并且保存到本地 // get.Run(); SeatManage.ClassModel.AMS_PlayListMd5 playlistModel = new AMS_PlayListMd5(); //从服务器上获取新的播放列表 timer1 = new Timer(1000); timer1.Elapsed += new ElapsedEventHandler(timer1_Elapsed); timer1.Start(); try { if (DownloadPlaylist(ref playlistModel)) { //把新获取的播放列表写入文件 if (WritePlayListToFile(playlistModel)) { SeatManage.SeatManageComm.WriteLog.Write("播放列表文件写入成功,准备下载……"); if (string.IsNullOrEmpty(PlayerSetting.DeviceNo)) { SeatManage.SeatManageComm.WriteLog.Write("终端编号为空"); } else { TerminalInfoV2 terminal = SeatManage.Bll.TerminalOperatorService.GetTeminalSetting(PlayerSetting.DeviceNo); if (terminal != null) { terminal.IsUpdatePlayList = false; SeatManage.Bll.TerminalOperatorService.UpdateTeminalSetting(terminal); } } List <string> lists = GetDownloadVideoFile(playlistModel); //删除无用的文件 DeleteNullFile(); DownloadFile(lists); } else { SeatManage.SeatManageComm.WriteLog.Write("播放列表写入失败"); } } else { //TODO:没有新的播放列表 } } catch (Exception ex) { SeatManage.SeatManageComm.WriteLog.Write("网络未连接" + ex.Message); } finally { timer1.Stop(); } } //载入本地的播放列表 if (LoadPlayList()) { timer.Elapsed += new ElapsedEventHandler(timer_Elapsed); //播放列表初始化结束,触发事件 PlayListHandleOver(null, null); timer.Start(); } }