多线程下载
为了提高下载速度,使用了线程池,来调用下载程序。

for (int i = 0; i < thStepCount; i++)
{undefined
thStep[i] = new Thread(threaddownloadfiles);
thStep[i].Name = i.ToString();
thStep[i].Start();
}

线程的同步问题
多个线程同时调用aria2c对m3u8文件中的所有TS文件进行下载,为了保证各线程的工作不重复,不遗漏,需要有同步机制,最开始想用lock来实现,发现比较麻烦,后来改用比较笨的方式,统计TS文件总数,按照线程数进行分配,各自完成自己分配范围内的下载任务:

if (Thread.CurrentThread.Name.Equals(“0”)) //线程1处理的文件
{undefined
startpos = 0; endpos = listView1.Items.Count / 3;

}
else if (Thread.CurrentThread.Name.Equals("1")) //线程2处理的文件
{
startpos = listView1.Items.Count / 3; endpos = listView1.Items.Count * 2 / 3;
}
else if (Thread.CurrentThread.Name.Equals("2")) //线程3处理的文件
{
startpos = listView1.Items.Count * 2 / 3; endpos = listView1.Items.Count;
}

for (int i = startpos; i < endpos; i++)
{undefined
//调用下载的函数;
}

工具下载
TSMatser是一个m3u8及TS文件、CKplayer视频文件下载解密工具。下载key文件和ts文件时采用了多线程技术,调用aria2c进行下载。

以上不能解决问题 Error when loading first segment 'x.ts' 但仍然收藏

摘自 cquptvlry的博客_CSDN博客-TSmaster领域博主

参考资料 https://www.bilibili.com/read/cv8978312

    内容分页 1 2
声明:本站所有文章,如无特殊说明或标注,均为本站原创发布。任何个人或组织,在未征得本站同意时,禁止复制、盗用、采集、发布本站内容到任何网站、书籍等各类媒体平台。如若本站内容侵犯了原著者的合法权益,可联系我们进行处理。