示例#1
0
        public static string  载完成合并FLV(DownIofoData downIofo, bool 是否直播结束)
        {
            string        filename    = string.Empty;
            List <string> DelFileList = new List <string>();

            if (downIofo.继承.待合并文件列表.Count > 1)
            {
                filename = downIofo.继承.待合并文件列表[0];

                for (int i = 0; i < downIofo.继承.待合并文件列表.Count - 1; i++)
                {
                    DelFileList.Add(downIofo.继承.待合并文件列表[i + 1]);
                    FlvMethod.Flv A = new FlvMethod.Flv()
                    {
                        File1Url = filename,
                        File2Url = downIofo.继承.待合并文件列表[i + 1]
                    };
                    DelFileList.Add(filename);
                    string BB = FlvMethod.FlvSum(A, 是否直播结束);
                    if (string.IsNullOrEmpty(BB))
                    {
                        InfoLog.InfoPrintf($"{downIofo.房间_频道号}:{downIofo.主播名称}因为网络连接不稳定,无法获取文件头,放弃合并该flv", InfoLog.InfoClass.载必要提示);
                        return(filename);
                    }
                    filename = BB;
                }
            }
            foreach (var item in DelFileList)
            {
                MMPU.文件删除委托(item, "FLV合并任务");
            }
            return(filename);
        }
示例#2
0
 /// <summary>
 /// 关闭直播流和弹幕储存流
 /// </summary>
 public static void Clear(bool 续命模式, DownIofoData DOL)
 {
     //DOL.备注 = "下载任务结束";
     DOL.载状态 = false;
     if (!续命模式)
     {
         try
         {
             DOL.阿B直播流对象.Dispose();
             InfoLog.InfoPrintf($"{DOL.房间_频道号}房间直播流对象回收完成", InfoLog.InfoClass.Debug);
         }
         catch (Exception) { }
         try
         {
             DOL.弹幕储存流.Close();
             DOL.弹幕储存流.Dispose();
             InfoLog.InfoPrintf($"{DOL.房间_频道号}房间弹幕储存流对象回收完成", InfoLog.InfoClass.Debug);
         }
         catch (Exception) { }
         try
         {
             DOL.礼物储存流.Close();
             DOL.礼物储存流.Dispose();
             InfoLog.InfoPrintf($"{DOL.房间_频道号}房间礼物储存流对象回收完成", InfoLog.InfoClass.Debug);
         }
         catch (Exception) { }
     }
     try
     {
         DOL.WC.Dispose();
         InfoLog.InfoPrintf($"{DOL.房间_频道号}房间WebClient对象回收完成", InfoLog.InfoClass.Debug);
     }
     catch (Exception) { }
 }
示例#3
0
 /// <summary>
 /// 初始化上传任务
 /// </summary>
 /// <param name="downIofo">下载信息</param>
 public UploadTask(DownIofoData downIofo)
 {
     try
     {
         uploadInfo = new UploadInfo(downIofo); //创建上传文件信息
         Uploader.UploadList.Add(uploadInfo);   //加入上传列表,便于Web端获取上传详情
     }
     catch (CreateUploadTaskFailure)
     {
         uploadInfo = null;//无法获取上传信息时为空
     }
 }
示例#4
0
        /// <summary>
        /// 测试上传,自动生成相应数据
        /// 指定上传源路径,上传顺序从config中获取
        /// </summary>
        /// <param name="srcFile">上传源文件路径</param>
        public UploadTest(string srcFile)
        {
            MMPU.Debug模式    = true;
            MMPU.Debug打印到终端 = true;

            downIofo        = new DownIofoData();
            downIofo.主播名称   = "UplaodTest_SteamerName";
            downIofo.标题     = "UplaodTest_StreamTitle";
            downIofo.房间_频道号 = "UplaodTest_RoomChannel";
            downIofo.开始时间   = 0;

            downIofo.文件保存路径 = srcFile;

            uploadTask = new UploadTask(downIofo);
            uploadTask.UploadVideo();
        }
示例#5
0
        /// <summary>
        /// 测试上传,自动生成相应数据
        /// 指定上传源文件,指定上传目标
        /// </summary>
        /// <param name="srcFile">上传源文件路径</param>
        /// <param name="type">上传目标</param>
        public UploadTest(string srcFile, string type)
        {
            MMPU.Debug模式          = true;
            MMPU.Debug打印到终端       = true;
            Uploader.enableUpload = true;

            downIofo        = new DownIofoData();
            downIofo.主播名称   = "UplaodTest_SteamerName";
            downIofo.标题     = "UplaodTest_StreamTitle";
            downIofo.房间_频道号 = "UplaodTest_RoomChannel";
            downIofo.开始时间   = 0;

            downIofo.文件保存路径 = srcFile;
            Uploader.UploadOrder.Clear();
            Uploader.UploadOrder.Add(1, type);

            uploadTask = new UploadTask(downIofo);
            uploadTask.UploadVideo();
        }
示例#6
0
 /// <summary>
 /// 初始化上传信息
 /// </summary>
 /// <param name="downIofo">下载信息</param>
 public UploadInfo(DownIofoData downIofo)
 {
     try
     {
         streamerName = downIofo.主播名称;
         streamTitle  = downIofo.标题;
         srcFile      = downIofo.文件保存路径;
         fileName     = System.IO.Path.GetFileName(srcFile);
         fileSize     = (double)new FileInfo(srcFile).Length;
         remotePath   = $"{downIofo.主播名称}_{downIofo.房间_频道号}/{MMPU.Unix转换为DateTime(downIofo.开始时间.ToString()).ToString("yyyyMMdd")}_{downIofo.标题}/";
         type         = null;
         retries      = 0;
     }
     catch
     {
         InfoLog.InfoPrintf($"创建{srcFile}上传任务失败,无法获取文件信息", InfoLog.InfoClass.系统错误信息);
         throw new CreateUploadTaskFailure("fail to ctreate upload task");//处理获取文件名、文件大小的错误
     }
 }
示例#7
0
 public void  载结束提醒(bool 是否结束弹幕录制, string 提醒标题, DownIofoData DOL)
 {
     try
     {
         if (是否结束弹幕录制 && MMPU.录制弹幕 && MMPU.弹幕录制种类 == 2)
         {
             try
             {
                 DOL.弹幕储存流.WriteLine("</i>");
                 DOL.弹幕储存流.Flush();//写入弹幕数据
             }
             catch (Exception)
             { }
             if (DOL != DownIofo)
             {
                 Clear(false, DownIofo);
             }
             Clear(false, DOL);
         }
         else
         {
             Clear(true, DOL);
         }
     }
     catch (Exception) { }
     InfoLog.InfoPrintf($"\r\n=============={提醒标题}================\r\n" +
                        $"主播名:{DOL.主播名称}" +
                        $"\r\n房间号:{DOL.房间_频道号}" +
                        $"\r\n标题:{DOL.标题}" +
                        $"\r\n开播时间:{MMPU.Unix转换为DateTime(DOL.开始时间.ToString())}" +
                        $"\r\n结束时间:{MMPU.Unix转换为DateTime(DOL.结束时间.ToString())}" +
                        $"\r\n保存路径:{DOL.文件保存路径}" +
                        $"\r\n下载任务类型:{(DOL.继承.是否为继承对象 ? "续下任务" : "新建下载任务")}" +
                        $"\r\n结束原因:{DOL.备注}" +
                        $"\r\n==============={提醒标题}===============\r\n", InfoLog.InfoClass.载必要提示);
 }
示例#8
0
        public static Downloader 新建下载对象(string 平台, string 唯一码, string 标题, string GUID, string 载地址, string 备注, bool 是否保存, string 主播名称, bool 是否为继承项目, string 继承项目的原始文件, DownIofoData 继承的项目 = null)
        {
            foreach (var item in MMPU.DownList)
            {
                if (item.DownIofo.房间_频道号 == 唯一码)
                {
                    if (item.DownIofo.载状态 && item.DownIofo.是否保存 && 是否保存)
                    {
                        InfoLog.InfoPrintf($"新建任务冲突,放弃新建任务,任务内容:\r\n房间号:{唯一码}\r\n主播名称:{主播名称}\r\n标题:{标题}", InfoLog.InfoClass.载必要提示);
                        return(null);
                    }
                    else
                    {
                        break;
                    }
                }
            }
            if (string.IsNullOrEmpty(标题))
            {
                标题 = $"V{new Random().Next(10000,99999)}";
            }
            Downloader 载对象 = new Downloader();

            载对象.DownIofo.继承 = new 继承();
            string 缓存路径 = MMPU.缓存路径;
            string 保存路径;

            if (MMPU.载储存目录 == 缓存路径)
            {
                保存路径 = 缓存路径 + 平台 + "_" + 主播名称 + "_" + 唯一码 + "/";
                if (!Directory.Exists(保存路径))//如果不存在就创建文件夹
                {
                    Directory.CreateDirectory(保存路径);
                }
                保存路径 = 保存路径 + 标题 + "_" + DateTime.Now.ToString("yyyyMMddHHmmssfff") + ".flv";
            }
            else
            {
                保存路径 = MMPU.载储存目录 + "/" + 平台 + "_" + 主播名称 + "_" + 唯一码 + "/";
                if (!Directory.Exists(保存路径))//如果不存在就创建file文件夹
                {
                    try
                    {
                        Directory.CreateDirectory(保存路径);
                    }
                    catch (Exception)
                    {
                        MMPU.载储存目录 = 缓存路径;
                        MMPU.setFiles("file", MMPU.载储存目录);
                        保存路径 = MMPU.载储存目录 + "/" + 平台 + "_" + 主播名称 + "_" + 唯一码 + "/";
                    }
                }
                保存路径 = 保存路径 + 标题 + "_" + DateTime.Now.ToString("yyyyMMddHHmmssfff") + ".flv";
                if (File.Exists(保存路径))
                {
                    Thread.Sleep(1);
                    保存路径 = MMPU.载储存目录 + "/" + 平台 + "_" + 主播名称 + "_" + 唯一码 + "/" + 标题 + "_" + DateTime.Now.ToString("yyyyMMddHHmmssfff") + ".flv";
                }
            }
            switch (平台)
            {
            case "bilibili":
            {
                载地址 = 载地址;
                break;
            }

            case "youtube":
            {
                break;
            }
            }
            载对象.DownIofo = new Downloader.DownIofoData
            {
                平台     = 平台,
                载状态    = true,
                房间_频道号 = 唯一码,
                文件保存路径 = 保存路径,
                事件GUID = GUID,
                载地址    = 载地址,
                是否保存   = 是否保存,
                标题     = 标题,
                备注     = 备注,
                主播名称   = 主播名称,
                继承     = new 继承()
                {
                    是否为继承对象   = 是否为继承项目,
                    继承的下载文件路径 = 继承项目的原始文件,
                }
            };
            if (继承的项目 != null)
            {
                载对象.DownIofo.继承.待合并文件列表 = 继承的项目.继承.待合并文件列表;
            }
            if (!是否保存)
            {
                int 随机值 = new Random().Next(1000, 9999);
                载对象.DownIofo.文件保存路径 = 缓存路径 + "LiveCache/" + 载对象.DownIofo.标题 + DateTime.Now.ToString("yyyyMMddHHmmssfff") + "_" + 随机值 + ".flv";
                if (File.Exists(载对象.DownIofo.文件保存路径))
                {
                    载对象.DownIofo.文件保存路径 = 缓存路径 + "LiveCache/" + 载对象.DownIofo.标题 + DateTime.Now.ToString("yyyyMMddHHmmssfff") + "_" + (随机值) + 1 + ".flv";
                }
            }

            载对象.Start(备注);

            return(载对象);
        }