一款.NET开源、跨平台的DASH/HLS/MSS下载工具

前言

今天大姚给大家分享一款.NET开源(MIT License)、免费、跨平台的DASH/HLS/MSS下载工具,并且支持点播和直播(DASH/HLS)的内容下载:N_m3u8DL-RE。

网络流媒体传输协议介绍

DASH

DASH是一种基于HTTP的自适应流媒体网络传输协议,它允许流媒体内容以多个编码和比特率的形式进行分发,客户端可以根据网络状况、设备能力和用户偏好动态地选择合适的流进行播放。

HLS

HLS是苹果公司提出的一种基于HTTP的自适应流媒体传输协议,它通过将视频文件分割成多个小的基于HTTP的文件(通常是TS格式),并创建一个播放列表(m3u8文件)来引用这些文件,从而实现流媒体内容的传输。

MSS

MSS是微软开发的一种用于流媒体内容的自适应传输技术,它通过将视频和音频数据分割成多个片段,并创建多个不同比特率的版本,然后使用HTTP将这些片段传输到客户端,以实现流畅的视频播放。

工具源代码

图片

命令行参数

Description:N_m3u8DL-RE (Beta version) 20230628Usage:N_m3u8DL-RE <input> [options]Arguments:<input>  链接或文件Options:--tmp-dir <tmp-dir>                      设置临时文件存储目录--save-dir <save-dir>                    设置输出目录--save-name <save-name>                  设置保存文件名--base-url <base-url>                    设置BaseURL--thread-count <number>                  设置下载线程数 [default: 16]--download-retry-count <number>          每个分片下载异常时的重试次数 [default: 3]--auto-select                            自动选择所有类型的最佳轨道 [default: False]--skip-merge                             跳过合并分片 [default: False]--skip-download                          跳过下载 [default: False]--check-segments-count                   检测实际下载的分片数量和预期数量是否匹配 [default: True]--binary-merge                           二进制合并 [default: False]--del-after-done                         完成后删除临时文件 [default: True]--no-date-info                           混流时不写入日期信息 [default: False]--no-log                                 关闭日志文件输出 [default: False]--write-meta-json                        解析后的信息是否输出json文件 [default: True]--append-url-params                      将输入Url的Params添加至分片, 对某些网站很有用, 例如 kakao.com [default: False]-mt, --concurrent-download               并发下载已选择的音频、视频和字幕 [default: False]-H, --header <header>                    为HTTP请求设置特定的请求头, 例如:-H "Cookie: mycookie" -H "User-Agent: iOS"--sub-only                               只选取字幕轨道 [default: False]--sub-format <SRT|VTT>                   字幕输出类型 [default: SRT]--auto-subtitle-fix                      自动修正字幕 [default: True]--ffmpeg-binary-path <PATH>              ffmpeg可执行程序全路径, 例如 C:\Tools\ffmpeg.exe--log-level <DEBUG|ERROR|INFO|OFF|WARN>  设置日志级别 [default: INFO]--ui-language <en-US|zh-CN|zh-TW>        设置UI语言--urlprocessor-args <urlprocessor-args>  此字符串将直接传递给URL Processor--key <key>                              设置解密密钥, 程序调用mp4decrpyt/shaka-packager进行解密. 格式:--key KID1:KEY1 --key KID2:KEY2--key-text-file <key-text-file>          设置密钥文件,程序将从文件中按KID搜寻KEY以解密.(不建议使用特大文件)--decryption-binary-path <PATH>          MP4解密所用工具的全路径, 例如 C:\Tools\mp4decrypt.exe--use-shaka-packager                     解密时使用shaka-packager替代mp4decrypt [default: False]--mp4-real-time-decryption               实时解密MP4分片 [default: False]-M, --mux-after-done <OPTIONS>           所有工作完成时尝试混流分离的音视频. 输入 "--morehelp mux-after-done" 以查看详细信息--custom-hls-method <METHOD>             指定HLS加密方式 (AES_128|AES_128_ECB|CENC|CHACHA20|NONE|SAMPLE_AES|SAMPLE_AES_CTR|UNKNOWN)--custom-hls-key <FILE|HEX|BASE64>       指定HLS解密KEY. 可以是文件, HEX或Base64--custom-hls-iv <FILE|HEX|BASE64>        指定HLS解密IV. 可以是文件, HEX或Base64--use-system-proxy                       使用系统默认代理 [default: True]--custom-proxy <URL>                     设置请求代理, 如 http://127.0.0.1:8888--custom-range <RANGE>                   仅下载部分分片. 输入 "--morehelp custom-range" 以查看详细信息--task-start-at <yyyyMMddHHmmss>         在此时间之前不会开始执行任务--live-perform-as-vod                    以点播方式下载直播流 [default: False]--live-real-time-merge                   录制直播时实时合并 [default: False]--live-keep-segments                     录制直播并开启实时合并时依然保留分片 [default: True]--live-pipe-mux                          录制直播并开启实时合并时通过管道+ffmpeg实时混流到TS文件 [default: False]--live-fix-vtt-by-audio                  通过读取音频文件的起始时间修正VTT字幕 [default: False]--live-record-limit <HH:mm:ss>           录制直播时的录制时长限制--live-wait-time <SEC>                   手动设置直播列表刷新间隔--mux-import <OPTIONS>                   混流时引入外部媒体文件. 输入 "--morehelp mux-import" 以查看详细信息-sv, --select-video <OPTIONS>            通过正则表达式选择符合要求的视频流. 输入 "--morehelp select-video" 以查看详细信息-sa, --select-audio <OPTIONS>            通过正则表达式选择符合要求的音频流. 输入 "--morehelp select-audio" 以查看详细信息-ss, --select-subtitle <OPTIONS>         通过正则表达式选择符合要求的字幕流. 输入 "--morehelp select-subtitle" 以查看详细信息-dv, --drop-video <OPTIONS>              通过正则表达式去除符合要求的视频流.-da, --drop-audio <OPTIONS>              通过正则表达式去除符合要求的音频流.-ds, --drop-subtitle <OPTIONS>           通过正则表达式去除符合要求的字幕流.--morehelp <OPTION>                      查看某个选项的详细帮助信息--version                                Show version information-?, -h, --help                           Show help and usage information

工具运行截图

图片

图片

项目源码地址

更多项目实用功能和特性欢迎前往项目开源地址查看👀,别忘了给项目一个Star支持💖。

  • https://github.com/nilaoda/N_m3u8DL-RE

优秀项目和框架精选

该项目已收录到C#/.NET/.NET Core优秀项目和框架精选中,关注优秀项目和框架精选能让你及时了解C#、.NET和.NET Core领域的最新动态和最佳实践,提高开发工作效率和质量。坑已挖,欢迎大家踊跃提交PR推荐或自荐(让优秀的项目和框架不被埋没🤞)。

  • https://github.com/YSGStudyHards/DotNetGuide/blob/main/docs/DotNet/DotNetProjectPicks.md

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/389079.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

2024年8月1日(前端服务器的配置以及tomcat环境的配置)

[rootstatic ~]# cd eleme_web/ [rootstatic eleme_web]# cd src/ [rootstatic src]# ls views/ AboutView.vue HomeView.vue [rootstatic src]# vim views/HomeView.vue [rootstatic src]# nohup npm run serve nohup: 忽略输入并把输出追加到"nohup.out" 构建项目…

零基础入门转录组数据分析——机器学习算法之boruta(筛选特征基因)

零基础入门转录组数据分析——机器学习算法之boruta&#xff08;筛选特征基因&#xff09; 目录 零基础入门转录组数据分析——机器学习算法之boruta&#xff08;筛选特征基因&#xff09;1. boruta基础知识2. boruta&#xff08;Rstudio&#xff09;——代码实操2. 1 数据处理…

机器学习之贝叶斯方法

机器学习之贝叶斯方法 1. 贝叶斯定理基础1.1 贝叶斯定理公式1.2 先验概率 (Prior Probability)1.3 后验概率 (Posterior Probability)1.4 似然 (Likelihood)1.5 证据 (Evidence)1.6 贝叶斯定理的应用实例 2. 贝叶斯方法的基本概念2.1 条件概率 (Conditional Probability)2.2 全…

Python SDK 使用Azure Document intelligence报错(404) Resource not found

最近项目需要使用到Azure Document intelligence,于是去做POC&#xff0c;但是发现最简单的demo跑的时候都会报这个错&#xff0c;解决了一下午终于搞定了&#xff0c;记录下。 首先是官方文档&#xff1a;Quickstart: Document Intelligence (formerly Form Recognizer) clien…

反序列化漏洞vulhub靶场serial

环境搭建 下载 https://download.vulnhub.com/serial/serial.zip 解压出来就是这种 你会得到一个这样的文件&#xff0c;这里使用VMware新建一个虚拟机&#xff0c;这里记录比较重要的几部分。 这里就是使用我们刚才下过来的。 漏洞过程详解 1.信息收集 打开靶机&#xff0…

IDEA切换分支,会影响当前在跑的项目吗?

说明&#xff1a;本文测试&#xff0c;在IDEA中运行项目&#xff0c;然后切换分支&#xff0c;是否会影响当前正在跑的项目 准备工作 首先&#xff0c;创建一个Git项目&#xff0c;接口如下&#xff1a; import org.springframework.web.bind.annotation.GetMapping; import…

13. 文本框和单选题

属性说明type指定元素的类型。text、password、checkbox、radio、submit、reset、file、hidden、image和button&#xff0c;默认为textname指定表单元素的名称value元素的初始值。type为radio时必须指定一个值size指定表单元素的初识宽度&#xff0c;当type为text或password时&…

3.Java面试题之AQS

1. 写在前面 AQS&#xff08;AbstractQueuedSynchronizer&#xff09;是Java并发包&#xff08;java.util.concurrent&#xff09;中的一个抽象类&#xff0c;用于实现同步器&#xff08;如锁、信号量、栅栏等&#xff09;。AQS提供了一种基于FIFO队列的机制来管理线程的竞争和…

【RabbitMQ】路由模式(Routing)

一、基本概念 生产者&#xff08;Producer&#xff09;&#xff1a;发送消息到交换机的程序。在发送消息时&#xff0c;需要指定一个路由键。交换机&#xff08;Exchange&#xff09;&#xff1a;接收生产者发送的消息&#xff0c;并根据路由键将消息路由到与之匹配的队列。在…

1.kafka面试题之零拷贝

1. 写在前面 Kafka 是一个高性能的分布式消息系统&#xff0c;它使用了多种优化技术来提高数据传输效率&#xff0c;其中之一就是 “零拷贝”&#xff08;Zero Copy&#xff09;。零拷贝技术可以显著减少数据在内存中的复制次数&#xff0c;从而提高 I/O 操作的效率&#xff0…

volatile 关键字的两层语义

volatile 关键字的两层语义 1、可见性2、禁止指令重排序3、工作机制4、总结 &#x1f496;The Begin&#x1f496;点点关注&#xff0c;收藏不迷路&#x1f496; volatile 关键字在Java并发编程中扮演着重要角色&#xff0c;它主要用于保证变量的可见性和禁止指令重排序。 1、…

python绘图 | 横坐标是日期,纵坐标是数值

需求 profit_value [0.084, 0.225, 0.234, 0.264, 0.328] time_stamp [20221111, 20230511, 20230704, 20231212, 20240315] 横坐标是日期&#xff0c;纵坐标是数值&#xff0c;我想绘图的时候&#xff0c;横坐标是按日期格式来 代码 from matplotlib import pyplot as pl…

Mallet:一款针对任意协议的安全拦截代理工具

关于Mallet Mallet是一款功能强大的协议安全分析工具&#xff0c;该工具支持针对任意协议创建用于安全审计的拦截代理&#xff0c;该工具本质上与我们所熟悉的拦截Web代理类似&#xff0c;只是通用性更强。 工具运行机制 Mallet建立在Netty框架之上&#xff0c;并且依赖于Net…

ThreadLocal:线程本地变量的作用与应用

ThreadLocal&#xff1a;线程本地变量的作用与应用 1、简介2、作用3、应用场景4、注意事项 &#x1f496;The Begin&#x1f496;点点关注&#xff0c;收藏不迷路&#x1f496; 1、简介 ThreadLocal 是Java中一个强大的工具类&#xff0c;用于创建线程局部变量。它为每个使用该…

7.Redis的Hash类型

Hash类型&#xff0c;也叫散列&#xff0c;其value是一个无序字典&#xff0c;类似于HashMap结构。 问题 String结构是将对象序列化为json字符串后存储&#xff0c;当需要修改对象某个字段是不是很方便。 key value…

AHK是让任何软件都支持 Shift + 鼠标滚轮 实现界面水平滚动

目录 基本介绍 详细特点 图解安装 下载失败&#xff1f;缓慢&#xff1f; 创建并运行脚本代码&#x1f603; 新建空 xxx.ahk文件 vscode/记事本等编辑工具打开 复制并粘贴简易脚本 运行 其他问题 问题一&#xff1a;弹出无法执行此脚本 关闭脚本 基本介绍 AutoHot…

大厂面试必备的软件测试八股文【附答案】

&#x1f345; 点击文末小卡片 &#xff0c;免费获取软件测试全套资料&#xff0c;资料在手&#xff0c;涨薪更快 前言 最近有很多粉丝问我&#xff0c;有什么方法能够快速提升自己&#xff0c;通过阿里、腾讯、字节跳动、京东等互联网大厂的面试&#xff0c;我觉得短时间提升…

【全网最全最详细】MYSQL 面试题大全(下)

目录 五十一、MYSQL主从复制的过程? 五十二、介绍一下InnbDB的数据页,和B+树的关系是什么? 五十三、MYSQL的驱动表是什么?如何选驱动表? 五十四、MYSQL的hash join是什么? 五十五、MYSQL执行大事务会存在什么问题? 五十六、什么是buffer pool? 五十七、buffer p…

软件测试--兼容性测试

兼容性测试综述 软件兼容性测试是指检查软件之间是否能够正确的交互和共享信息 交互可以同时运行于同一台计算机上的两个程序之间&#xff0c;甚至在相隔几千公里通过因特网连接的不同计算机上的两个程序之间进行。还可以离线介质如导出到介质然后导入到其他计算机的其他软件…

Python pyautogui 自动控制 MDK Keil_v5 Pack Installer 的 Packs 安装过程

MDK Keil_v5 安装完成后&#xff0c;会自动进行 Pack Installer 的 Packs 安装&#xff0c;安装过程中首先 install 需要一行行用鼠标点&#xff0c;然后每一行的 Pack 都会出现同意安装或连接超时的弹窗&#xff0c;需要鼠标操作确认。 pyautogui 可以帮助自动控制鼠标完成确…