コード例 #1
0
 public static void  载任务状态检测()
 {
     foreach (var item in MMPU.DownList)
     {
         if (!item.DownIofo.网络超时 && item.DownIofo.载状态 && item.DownIofo.已下载大小bit > 10000 && item.DownIofo.最后连接时间 != 0 && Gettime() - item.DownIofo.最后连接时间 > 60)
         {
             InfoLog.InfoPrintf(item.DownIofo.房间_频道号 + "下载状态异常,重置下载任务", InfoLog.InfoClass.载必要提示);
             item.DownIofo.网络超时 = true;
             item.DownIofo.备注   = "下载状态异常,重置下载任务";
             Clear(true, item.DownIofo);
             item.DownIofo.载状态  = false;
             item.DownIofo.结束时间 = Convert.ToInt32((DateTime.Now - new DateTime(1970, 1, 1, 0, 0, 0, 0)).TotalSeconds);
             item.DownIofo.WC.CancelAsync();
             new Task(() =>
             {
                 string 标题 = bilibili.根据房间号获取房间信息.获取标题(item.DownIofo.标题);
                 if (string.IsNullOrEmpty(标题))
                 {
                     标题 = $"重置下载任务{DateTime.Now.ToString("yyyyMMddHHmmssfff")}{new Random().Next(10000,99999)}";
                 }
                 Downloader DLL = Downloader.新建下载对象(item.DownIofo.平台, item.DownIofo.房间_频道号, bilibili.根据房间号获取房间信息.获取标题(item.DownIofo.标题), Guid.NewGuid().ToString(), bilibili.根据房间号获取房间信息.载地址(item.DownIofo.标题), "下载状态异常,重置下载任务", item.DownIofo.是否保存, item.DownIofo.主播名称, false, null);
             }).Start();
         }
     }
 }
コード例 #2
0
        // public event EventHandler<EventArgs> DownUpdate;
        // public event EventHandler<EventArgs> DownOk;

        private void  载完成事件(object sender, AsyncCompletedEventArgs e)
        {
            new Task((() =>
            {
                try
                {
                    DownIofo.载状态 = false;
                    DownIofo.结束时间 = Convert.ToInt32((DateTime.Now - new DateTime(1970, 1, 1, 0, 0, 0, 0)).TotalSeconds);
                    DownIofo.备注 = "下载任务结束";
                    if (e.Cancelled && !DownIofo.网络超时)
                    {
                        if (!DownIofo.播放状态 && DownIofo.是否是播放任务)
                        {
                            DownIofo.备注 = "播放窗口关闭";
                            DownIofo.载状态 = false;
                            载结束提醒(true, "下载任务结束", DownIofo);
                            return;
                        }
                        DownIofo.继承.待合并文件列表.Add(DownIofo.文件保存路径);
                        DownIofo.备注 = "用户取消,停止下载";
                        DownIofo.载状态 = false;
                        载结束提醒(true, "下载任务结束", DownIofo);
                    }
                    else if (!e.Cancelled && !bilibili.根据房间号获取房间信息.是否正在直播(DownIofo.房间_频道号, true))
                    {
                        DownIofo.继承.待合并文件列表.Add(DownIofo.文件保存路径);
                        DownIofo.载状态 = false;
                        DownIofo.备注 = "下载完成,直播间已关闭";
                        if (DownIofo.继承 == null)
                        {
                            DownIofo.继承.是否为继承对象 = false;
                        }
                        if (DownIofo.继承.是否为继承对象 && !DownIofo.是否是播放任务)
                        {
                            DownIofo.继承.合并后的文件路径 = 载完成合并FLV(DownIofo, true);
                            if (!string.IsNullOrEmpty(DownIofo.继承.合并后的文件路径))
                            {
                                DownIofo.文件保存路径 = DownIofo.继承.合并后的文件路径;
                            }
                        }
                        if (!DownIofo.是否是播放任务)
                        {
                            FlvMethod.转码(DownIofo.文件保存路径);
                        }
                        InfoLog.InfoPrintf(DownIofo.房间_频道号 + "房间:" + DownIofo.主播名称 + " 下播,录制完成", InfoLog.InfoClass.载必要提示);
                        foreach (var item in RoomInit.bilibili房间主表)
                        {
                            if (item.唯一码 == DownIofo.房间_频道号)
                            {
                                item.直播状态 = false;
                                break;
                            }
                        }
                        DownIofo.载状态 = false;
                        载结束提醒(true, "下载任务结束", DownIofo);
                        return;
                    }
                    else
                    {
                        if (bilibili.根据房间号获取房间信息.是否正在直播(DownIofo.房间_频道号, true) && DownIofo.是否保存)
                        {
                            DownIofo.网络超时 = true;
                            DownIofo.载状态 = false;
                            DownIofo.备注 = "下载流中断,检测到房间仍为开播状态,新建续下任务。";
                            DownIofo.结束时间 = Convert.ToInt32((DateTime.Now - new DateTime(1970, 1, 1, 0, 0, 0, 0)).TotalSeconds);
                            switch (DownIofo.平台)
                            {
                            case "bilibili":
                                {
                                    if (!DownIofo.是否是播放任务)
                                    {
                                        DownIofo.继承.待合并文件列表.Add(DownIofo.文件保存路径);
                                        InfoLog.InfoPrintf($"{DownIofo.房间_频道号}:{DownIofo.主播名称}下载任务续下,历史文件加入待合并文件列表:{DownIofo.文件保存路径}", InfoLog.InfoClass.载必要提示);
                                    }
                                    DownIofo.载状态 = false;
                                    Downloader 重连下载对象 = Downloader.新建下载对象(
                                        DownIofo.平台,
                                        DownIofo.房间_频道号,
                                        bilibili.根据房间号获取房间信息.获取标题(DownIofo.房间_频道号),
                                        Guid.NewGuid().ToString(),
                                        bilibili.根据房间号获取房间信息.载地址(DownIofo.房间_频道号),
                                        "重连",
                                        DownIofo.是否保存,
                                        DownIofo.主播名称,
                                        true,
                                        DownIofo.文件保存路径,
                                        DownIofo
                                        );
                                    if (!重连下载对象.DownIofo.载状态)
                                    {
                                        try
                                        {
                                            重连下载对象.DownIofo.弹幕录制基准时间 = DownIofo.弹幕录制基准时间;
                                            重连下载对象.DownIofo.阿B直播流对象 = DownIofo.阿B直播流对象;
                                            重连下载对象.DownIofo.弹幕储存流 = DownIofo.弹幕储存流;
                                            重连下载对象.DownIofo.礼物储存流 = DownIofo.礼物储存流;
                                            重连下载对象.DownIofo.载状态 = false;
                                            重连下载对象.DownIofo.结束时间 = Convert.ToInt32((DateTime.Now - new DateTime(1970, 1, 1, 0, 0, 0, 0)).TotalSeconds);
                                            重连下载对象.DownIofo.备注 = "服务器主动断开连接,直播结束";
                                            foreach (var item in RoomInit.bilibili房间主表)
                                            {
                                                if (item.唯一码 == DownIofo.房间_频道号)
                                                {
                                                    item.直播状态 = false;
                                                    break;
                                                }
                                            }
                                            if (DownIofo.继承.是否为继承对象 && !DownIofo.是否是播放任务)
                                            {
                                                DownIofo.继承.合并后的文件路径 = 载完成合并FLV(DownIofo, true);
                                                if (!string.IsNullOrEmpty(DownIofo.继承.合并后的文件路径))
                                                {
                                                    DownIofo.文件保存路径 = DownIofo.继承.合并后的文件路径;
                                                }
                                            }
                                            if (!DownIofo.是否是播放任务)
                                            {
                                                FlvMethod.转码(DownIofo.文件保存路径);
                                            }
                                            DownIofo.备注 = "服务器主动断开连接,直播结束";
                                            重连下载对象.DownIofo.载状态 = false;
                                            重连下载对象.DownIofo.结束时间 = Convert.ToInt32((DateTime.Now - new DateTime(1970, 1, 1, 0, 0, 0, 0)).TotalSeconds);
                                            DownIofo.载状态 = false;
                                            DownIofo.结束时间 = Convert.ToInt32((DateTime.Now - new DateTime(1970, 1, 1, 0, 0, 0, 0)).TotalSeconds);
                                            载结束提醒(true, "下载任务结束", 重连下载对象.DownIofo);
                                        }
                                        catch (Exception) {}
                                        return;
                                    }
                                    new Task((() =>
                                    {
                                        while (true)
                                        {
                                            Thread.Sleep(10000);
                                            if (重连下载对象.DownIofo.已下载大小bit > 5000)
                                            {
                                                DownIofo.载状态 = false;
                                                DownIofo.结束时间 = Convert.ToInt32((DateTime.Now - new DateTime(1970, 1, 1, 0, 0, 0, 0)).TotalSeconds);
                                                载结束提醒(true, "下载任务结束", DownIofo);
                                                重连下载对象.DownIofo.备注 = "完成重连,正在续命..";
                                                //下载对象.DownIofo.下载状态 = true;
                                                return;
                                            }
                                            if (!bilibili.根据房间号获取房间信息.是否正在直播(DownIofo.房间_频道号, true))
                                            {
                                                重连下载对象.DownIofo.备注 = "停止直播";
                                                DownIofo.备注 = "直播停止,下载完成下载完成";
                                                重连下载对象.DownIofo.载状态 = false;
                                                重连下载对象.DownIofo.结束时间 = Convert.ToInt32((DateTime.Now - new DateTime(1970, 1, 1, 0, 0, 0, 0)).TotalSeconds);
                                                DownIofo.载状态 = false;
                                                DownIofo.结束时间 = Convert.ToInt32((DateTime.Now - new DateTime(1970, 1, 1, 0, 0, 0, 0)).TotalSeconds);
                                                重连下载对象.DownIofo.WC.CancelAsync();
                                                MMPU.DownList.Remove(重连下载对象);
                                                载结束提醒(true, "下载任务结束", DownIofo);
                                                载结束提醒(true, "下载任务结束", 重连下载对象.DownIofo);
                                                return;
                                            }
                                        }
                                    })).Start();
                                    DownIofo.载状态 = false;
                                    break;
                                }

                            default:
                                DownIofo.备注 = "不受支持的平台";
                                DownIofo.载状态 = false;
                                DownIofo.结束时间 = Convert.ToInt32((DateTime.Now - new DateTime(1970, 1, 1, 0, 0, 0, 0)).TotalSeconds);
                                InfoLog.InfoPrintf("该房间的配置文件发现了与当前版本不支持的平台,请检查文件配置或者检查更新", InfoLog.InfoClass.系统错误信息);
                                //下载结束提醒(false);
                                return;
                            }
                        }
                        else
                        {
                            DownIofo.备注 = "直播停止,下载完成下载完成";
                            载结束提醒(true, "下载任务结束", DownIofo);
                            DownIofo.载状态 = false;
                            return;
                        }
                    }
                    DownIofo.载状态 = false;
                    DownIofo.结束时间 = Convert.ToInt32((DateTime.Now - new DateTime(1970, 1, 1, 0, 0, 0, 0)).TotalSeconds);
                    DownIofo.备注 = "下载任务结束";
                }
                catch (Exception ES)
                {
                    InfoLog.InfoPrintf($"录制任务意外终止:\r\n{ES.ToString()}", InfoLog.InfoClass.系统错误信息);
                    DownIofo.载状态 = false;
                    DownIofo.备注 = "录制任务意外终止,已新建续命任务";
                    载结束提醒(true, "录制任务意外终止,已新建续命任务", DownIofo);
                    Downloader 载对象 = new Downloader();
                    try
                    {
                        DownIofo.载状态 = false;
                        载对象 = Downloader.新建下载对象(
                            DownIofo.平台,
                            DownIofo.房间_频道号,
                            bilibili.根据房间号获取房间信息.获取标题(DownIofo.房间_频道号),
                            Guid.NewGuid().ToString(),
                            bilibili.根据房间号获取房间信息.载地址(DownIofo.房间_频道号),
                            "前一个下载出现异常,新建下载",
                            DownIofo.是否保存,
                            DownIofo.主播名称,
                            false,
                            DownIofo.文件保存路径
                            );
                    }
                    catch (Exception)
                    {
                        try
                        {
                            载对象.DownIofo.备注 = "新建续下载对象出现异常,放弃新建任务";
                            载结束提醒(true, "下载任务结束", DownIofo);
                            载对象.DownIofo.载状态 = false;
                            载对象.DownIofo.结束时间 = Convert.ToInt32((DateTime.Now - new DateTime(1970, 1, 1, 0, 0, 0, 0)).TotalSeconds);
                            载对象.DownIofo.WC.CancelAsync();
                            MMPU.DownList.Remove(载对象);
                        }
                        catch (Exception)
                        {
                        }
                    }
                }
            })).Start();
        }
コード例 #3
0
ファイル: RoomInit.cs プロジェクト: Tarqrafi/DDTV2
        private static void 刷新B站房间列表()
        {
            if (!MMPU.是否能连接阿B)
            {
                return;
            }
            之前的bilibili房间主表状态.Clear();
            List <RL> 临时主表 = new List <RL>();

            foreach (var item in bilibili房间主表)
            {
                if (item.平台 == "bilibili")
                {
                    之前的bilibili房间主表状态.Add(item);
                    临时主表.Add(item);
                }
            }
            int A = 临时主表.Count();

            for (int i = 0; i < A; i++)
            {
                if (临时主表[i].平台 == "bilibili")
                {
                    临时主表.Remove(临时主表[i]);
                    i--;
                }
                A--;
            }
            foreach (var 最新的状态 in bilibili.RoomList)
            {
                foreach (var 之前的状态 in 之前的bilibili房间主表状态)
                {
                    if (之前的状态.唯一码 == 最新的状态.房间号)
                    {
                        if (B站更新刷新次数 > 5)
                        {
                            if (之前的状态.直播状态 == false && 最新的状态.直播状态 == true && 之前的状态.是否提醒)
                            {
                                MMPU.弹窗.Add(3000, "直播提醒", 最新的状态.称 + "/" + 最新的状态.原名 + "的直播状态发生了变化");
                            }
                        }
                        if (之前的状态.直播状态 == false && 最新的状态.直播状态 == true && 之前的状态.是否录制 == true)
                        {
                            if (B站更新刷新次数 > 5)
                            {
                                MMPU.弹窗.Add(3000, "自动录制", 最新的状态.称 + "/" + 最新的状态.原名 + "直播间状态发生了变化,也许是开播了");
                            }
                            if (MMPU.初始化后启动下载提示)
                            {
                                MMPU.初始化后启动下载提示 = !MMPU.初始化后启动下载提示;
                                MMPU.弹窗.Add(3000, "自动录制", "有关注的正在直播,根据配置列表开始自动录制");
                            }

                            InfoLog.InfoPrintf(最新的状态.称 + "/" + 最新的状态.原名 + "直播间状态发生了变化", InfoLog.InfoClass.载必要提示);
                            //Console.WriteLine(最新的状态.名称);
                            new Task(() =>
                            {
                                string 载地址 = bilibili.根据房间号获取房间信息.载地址(之前的状态.唯一码);
                                if (string.IsNullOrEmpty(载地址))
                                {
                                    InfoLog.InfoPrintf("解析下载地址失败,一般是该房间未开播或已加密", InfoLog.InfoClass.载必要提示);
                                    return;
                                }
                                Downloader DLL = Downloader.新建下载对象(之前的状态.平台, 之前的状态.唯一码, bilibili.根据房间号获取房间信息.获取标题(之前的状态.唯一码), Guid.NewGuid().ToString(), 载地址, "自动录制", true, 最新的状态.称 + "-" + 最新的状态.原名, false, null);
                                if (DLL != null)
                                {
                                    if (string.IsNullOrEmpty(DLL.DownIofo.备注))
                                    {
                                        DLL.DownIofo.备注 = "新建自动录制任务..等待数据..";
                                    }
                                }
                            }).Start();
                        }
                        break;
                    }
                }
                int B = 之前的bilibili房间主表状态.Count();
                临时主表.Add(new RL {
                    称 = 最新的状态.称, 唯一码 = 最新的状态.房间号, 平台 = "bilibili", 是否录制 = 最新的状态.是否录制视频, 是否提醒 = 最新的状态.是否提醒, 直播状态 = 最新的状态.直播状态, 原名 = 最新的状态.原名
                });
            }
            bilibili房间主表.Clear();
            foreach (var item in 临时主表)
            {
                bilibili房间主表.Add(item);
            }
            bilibili房间主表长度 = bilibili房间主表.Count();
            B站更新刷新次数++;
        }
コード例 #4
0
ファイル: Downloader.cs プロジェクト: tidehc/DDTV2
        // public event EventHandler<EventArgs> DownUpdate;
        // public event EventHandler<EventArgs> DownOk;
        private void  载完成事件(object sender, AsyncCompletedEventArgs e)
        {
            new Thread(new ThreadStart(delegate
            {
                if (e.Error != null && e.Error.Message.Contains("请求被中止"))
                {
                    DownIofo.备注  = "用户取消,停止下载";
                    DownIofo.载状态 = false;
                    if (!DownIofo.播放状态 && DownIofo.是否是播放任务)
                    {
                        DownIofo.备注   = "播放窗口关闭";
                        DownIofo.载状态  = false;
                        DownIofo.结束时间 = Convert.ToInt32((DateTime.UtcNow - new DateTime(1970, 1, 1, 0, 0, 0, 0)).TotalSeconds);
                        return;
                    }
                }
                else if (e.Cancelled == false && !bilibili.根据房间号获取房间信息.是否正在直播(DownIofo.房间_频道号))
                {
                    DownIofo.备注   = "直播停止,下载完成下载完成";
                    DownIofo.载状态  = false;
                    DownIofo.结束时间 = Convert.ToInt32((DateTime.UtcNow - new DateTime(1970, 1, 1, 0, 0, 0, 0)).TotalSeconds);
                    return;
                }
                else
                {
                    if (bilibili.根据房间号获取房间信息.是否正在直播(DownIofo.房间_频道号))
                    {
                        switch (DownIofo.平台)
                        {
                        case "bilibili":
                            {
                                Downloader 载对象 = Downloader.新建下载对象(DownIofo.平台, DownIofo.房间_频道号, bilibili.根据房间号获取房间信息.获取标题(DownIofo.房间_频道号), Guid.NewGuid().ToString(), bilibili.根据房间号获取房间信息.载地址(DownIofo.房间_频道号), "播放缓冲重连", false);
                                if (!载对象.DownIofo.载状态)
                                {
                                    载对象.DownIofo.备注 = "该房间当前状态不能获取到直播流";
                                    DownIofo.载状态    = false;
                                    return;
                                }
                                new Thread(new ThreadStart(delegate
                                {
                                    while (true)
                                    {
                                        Thread.Sleep(1000);
                                        if (载对象.DownIofo.已下载大小bit > 1000)
                                        {
                                            return;
                                        }
                                        if (!bilibili.根据房间号获取房间信息.是否正在直播(DownIofo.房间_频道号))
                                        {
                                            载对象.DownIofo.备注 = "停止直播";
                                            DownIofo.载状态    = false;
                                            载对象.DownIofo._wc.CancelAsync();
                                            MMPU.DownList.Remove(载对象);
                                            DownIofo.结束时间 = Convert.ToInt32((DateTime.UtcNow - new DateTime(1970, 1, 1, 0, 0, 0, 0)).TotalSeconds);
                                            return;
                                        }
                                    }
                                })).Start();
                                break;
                            }

                        default:
                            Console.WriteLine("发现了与当前版本不支持的平台,请检查更新");
                            return;
                        }
                    }
                }
                DownIofo.结束时间 = Convert.ToInt32((DateTime.UtcNow - new DateTime(1970, 1, 1, 0, 0, 0, 0)).TotalSeconds);
                DownIofo.载状态  = true;
            })).Start();
        }
コード例 #5
0
        // public event EventHandler<EventArgs> DownUpdate;
        // public event EventHandler<EventArgs> DownOk;
        private void  载完成事件(object sender, AsyncCompletedEventArgs e)
        {
            WebClient WWC = (WebClient)sender;

            new Task((() =>
            {
                DownIofo.载状态 = false;
                DownIofo.结束时间 = Convert.ToInt32((DateTime.UtcNow - new DateTime(1970, 1, 1, 0, 0, 0, 0)).TotalSeconds);
                DownIofo.备注 = "下载任务结束";

                // if (e.Error != null && e.Error.)
                //Clipboard.SetDataObject(e.Error.Message);

                if (e.Cancelled)
                {
                    DownIofo.备注 = "用户取消,停止下载";
                    if (!DownIofo.播放状态 && DownIofo.是否是播放任务)
                    {
                        DownIofo.备注 = "播放窗口关闭";
                        InfoLog.InfoPrintf("下载任务结束\n==============下载任务结束================\n主播名:" + DownIofo.主播名称 + "\n房间号:" + DownIofo.房间_频道号 + "\n标题:" + DownIofo.标题 + "\n开播时间:" + MMPU.Unix转换为DateTime(DownIofo.开始时间.ToString()) + "\n结束时间:" + MMPU.Unix转换为DateTime(DownIofo.结束时间.ToString()) + "\n保存路径:" + DownIofo.文件保存路径 + "\n下载任务类型:" + (DownIofo.继承.是否为继承对象 ? "续下任务" : "新建下载任务") + "\n结束原因:" + DownIofo.备注 + "\n===============下载任务结束===============\n", InfoLog.InfoClass.载必要提示);
                        if (DownIofo.阿B直播流对象 != null && DownIofo.阿B直播流对象.startIn)
                        {
                            DownIofo.阿B直播流对象.Dispose();
                        }
                        return;
                    }
                }
                else if (e.Cancelled == false && !bilibili.根据房间号获取房间信息.是否正在直播(DownIofo.房间_频道号))
                {
                    DownIofo.备注 = "直播停止,下载完成下载完成";
                    InfoLog.InfoPrintf("下载任务结束\n==============下载任务结束================\n主播名:" + DownIofo.主播名称 + "\n房间号:" + DownIofo.房间_频道号 + "\n标题:" + DownIofo.标题 + "\n开播时间:" + MMPU.Unix转换为DateTime(DownIofo.开始时间.ToString()) + "\n结束时间:" + MMPU.Unix转换为DateTime(DownIofo.结束时间.ToString()) + "\n保存路径:" + DownIofo.文件保存路径 + "\n下载任务类型:" + (DownIofo.继承.是否为继承对象 ? "续下任务" : "新建下载任务") + "\n结束原因:" + DownIofo.备注 + "\n===============下载任务结束===============\n", InfoLog.InfoClass.载必要提示);
                    if (DownIofo.继承 == null)
                    {
                        DownIofo.继承.是否为继承对象 = false;
                    }
                    if (DownIofo.继承.是否为继承对象 && !DownIofo.是否是播放任务)
                    {
                        DownIofo.继承.合并后的文件路径 = 载完成合并FLV(DownIofo.继承.继承的下载文件路径, DownIofo.文件保存路径, true);
                        if (!string.IsNullOrEmpty(DownIofo.继承.合并后的文件路径))
                        {
                            DownIofo.文件保存路径 = DownIofo.继承.合并后的文件路径;
                        }
                    }
                    else if (!DownIofo.是否是播放任务)
                    {
                        FlvMethod.转码(DownIofo.文件保存路径);
                    }
                    InfoLog.InfoPrintf(DownIofo.房间_频道号 + "房间:" + DownIofo.主播名称 + " 下播,录制完成", InfoLog.InfoClass.载必要提示);
                    if (DownIofo.阿B直播流对象 != null && DownIofo.阿B直播流对象.startIn)
                    {
                        DownIofo.阿B直播流对象.Dispose();
                    }
                    foreach (var item in RoomInit.bilibili房间主表)
                    {
                        if (item.唯一码 == DownIofo.房间_频道号)
                        {
                            item.直播状态 = false;
                            break;
                        }
                    }
                    return;
                }
                else
                {
                    if (bilibili.根据房间号获取房间信息.是否正在直播(DownIofo.房间_频道号) && DownIofo.是否保存)
                    {
                        DownIofo.备注 = "下载流断开,但检测到房间仍为开播状态,已新建续下任务";
                        DownIofo.载状态 = false;
                        DownIofo.结束时间 = Convert.ToInt32((DateTime.UtcNow - new DateTime(1970, 1, 1, 0, 0, 0, 0)).TotalSeconds);
                        switch (DownIofo.平台)
                        {
                        case "bilibili":
                            {
                                if (DownIofo.继承.是否为继承对象 && !DownIofo.是否是播放任务)
                                {
                                    DownIofo.继承.合并后的文件路径 = 载完成合并FLV(DownIofo.继承.继承的下载文件路径, DownIofo.文件保存路径, false);
                                    if (!string.IsNullOrEmpty(DownIofo.继承.合并后的文件路径))
                                    {
                                        DownIofo.文件保存路径 = DownIofo.继承.合并后的文件路径;
                                    }
                                }

                                Downloader 载对象 = Downloader.新建下载对象(
                                    DownIofo.平台,
                                    DownIofo.房间_频道号,
                                    bilibili.根据房间号获取房间信息.获取标题(DownIofo.房间_频道号),
                                    Guid.NewGuid().ToString(),
                                    bilibili.根据房间号获取房间信息.载地址(DownIofo.房间_频道号),
                                    "重连",
                                    DownIofo.是否保存,
                                    DownIofo.主播名称,
                                    true,
                                    DownIofo.文件保存路径
                                    );
                                if (!载对象.DownIofo.载状态)
                                {
                                    载对象.DownIofo.弹幕录制基准时间 = DownIofo.弹幕录制基准时间;
                                    载对象.DownIofo.阿B直播流对象 = DownIofo.阿B直播流对象;
                                    载对象.DownIofo.弹幕储存流 = DownIofo.弹幕储存流;
                                    载对象.DownIofo.载状态 = false;
                                    载对象.DownIofo.结束时间 = Convert.ToInt32((DateTime.UtcNow - new DateTime(1970, 1, 1, 0, 0, 0, 0)).TotalSeconds);
                                    载对象.DownIofo.备注 = "服务器主动断开连接,直播结束";
                                    foreach (var item in RoomInit.bilibili房间主表)
                                    {
                                        if (item.唯一码 == DownIofo.房间_频道号)
                                        {
                                            item.直播状态 = false;
                                            break;
                                        }
                                    }
                                    if (DownIofo.继承.是否为继承对象 && !DownIofo.是否是播放任务)
                                    {
                                        DownIofo.继承.合并后的文件路径 = 载完成合并FLV(DownIofo.继承.继承的下载文件路径, DownIofo.文件保存路径, true);
                                        if (!string.IsNullOrEmpty(DownIofo.继承.合并后的文件路径))
                                        {
                                            DownIofo.文件保存路径 = DownIofo.继承.合并后的文件路径;
                                        }
                                    }
                                    else if (!DownIofo.是否是播放任务)
                                    {
                                        FlvMethod.转码(DownIofo.文件保存路径);
                                    }

                                    InfoLog.InfoPrintf("下载任务结束\n==============下载任务结束================\n主播名:" + DownIofo.主播名称 + "\n房间号:" + DownIofo.房间_频道号 + "\n标题:" + DownIofo.标题 + "\n开播时间:" + MMPU.Unix转换为DateTime(DownIofo.开始时间.ToString()) + "\n结束时间:" + MMPU.Unix转换为DateTime(DownIofo.结束时间.ToString()) + "\n保存路径:" + DownIofo.文件保存路径 + "\n下载任务类型:" + (DownIofo.继承.是否为继承对象 ? "续下任务" : "新建下载任务") + "\n结束原因:" + DownIofo.备注 + "\n===============下载任务结束===============\n", InfoLog.InfoClass.载必要提示);
                                    载对象.DownIofo.载状态 = false;
                                    载对象.DownIofo.结束时间 = Convert.ToInt32((DateTime.UtcNow - new DateTime(1970, 1, 1, 0, 0, 0, 0)).TotalSeconds);
                                    DownIofo.载状态 = false;
                                    DownIofo.结束时间 = Convert.ToInt32((DateTime.UtcNow - new DateTime(1970, 1, 1, 0, 0, 0, 0)).TotalSeconds);
                                    return;
                                }
                                new Task((() =>
                                {
                                    while (true)
                                    {
                                        Thread.Sleep(1000);
                                        if (载对象.DownIofo.已下载大小bit > 1000)
                                        {
                                            DownIofo.载状态 = true;
                                            return;
                                        }
                                        if (!bilibili.根据房间号获取房间信息.是否正在直播(DownIofo.房间_频道号))
                                        {
                                            InfoLog.InfoPrintf("下载任务结束\n==============下载任务结束================\n主播名:" + DownIofo.主播名称 + "\n房间号:" + DownIofo.房间_频道号 + "\n标题:" + DownIofo.标题 + "\n开播时间:" + MMPU.Unix转换为DateTime(DownIofo.开始时间.ToString()) + "\n结束时间:" + MMPU.Unix转换为DateTime(DownIofo.结束时间.ToString()) + "\n保存路径:" + DownIofo.文件保存路径 + "\n下载任务类型:" + (DownIofo.继承.是否为继承对象 ? "续下任务" : "新建下载任务") + "\n结束原因:" + DownIofo.备注 + "\n===============下载任务结束===============\n", InfoLog.InfoClass.载必要提示);
                                            载对象.DownIofo.备注 = "停止直播";
                                            载对象.DownIofo.载状态 = false;
                                            载对象.DownIofo.结束时间 = Convert.ToInt32((DateTime.UtcNow - new DateTime(1970, 1, 1, 0, 0, 0, 0)).TotalSeconds);
                                            DownIofo.载状态 = false;
                                            DownIofo.结束时间 = Convert.ToInt32((DateTime.UtcNow - new DateTime(1970, 1, 1, 0, 0, 0, 0)).TotalSeconds);
                                            载对象.DownIofo.WC.CancelAsync();
                                            MMPU.DownList.Remove(载对象);
                                            return;
                                        }
                                    }
                                })).Start();
                                break;
                            }

                        //case "youtube":
                        //    {
                        //        break;
                        //    }
                        //case "T台":
                        //    {
                        //        break;
                        //    }
                        //case "FC2":
                        //    {
                        //        break;
                        //    }
                        //case "DDTV直播服务器":
                        //    {
                        //        break;
                        //    }
                        default:
                            DownIofo.载状态 = false;
                            DownIofo.结束时间 = Convert.ToInt32((DateTime.UtcNow - new DateTime(1970, 1, 1, 0, 0, 0, 0)).TotalSeconds);
                            InfoLog.InfoPrintf("该房间的配置文件发现了与当前版本不支持的平台,请检查文件配置或者检查更新", InfoLog.InfoClass.系统错误信息);
                            return;
                        }
                    }
                    else
                    {
                        DownIofo.备注 = "直播停止,下载完成下载完成";
                        InfoLog.InfoPrintf("下载任务结束\n==============下载任务结束================\n主播名:" + DownIofo.主播名称 + "\n房间号:" + DownIofo.房间_频道号 + "\n标题:" + DownIofo.标题 + "\n开播时间:" + MMPU.Unix转换为DateTime(DownIofo.开始时间.ToString()) + "\n结束时间:" + MMPU.Unix转换为DateTime(DownIofo.结束时间.ToString()) + "\n保存路径:" + DownIofo.文件保存路径 + "\n下载任务类型:" + (DownIofo.继承.是否为继承对象 ? "续下任务" : "新建下载任务") + "\n结束原因:" + DownIofo.备注 + "\n===============下载任务结束===============\n", InfoLog.InfoClass.载必要提示);
                        if (DownIofo.阿B直播流对象 != null && DownIofo.阿B直播流对象.startIn)
                        {
                            DownIofo.阿B直播流对象.Dispose();
                        }
                        return;
                    }
                }
            })).Start();
        }