Skip to content
lussaczheng edited this page Apr 26, 2020 · 4 revisions

Work with 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.

本文将叙述如何搭配使用 aria2youtube-dl, annie

即使你未在使用 video-downloader-deploy ,仍能进行以下步骤。同时本文假设你已经掌握 youtube-dl, annie 的基本使用,只是从未配置或使用过 aria2


写在前面

以防万一,首先明确一下本文中符号的使用:

  1. $ 符号表示命令,实际输入时不要带上,例如下文中出现:

    $ echo test

    而实际只需输入:

    echo test
  2. > 符号表示仅适用于 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 等为本地端口,下文中凡有涉及的,请自行修改。


部署 aria2

获得 aria2

前往 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.exepython-embed\ 同一级。打开 下载视频.bat,输入以下命令检测是否配置正确:

    $ aria2c -v

配置 aria2

若你需要配合使用 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 位于任何路径下皆可。

使用 WebUI (可选)

若你尚未配置 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 。


使用 aria2

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

you-get 似乎不能调用外部下载器。理论上可以通过 -u 参数取得视频的真实地址,再通过 aria2 下载。但实际上我没能成功。

$ you-get -u https://www.bilibili.com/video/av59988590/

另见:GitHub soimort/you-get pull#1682 (为了避免出现在该 PR 下,不直接引用链接)


附录

FFmpeg 合并分段视频

简要叙述一下 手动调用 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 中转义。