前言

由于最近一直觉得自己的服务器流量太多了,每个月只能用掉 不到20%,服务器资源大多时候也是空闲为主。于是又开始想着折腾了,然后平常有需要下载一些YouTube或者是tiktok上的视频,所以就找了一下网上的程序。命令行工具比较多,但是作为一个懒人肯定不会觉得用命令行就行了,做个网站随时随地访问才是真的舒服。于是就有了这个。

服务器购买

服务器我选择的是腾讯云的轻量服务器,原因无非就是价格便宜,CPU是独享的,线路相较于其他的云厂商算是优秀的那个。最低32一个月就能有 2 C(独享)2 G的硬件。本程序需要用到ffmpeg用来封装或者转码,所以CPU性能上还是有一点要求的。也不能选什么积分制的CPU,不然积分没了CPU限制太死估计网站会崩溃。
由于我需要下载的是国际视频网站,所以不会服务器选择的也是海外的。如果只需要下载国内可以考虑境内服务器。这里我以新加坡服务器为例。
进入腾讯云轻量服务器购买页面:腾讯云轻量服务器
自动草稿
选择好套餐,选择地域,再选择镜像为Debian/Ubuntu,不再推荐使用centos。购买完成之后再进入控制台。
进入控制台后可以先重置密码。然后直接在页面登陆也行,在ssh工具里也行。
自动草稿
下面我以页面登陆操作进行讲解。
点击登陆之后会以 Lighthouse 用户登陆,输入 sudo su 可以切换到 root 用户,在下面输入代码的时候如果你是 root 用户就不需要前面的 sudo 反之则要加上 加上 。

下载器选择

目前常见的视频解析下载器很多,常见的youtube-dl,YouTube-Get,yt-dlp等,这里我选择的是yt-dlp作为下载器,因为下载器是这个网站搭建的核心,为了避免后续更新不及时或者是想要下载别的平台的视频,这里选择yt-dlp是因为它支持的平台数量很多,国内的主流视频网站和直播网站也都有支持比如B站,爱奇艺,抖音,斗鱼。

yt-dlp

yt-dlp的安装很简单,直接下载二进制文件就行。然后就能用了,但是我们网站程序要用的是py文件,所以后面还会介绍一下

  1. sudo curl -L https://github.com/yt-dlp/yt-dlp/releases/latest/download/yt-dlp -o /usr/local/bin/yt-dlp
  2. sudo chmod a+rx /usr/local/bin/yt-dlp

最简单的用法就是
yt-dlp [url]
例如我们下载著名的'骗人视频'
自动草稿
可以下载十分迅速,存储文件的格式就是视频标题再加上YouTube的视频连接后缀。
如果只是偶尔用用的话这样就够了。你可以指定字幕文件,视频分辨率,但是如果你想要mp4格式视频的话,有些分辨率是不含的,需要自己设置ffmpeg进行转码。
PS: 查看yt-dlp支持哪些网站
https://github.com/yt-dlp/yt-dlp/blob/master/supportedsites.md
直接Ctrl + F查找即可,找不到可以试试拼音或者域名,或者英文

ffmpeg 安装

我用的是Debian,直接apt安装就行

  1. sudo apt update -y && sudo apt upgrade -y
  2. apt install ffmpeg

更新的时候遇到个源问题,提示

  1. N: Repository 'http://deb.debian.org/debian buster InRelease' changed its 'Version' value from '10.8' to '10.10'
  2. E: Repository 'http://deb.debian.org/debian buster InRelease' changed its 'Suite' value from 'stable' to 'oldstable'
  3. N: This must be accepted explicitly before updates for this repository can be applied. See apt-secure(8) manpage for details.
  4. E: Repository http://deb.debian.org/debian-security buster/updates InRelease' changed its 'Suite' value from 'stable' to 'oldstable'
  5. N: This must be accepted explicitly before updates for this repository can be applied. See apt-secure(8) manpage for details.
  6. E: Repository 'http://deb.debian.org/debian buster-updates InRelease' changed its 'Suite' value from 'stable-updates' to 'oldstable-updates'
  7. N: This must be accepted explicitly before updates for this repository can be applied. See apt-secure(8) manpage for details.

搜了一下See apt-secure(8) manpage for details.
直接运行一个命令再更新一下源就行,就是release信息变化了,同意更新即可。

  1. sudo apt-get update --allow-releaseinfo-change
  2. sudo apt-get upgrade -y

查看ffmepg是否成功安装
ffmpeg
自动草稿
这样就OK了。

网站程序安装

网站程序我这里选择的是alltube
Github地址:https://github.com/Rudloff/alltube
我向来是宝塔的忠实用户,没有其他原因就是懒,所以还是腾讯云+宝塔国际版(aapanel)。
安装NGINX和PHP即可
环境准备好了直接解析好域名指向服务器,然后再下载alltube压缩包到网站程序。

  1. wget https://github.com/Rudloff/alltube/releases/download/3.0.3/alltube-3.0.3.zip -O /www/wwwroot/你的网站目录/alltube.zip
  2. cd /www/wwwroot/你的网站目录
  3. unzip alltube.zip
  4. chown -R www:www /www/wwwroot/你的网站目录
  5. chmod -R 755 /www/wwwroot/你的网站目录 #对网站目录授权

然后在宝塔面板里网站目录改成alltube即可
伪静态配置

  1. location ~ /\. {
  2. deny all;
  3. }
  4. location / {
  5. try_files $uri /index.php?$args;
  6. }

PHP禁用函数
在禁用函数里把标注出来的两个函数删除即可。
自动草稿

网站页面

自动草稿
现在已经可以使用了,但是如果就这样的话是会将你转到解析出来的视频源,而这种方式很大程度上导致视频没声音或者源服务器返回403,而且我们目前还是用的程序自带的youtube_dl,我们需要修改成yt-dlp,然后还需要配置ffmpeg转码,以及视频先经过服务器下载再提供给用户。

优化配置

首先你需要考虑你是否需要面向大众使用,以及你的服务器配置以及流量。
我用的腾讯云的新加坡,目前腾讯云正好升级了低价配置,32就可以买到2C的性能这相对而言是更加适用于这种网站的,因为解析视频以及ffmpeg转码、封装都比较吃CPU性能。腾讯云最低配2C2G1T流量这种适合小范围内适用,主要是流量有限制,大部分视频还是走服务器比较好,有连接就能直接下载。不需要考虑与网站的连通性。
还有一种是需要面向大众的,这种就需要大宽带以及高性能的服务器,可以考虑独立服务器也可以选择CVM,或者是通过多台轻量服务器一台高配专门做后端,其他低配的做前端,服务器之间通过内网访问,1.5Gbps的内网带宽足以应付大多数情况了,下载不耗流量,上传流量不够了就多开几台低配的。
上述两种情况主要针对的是是否通过服务器下载,以及是否提供封装服务。小范围使用,你可以都开着,公开使用的话你就需要根据你的服务器性能以及是否有流量限制来考虑了。

使用yt-dlp

首先下载yt-dlp压缩包并解压

  1. cd /www/wwwroot/你的网站目录/alltube/vendor
  2. wget https://github.com/yt-dlp/yt-dlp/releases/latest/download/yt-dlp.tar.gz
  3. tar -zxvf yt-dlp.tar.gz

你也可以直接在宝塔里操作。
然后进入alltube/config文件夹
备份一下config-example.yml,然后重命名为config.yml
打开并修改里面的配置
首先是下载器,把修改成刚下载的yt-dlp主程序,python改成python3,没python3的服务器自己装一个
自动草稿
然后下面这些配置看自己的需求进行更改
自动草稿
stream可以填ask,即默认不走服务器流量,但是页面上可以选,如果填false就是全部只解析出直链,true就是默认都走服务器流量。
remux可以封装最佳视频以及音频成MKV文件,但是不能同时和转码一起使用。
转码只针对音频文件,没啥好说的。
然后再修改config.php文件即可。config.php和config.yml都差不多,但是stream不能填ask

使用事项

当你想要下载需要cookie的视频时,你可以尝试自己去配置一下网站目录下的yt-dlp程序,但是这种情况有可能会导致你的视频网站账号异常,所以你不应该在面向大众的正式网站上使用。
版权问题:作为一个解析视频的工具类而言,版权问题不得不注意,需要留意的是一些视频网站的付费视频(会员专享视频)你可以通过配置自己的会员账号方便自己下载观看或者收藏。但是不能公开提供服务给大众使用。