Coder Social home page Coder Social logo

harlan-h / m3u8downloader_h Goto Github PK

View Code? Open in Web Editor NEW
607.0 8.0 88.0 1001 KB

[.net6]m3u8下载器,功能强大,多线程,多任务,支持aes-128-cbc解密,自定义请求头,自定义插件

License: MIT License

C# 99.65% PowerShell 0.35%
m3u8 m3u8-downloader m3u8-parser m3u8download m3u8downloader

m3u8downloader_h's Introduction

M3u8Downloader_H

软件分两个版本:

插件项目地址

特点

  • 支持多线程,多任务,断点续传
  • 支持aes-128-cbc,aes-192-cbc,aes-256-cbc自动解密
  • 支持对m3u8的ts,fmp4格式下载
  • 支持拖拽文件夹实现快速合并
  • 支持批量下载功能
  • 支持代理,在设置中配置
  • m3u8的地址不受时效影响,具体参见帮助文档
  • 当使用m3u8文件下载时,密钥可以是磁盘地址,也可以是网络地址
  • 自动根据m3u8文件中的链接地址来识别是下载还是合并操作
  • 自动转换png,jpg,bmp等伪装格式的ts流
  • 自动识别直播流,同时下载直播流
  • 可以自定义请求头
  • 个性化的m3u8下载,可以采用xml,json等方式下载m3u8的文件内容
  • 提供http接口调用,可以使用任何语言对软件发起调用下载,具体参见帮助文档
  • 提供插件功能,可以个性化定制自己的下载需求,具体参见帮助文档->插件开发
  • 特定网站可以直接通过网页地址来下载m3u8视频

帮助文档

环境问题

  1. 程序是64位 只支持64位系统
  2. 如果提示安装.net6 可以自行下载安装,地址:https://dotnet.microsoft.com/zh-cn/download/dotnet/thank-you/runtime-desktop-6.0.9-windows-x64-installer
  3. 对于win7 64用户.net6安装完成 如果出现点击程序没有任何反应(没有反应指没有任何报错也不出任何界面) 那么就需要进行第二个步骤

开发相关

  • 本项目不依赖任何第三方的下载器,解析器,所有下载及解析实现全部由本程序自己实现
  • 核心只使用了一个cli的库,转码采用的ffmpeg,因为本人对音视频不熟悉没有办法自己实现

依赖

本项目一共使用这4个库,前3个都是针对界面的

截图

QQ截图20221120192851 setting1 QQ截图20221120192700

支持作者

微信 支付宝
weixin zhi

m3u8downloader_h's People

Contributors

harlan-h avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

m3u8downloader_h's Issues

怎么适配其他的m3u8直播网站?比如小鹅通,微赞这类

音频下载

大佬,能够新增批量下载音频功能,提取在线视频中的音频,转换选项增加MP3

有时出现下载时长和实际时长不一致的情况,什么原因?

(https://apppuhyjuw08416.h5.xiaoeknow.com/v2/course/alive/l_63427b47e4b050af23c1e4ac?type=2&resource_type=4&resource_id=l_63427b47e4b050af23c1e4ac&app_id=apppuhyjuw08416&pro_id=p_634bb6bfe4b0a51fef298078)

这个会议下午下了3个多小时(会议时长是3个多小时),下载结束后打开视频才1个多小时,进度条拖到最后,确实也只有1个多小时…

是我设置问题吗?怎么设置能增强直播下载的稳定性?
image

m3u8下载线程数不对

使用M3u8文件列表下载线程数不对,下载的buffer[]size也太小建议改大点,一般1M比较或者更大比较好,太小容易断联。
M3u8之类的视频根本不用ffmpg4,直接文件文件拼合就能出视频文件。
同时下载的线程数不能达到设置的线程,建议直接先创建下载Task列表
然后使用while循环去检测Task下载状态,使下载线程切换更快

下载过程中报错

image
你好 我在下载视频的时候,每隔一段时间就会出现下载报错的问题,查看原因显示如上图,请问这大概是什么问题呢

希望更新一下。谢谢!

希望下次更新能支持:
1.完成后自动删缓存。
2.支持mp4等其他格式下载。【很期待这个啊,就不开IDM了】
3.支持多目录批量添加。就是批量的时候区分不同目录。【我自己尝试添加了这个功能,可以好像有其他问题,例如第5和12点。】
4.管理权限运行下【API模式】依然支持拖动添加。
5.批量添加模式下:修复同名不同目录但是被认为是一个文件直接被忽略的Bug。
6.配置文件参数能保存到运行目录。不要存默认下载目录。(貌似每次运行都要选择一次线程数量和任务数量)
7.增加提示音是否播放按钮。
8.支持未下载完成的,例如98%卡住的任务暂停和重试。现在貌似只能全部重试。
9.支持下载失败列表导出。
10.增加一个列表状态数量/已完成的 进度显示。
11.修复一下下载FFpeg下载出错时合成失败的问题。
12.下载模式为本地M3U8。格式选择非默认的情况下。关闭软件重开,会导致合成失败,原因是路径不对。只会寻找根目录。例如c:\1.tmp 实际保持路径c:\abc\123\1.tmp

直播的key动态加密有办法处理吗?我想中转这个信号源。

#EXTM3U
#EXT-X-VERSION:3
#EXT-X-MEDIA-SEQUENCE:29031
#EXT-X-TARGETDURATION:4
#EXT-X-KEY:METHOD=AES-128,URI="https://cdn-key.hkdtmb.com/81/1688002981505.key",IV=0x00000000000000000000018904D16E81
#EXTINF:4.000,
1688003008966.ts
#EXTINF:4.000,
1688003013382.ts
#EXTINF:4.000,
1688003017421.ts
#EXT-X-KEY:METHOD=AES-128,URI="https://cdn-key.hkdtmb.com/81/1688003020776.key",IV=0x00000000000000000000018904D207E8
#EXTINF:4.000,
1688003020776.ts
#EXTINF:4.000,
1688003025089.ts
#EXTINF:4.000,
1688003031821.ts
#EXTINF:4.000,
1688003034696.ts
#EXTINF:4.000,
1688003036634.ts
#EXTINF:4.000,
1688003040654.ts
#EXTINF:4.000,
1688003049166.ts
#EXTINF:4.000,
1688003050790.ts
#EXTINF:4.000,
1688003052642.ts
#EXTINF:4.000,
1688003056849.ts
#EXT-X-KEY:METHOD=AES-128,URI="https://cdn-key.hkdtmb.com/81/1688003060849.key",IV=0x00000000000000000000018904D2A471
#EXTINF:4.000,
1688003060849.ts
#EXTINF:4.000,
1688003065419.ts

大大包里有ffmpeg,怎么不设计合并转码

你参考下这段批处理:这是ts转为mp4的,不过这个不完善;会把分集的同源文件合并为一集,你顺着这个思路搞就好。谢谢!
SetLocal EnableDelayedExpansion
echo.>0.txt
for /f "delims=" %%a in ('dir /b/a-d *.ts') do (
echo %cd%%%a>>0.txt
)
for /f "delims=" %%i in (0.txt) do (
set str=%%i
set "str=!str:E:=file 'E:!"
set "str=!str:.ts=.ts'!"
echo !str!>>1.txt
)
move 1.txt 0.txt
ffmpeg.exe -f concat -safe 0 -i 0.txt -c copy out.mp4
pause
rem -safe 0: 防止Operation not permitted
rem dir /s /b *.ts> 0.txt此命令会列举子文件夹ts

下载完成后不会清理缓存文件

设置中,清理缓存的选项已经打开,用管理员权限运行测试过好几次,下载完成后都不会清理缓存文件。

提一点小建议,restapi 的参数都很长,可以考虑缩写一下,比如 download 用 dl 来代替,一般也能理解

看文件是下载成功的,毕竟有文件大小。但是还差合并的时候出错

System.InvalidOperationException: ffmpeg异常退出 退出码 (1).
参数:
-allowed_extensions ALL -i D:\ruanjian\M3u8Downloader_H\download\19ad4b8cfc1d4d23ae703d023d5f4e70\generated.m3u8 -f mp4 -c:a copy -c:v copy -nostdin -y D:\ruanjian\M3u8Downloader_H\download\19ad4b8cfc1d4d23ae703d023d5f4e70.mp4
错误是:
ffmpeg version 4.4.1-full_build-www.gyan.dev Copyright (c) 2000-2021 the FFmpeg developers
built with gcc 11.2.0 (Rev1, Built by MSYS2 project)
configuration: --enable-gpl --enable-version3 --enable-static --disable-w32threads --disable-autodetect --enable-fontconfig --enable-iconv --enable-gnutls --enable-libxml2 --enable-gmp --enable-lzma --enable-libsnappy --enable-zlib --enable-librist --enable-libsrt --enable-libssh --enable-libzmq --enable-avisynth --enable-libbluray --enable-libcaca --enable-sdl2 --enable-libdav1d --enable-libzvbi --enable-librav1e --enable-libsvtav1 --enable-libwebp --enable-libx264 --enable-libx265 --enable-libxvid --enable-libaom --enable-libopenjpeg --enable-libvpx --enable-libass --enable-frei0r --enable-libfreetype --enable-libfribidi --enable-libvidstab --enable-libvmaf --enable-libzimg --enable-amf --enable-cuda-llvm --enable-cuvid --enable-ffnvcodec --enable-nvdec --enable-nvenc --enable-d3d11va --enable-dxva2 --enable-libmfx --enable-libglslang --enable-vulkan --enable-opencl --enable-libcdio --enable-libgme --enable-libmodplug --enable-libopenmpt --enable-libopencore-amrwb --enable-libmp3lame --enable-libshine --enable-libtheora --enable-libtwolame --enable-libvo-amrwbenc --enable-libilbc --enable-libgsm --enable-libopencore-amrnb --enable-libopus --enable-libspeex --enable-libvorbis --enable-ladspa --enable-libbs2b --enable-libflite --enable-libmysofa --enable-librubberband --enable-libsoxr --enable-chromaprint
libavutil 56. 70.100 / 56. 70.100
libavcodec 58.134.100 / 58.134.100
libavformat 58. 76.100 / 58. 76.100
libavdevice 58. 13.100 / 58. 13.100
libavfilter 7.110.100 / 7.110.100
libswscale 5. 9.100 / 5. 9.100
libswresample 3. 9.100 / 3. 9.100
libpostproc 55. 9.100 / 55. 9.100
[hls @ 000001f8334dc500] Opening 'D:\ruanjian\M3u8Downloader_H\download\19ad4b8cfc1d4d23ae703d023d5f4e70\1.tmp' for reading
[hls @ 000001f8334dc500] Could not find codec parameters for stream 0 (Video: png, none(pc)): unspecified size
Consider increasing the value for the 'analyzeduration' (0) and 'probesize' (5000000) options
Input #0, hls, from 'D:\ruanjian\M3u8Downloader_H\download\19ad4b8cfc1d4d23ae703d023d5f4e70\generated.m3u8':
Duration: 00:01:00.11, bitrate: 0 kb/s
Program 0
Metadata:
variant_bitrate : 0
Stream #0:0: Video: png, none(pc), 25 tbr, 25 tbn, 25 tbc
Metadata:
variant_bitrate : 0
Output #0, mp4, to 'D:\ruanjian\M3u8Downloader_H\download\19ad4b8cfc1d4d23ae703d023d5f4e70.mp4':
Output file #0 does not contain any stream

at M3u8Downloader_H.Core.VideoConverter.FFmpeg.ExecuteAsync(String arguments, IProgress`1 progress, CancellationToken cancellationToken)
at M3u8Downloader_H.Core.DownloaderSources.DownloaderSource.ConverterToMp4(String m3u8FilePath, Boolean allowed_extensions, CancellationToken cancellationToken)
at M3u8Downloader_H.Core.DownloaderSources.DownloaderSource.ConvertWithM3u8File(CancellationToken cancellationToken)
at M3u8Downloader_H.Core.DownloaderSources.DownloaderSource.Converter(Boolean isFile, CancellationToken cancellationToken)
at M3u8Downloader_H.Core.DownloaderSources.DownloadVodSource.DownloadAsync(CancellationToken cancellationToken)
at M3u8Downloader_H.Services.DownloadService.DownloadAsync(IDownloaderSource downloaderSource, DownloadRateSource downloadRate, CancellationToken cancellationToken)
at M3u8Downloader_H.ViewModels.DownloadViewModel.b__41_0()
下载的东西:nos.netease.co谷谷谷谷m/yanxuan/fa9fa2d7咕咕咕咕8b13ba4ae62c737b89a33cff.m3u8
版本是下载最新的

下载失败了,碎片文件怎么合并?

image
image

System.Net.Http.HttpRequestException: Response status code does not indicate success: 403 (Forbidden).
   at System.Net.Http.HttpResponseMessage.EnsureSuccessStatusCode()
   at M3u8Downloader_H.Common.Extensions.HttpClientExtension.GetStreamAndUriAsync(HttpClient httpClient, Uri uri, IEnumerable`1 headers, CancellationToken cancellationToken)
   at M3u8Downloader_H.M3U8.M3UFileReaderManangers.M3UFileReaderManager.GetM3u8FileInfo(Uri uri, IEnumerable`1 headers, CancellationToken cancellationToken)
   at M3u8Downloader_H.M3U8.M3UFileReaderManangers.M3UFileReaderManager.GetM3u8FileInfo(Uri uri, IEnumerable`1 headers, Boolean isRetry, CancellationToken cancellationToken)
   at M3u8Downloader_H.Core.DownloaderSources.DownloadLiveSource.GetLiveFileInfos(Uri url, IEnumerable`1 Headers, CancellationToken cancellationToken)
   at M3u8Downloader_H.Core.DownloaderSources.DownloadLiveSource.GetM3U8FileInfoAsync(CancellationToken cancellationToken)
   at M3u8Downloader_H.Core.DownloaderSources.DownloadLiveSource.DownloadAsync(CancellationToken cancellationToken)
   at M3u8Downloader_H.Services.DownloadService.DownloadAsync(IDownloaderSource downloaderSource, DownloadRateSource downloadRate, CancellationToken cancellationToken)
   at M3u8Downloader_H.ViewModels.DownloadViewModel.<OnStart>b__41_0()

这种情况怎么挽救?
所在文件夹里都是碎片,打开单个文件,无法播放。怎么快速合并?

下载链接:https://live.am-hpc.com/live/qgydjpx20221218_1080p.m3u8?txSecret=97b6d8cee947061a7433efc6ff08ad07&txTime=639EF3EA

无法获取抖音VR直播的数据

抖音现在有VR直播,一般在晚上18点-22点之间,有一些主播在播。尝试录制视频时发现这些直播的地址是无法在电脑的浏览器里播放的,直接提示只能在手机上播放,而且该直播的源数据应该是8k左右格式的,但是最高清晰度貌似限制了只能在移动端播放,最高清晰度可能还限制了只能是pico设备。直接用本软件输入直播地址来获取的话,会提示获取失败。大佬能否使本程序支持直接下载vr直播的视频?
目前我采用real-url那个软件可以获取到m3u8地址,然后把链接中的hd5vr2d字样,改为uhdvr2d字样,就可以用本软件下载4k的单画面视频,但仍然不能下载8k左右格式的原画面。

是不是还不支持SAMPLE-AES,skd://这样的key?

#EXT-X-KEY:METHOD=SAMPLE-AES,URI="skd://ChDy656Hr-4xToOFUpIfaK4oEhDlvHJq1JVNUUK3TFDtlI22GpIBeyJ2IjoiMiIsImZpZCI6IjUzZHYwMTUyMSIsInN2aWQiOiJkaWdpdGFsIiwicGwiOiJleUp3YVdRaU9pSTFNMlIyTURFMU1qRWlMQ0prWld4cGRtVnllVjkwZVhCbElqb2ljM1FpZlEiLCJjcyI6IjA0M2VjN2RhNWE0NDdkM2Y5NTE5Y2VkZmQ3NzE5OTliIn0",IV=0xe5bc726ad4954d5142b74c50ed948db6,KEYFORMAT="com.apple.streamingkeydelivery"

下载DMM发现它更新了加密方式,不是以前的drm_phone那种方式了,查了一下好像需要通过网络获取key。

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.