-
Notifications
You must be signed in to change notification settings - Fork 102
Aria2
English translation is NOT provided temporarily.
Because I don't know how many non-Chinese users there are who do need these documentation. Submit an issue if necessary.
Before that, please translate by yourself.
本文将叙述如何搭配使用 aria2 和 youtube-dl, annie 。
即使你未在使用 video-downloader-deploy ,仍能进行以下步骤。同时本文假设你已经掌握 youtube-dl, annie 的基本使用,只是从未配置或使用过 aria2 。
以防万一,首先明确一下本文中符号的使用:
-
$
符号表示命令,实际输入时不要带上,例如下文中出现:$ echo test
而实际只需输入:
echo test
-
>
符号表示仅适用于 Windows CMD 的命令。例如设置HTTP_PROXY
时:> set "http_proxy=http://127.0.0.1:10809" > set "https_proxy=http://127.0.0.1:10809"
而 Linux/macOS 设置
HTTP_PROXY
的命令为:$ export http_proxy=http://127.0.0.1:1080 $ export https_proxy=http://127.0.0.1:1080
其中 10809、1080 等为本地端口,下文中凡有涉及的,请自行修改。
前往 GitHub Relaeases 或 官网 ,下载对应系统的可执行文件。
aria2 目前(2020-03-06)的最新版本为
1.35.0
,下文以该版本和 64 位的 Windows 系统为例。
下载 aria2-1.35.0-win-64bit-build1.zip
(下载速度问题请自行解决)。下载完成后,解压得到 aria2c.exe
,其他文件可以不保留。
若后续出现 SSL 相关问题,请尝试从 此处 取得第三方编译的可执行文件代替之。
-
若你未在使用 video-downloader-deploy ,
将aria2c.exe
加入环境变量PATH
(如何修改环境变量不再赘述)。打开 CMD 窗口,输入以下命令检测是否配置正确:$ aria2c -v
-
若你正在使用 video-downloader-deploy ,
将aria2c.exe
移动到usr\
文件夹下,即与annie.exe
或python-embed\
同一级。打开下载视频.bat
,输入以下命令检测是否配置正确:$ aria2c -v
若你需要配合使用 annie + aria2 ,你需要进行此步骤;
若只需要配合使用 youtube-dl + aria2 ,你可以跳过此步骤。
annie 通过 RPC 调用 aria2 ,因此你需要配置 aria2 并启用 RPC。
Windows 系统下的一个简单的配置方法为:使用由 aria2c.com 提供的 Windows 懒人包 ,同时参照 说明 自定义修改 aria2.conf
。用第一步中下载的新版本 aira2c.exe
替换掉懒人包中旧版本的 aira2c.exe
。最后点击 aria2.exe
即可在后台运行 aria2c RPC 服务。
另需说明,若你正在使用 video-downloader-deploy ,youtube-dl 只能调用 usr\aira2c.exe
,而 annie 调用时的 aira2c.exe
位于任何路径下皆可。
若你尚未配置 aria2 RPC ,请跳过此步骤。
aria2 可以通过内置的 JSON-RPC 和 XML-RPC 接口进行操作。通过 WebUI 就能以网页的形式管理 aria2 并进行交互。
可供选择的 WebUI 有很多,例如:
本文选择 AriaNg 。依照项目主页的说明,从 GitHub Relaeases 下载 "All-In-One" 版本,例如 AriaNg-1.1.4-AllInOne.zip
。解压得到 index.html
,并移动到与 aira2c.exe
相同目录下(尽管可以不放在同一目录,但仍建议如此)。使用现代浏览器打开,若此时 aria2 RPC 已运行,则可以在网页左栏看到 已连接
字样。
此时,你便可以通过网页控制 aria2 。
你可能需要了解一些 aria2c 的参数,详见 官方文档 。例如下文用到了 -s, --split=<N>
,即设置多线程下载的参数;和 -l, --log=<LOG>
,即设置输出日志的参数;等。
youtube-dl + aria2 [1]
youtube-dl 可以通过 --external-downloader COMMAND
和 --external-downloader-args ARGS
参数来调用 aria2c ,只需提前将 aria2c.exe
加入环境变量。例如:
$ youtube-dl --external-downloader aria2c --external-downloader-args "-s 8" https://www.bilibili.com/video/av59988590/
又例如:
$ youtube-dl --proxy http://127.0.0.1:10809 --external-downloader aria2c --external-downloader-args "-s 10" https://www.youtube.com/watch?v=0YF8vecQWYs
又例如:
> set "https_proxy=http://127.0.0.1:10809"
$ youtube-dl --external-downloader aria2c --external-downloader-args "-s 8 --log=log.txt" https://www.youtube.com/watch?v=dQw4w9WgXcQ
annie + aria2 [2]
annie 提供专门的 -aria2
参数来调用 aria2c ,但需要提前开启 aria2 RPC 。例如:
$ annie -aria2 https://www.bilibili.com/video/av59988590/
比起调用,用“委托”一词似乎更为准确,因为 annie 是解析出视频真实址后移交给 aria2 下载,需要通过 aria2 RPC 进行通信。因此下载过程是完全根据 aria2.conf
或 aria2c 启动时的设置来运行的,比如视频文件保存的路径取决于 aria2 的设置而非 annie 的 -o
参数:
:: -o 参数无效
> annie -o D:/test -aria2 https://www.bilibili.com/videoav59988590/
若要使用代理还需要提前指定 aria2 的 --https-proxy
(详见 官方文档 )或在 WebUI 中修改 HTTPS 代理务器
设置。例如:
:: 先在 AriaNg 中找到 "Aria2设置" -> "HTTP设置" -> "HTTPS代理务器",填入 "http://127.0.0.1:10809"
> set "http_proxy=http://127.0.0.1:10809"
$ annie -aria2 https://www.youtube.com/watch?v=TXpGWhdwXuo
基于相同原因,下载分段视频后需要自行手动调用 FFmpeg 合并。方法见 附录 。
you-get 似乎不能调用外部下载器。理论上可以通过 -u
参数取得视频的真实地址,再通过 aria2 下载。但实际上我没能成功。
$ you-get -u https://www.bilibili.com/video/av59988590/
另见:GitHub soimort/you-get pull#1682 (为了避免出现在该 PR 下,不直接引用链接)
简要叙述一下 手动调用 FFmpeg 合并分段视频的方法:
首先新建一个文本文件 filelist.txt
,内容为依次列举所需要合并的视频文件,参照:
file 'input1.flv'
file 'input2.flv'
file 'input3.flv'
file 'input4.flv'
然后使用 FFmpeg 合并:
$ ffmpeg -f concat -i filelist.txt -c copy output.flv
注意:若文件名有特殊字符,请重命名或在 filelist.txt
中转义。