AWS海外数据回传国内的一种方式

最近对北美版本的敞篷马自达MX-5感兴趣,在YouTube上找到一支从静态外观到动态试驾非常详细的体验视频,4K画质下车辆的做工细节清晰可见,打算下载下来慢慢看。

不过考虑到4K视频的巨大体积和我不多的VPN流量,并没有直接用本机的Downie下载,而是在一台承载这个博客网站的AWS首尔EC2服务器上执行下载操作再传回国内。

下载

下载YouTube视频有很多开源工具,YT-DLP是其中比较流行的一个,支持包括YouTube在内的数千个网站。

要注意的是它在下载YouTube视频时可能会触发对方的机器人验证,需要导入登录过YouTube的浏览器Cookies来避免这种下载失败的情况。可以使用ChromeGet cookies.txt LOCALLY插件导出指定站点的Cookies,传输到EC2上。

YT-DLP默认下载质量最高的视频资源,但YouTube是音视频分离的,这样会下载到无声视频,所以必须手动选择要下载的音频和视频再由它自动合并。

# 列出解析到的资源
yt-dlp -F [url] --cookies yt-dlp/youtube_cookies.txt

YT-DLP list resources

下载指定的资源,自动合并:

yt-dlp -f [videoId]+[audioId] [url] --cookies yt-dlp/youtube_cookies.txt

或由YT-DLP自主选择最佳资源:

yt-dlp -f bestvideo+bestaudio [url] --cookies yt-dlp/youtube_cookies.txt

AWS首尔下载YouTube视频可以达到20MB/s的速度:

YT-DLP download

如上用海外服务器下载YouTube视频是很轻松的,但如何把这么大的视频传回国内则是另一个问题。

回传

尝试通过SSHFTP直连传输,但因为众所周知的原因速度很慢,要传好几个小时。

一种取巧的方式是利用云服务商不同地区数据中心之间的高速内网专线做中转,比如一直在用的阿里云,它在世界各地都有边缘节点,各个节点间一定是用最优质的线路连接的。

从首尔上传视频到杭州区域的OSS,会连接到阿里云在附近的边缘节点通过内网跨越国境传输到杭州,不通过拥堵的公网所以速度极快。上面是用ossutil上传文件,速度达到80MB/s,下载则可以跑满带宽。

只是需要支付OSS的存储和传输费用,几元而已。

arrow_upward