标签 youtube 下的文章

使用youtube-dl下载视频


使用youtube-dl下载视频

tags:youtube-dl,youtube,vps,搬瓦工,shadowsocks,dropbox,ifttt

目标

youtube上有很多国外的最新技术的视频,而且有1080p和4k的高清视频,由于肉身在中国大陆,有观看和保存视频的需求,下载下来,无缓冲的看视频很舒服。

解决方案

一:曲线救国

原理:
通过位于国外的一台vps作为中转站,把国外的资料同步到国内

步骤:获取url、下载视频、同步到国内

  1. youtube官网把视频加入“稍候阅读”
  2. ifttt把“稍候阅读”内的视频的链接保存到dropbox
  3. 位于国外的vps下载保存在dropbox的视频链接
  4. youtube-dl下载和链接匹配的的视频及字幕
  5. vps上传视频及字幕到百度云

流程

  1. 获取视频url:可手动先把youtube上需要下载的视频添加到“稍候阅读”,让ifttt在后台自动同步到dropbox(同步时间取决于ifttt)也可以手动向dropbox添加内容为视频url的txt文件,再将txt文件同步到vps
  2. 下载视频:使用youtube-dl下载视频及机器翻译的字幕文件,无法自动下载1080p和4k的视频(由于有些视频不带字幕,则不会下载字幕文件,若视频本身带有字幕且youtube官网有机器翻译的字幕时,我的教程无法识别视频本身带的字幕,只能下载机器翻译的字幕)
  3. 同步到国内网盘:vps把文件同步到百度云,需要手动把百度云上的文件移动到其他目录下(字幕文件要和相关视频放在同一文件夹下,方便管理)
  4. 观看:使用网页版就可以观看百度云上的视频,但不知道能不能匹配字幕,推荐使用android手机观看,切换到原画模式,再点击字幕,稍等5秒,自动匹配字幕

下载普通视频

  1. 手动获取url
  2. 向dropbox添加带有视频url的txt文件
  3. 同步txt文件到vps
  4. 使用youtube-dl下载视频及字幕
  5. 同步视频及字幕到dropbox
  6. vps上传视频到百度云

下载1080p及4k高清视频(理论上也支持3D视频)

  1. 手动获取url
  2. vps上分别下载视频及音频(若有字幕可下载字幕)
  3. 把视频及音频同步到百度云
  4. 合并视频和音频(能在vps上合并最好,但内存64m的vps就不要尝试了)
  5. 再把合并后的文件上传到百度云
  6. 若能自动合并就好了

分步步骤

手动获取youtube视频的url

单视频的格式为"https://www.youtube.com/watch?v="后面加"视频id"例如:https://www.youtube.com/watch?v=oTt_O6T8FAU

不要复制"&list"及以后的文字

而我们需要的就是这个"视频id"

向dropbox添加带有视频url的txt文件

dropbox上的根目录下新建ifttt目录

创建youtube目录,存放vps上传的视频及字幕文件

创建youtube-dl目录,存放待下载的视频信息txt

创建youtube-part目录,存档已下载过的视频信息

pc上使用dropbox,在国内需要配合ss使用。在dropbox的根目录下的/ifttt/youtube-dl文件夹下新建一个以视频名称为文件名的txt文件,把url粘贴进去

更换 Linux VPS 时区为北京时间

涉及到dropbox操作,还是先更换 Linux VPS 时区为北京时间,参考国外VPS修改系统时间为北京时间

date #先用date命令查看下当前时间
rm -rf /etc/localtime
ln -s /usr/share/zoneinfo/Asia/Shanghai /etc/localtime
date #查看是否更换为北京时间,大部分linux vps的母机是允许每个vps修改时间的

dropbox_uploader下载txt文件到vps

参考CentOS使用脚本自动备份VPS数据到Dropbox配置dropbox_uploader

sh /root/dp/dropbox_uploader.sh download /ifttt/youtube-dl /root/dp/ #下载txt文件到vps

使用youtube-dl下载普通视频

vps上创建/root/dp/目录 chmod 777 给予权限,下同

创建youtube目录,存放youtube-dl下载的视频及字幕文件

创建youtube-dl目录,存放待下载的视频信息txt

创建youtube-part目录,存档已下载过的视频信息

先去http://rg3.github.io/youtube-dl/下载youtube-dl

再使用脚本自动查看txt内的url并下载视频

  1. https://gist.github.com/3287956下载 dropbox_youtube_dl.sh
  2. 修改dropbox_youtube_dl.sh
QUEUE_DIR为/root/dp/youtube-dl/*.txt

VIDEO_DIR为/root/dp/youtube/

    video_url=`cat "$queue_file"`;
    echo "$queue_file : $video_url";
    mv "$queue_file" "${queue_file}.part";
    youtube-dl --skip-download --write-auto-sub --sub-format srt -q -o "$VIDEO_DIR%(title)s-%(id)s.srt"  "$video_url";
    youtube-dl -q -o "$VIDEO_DIR%(title)s-%(id)s.en.%(ext)s" "$video_url";

文件命名,这样设置是为了保证视频和字幕文件名相同

下载并上传视频及字幕到dropbox

注意:先在pc上设置dropbox不自动同步/ifttt/youtube目录,以免视频自动下载到pc,从而产生非常大的数据流量


#!/bin/bash
PATH=/bin:/sbin:/usr/bin:/usr/sbin:/usr/local/bin:/usr/local/sbin:~/bin
export PATH
sh /root/dp/dropbox_uploader.sh download /ifttt/youtube-dl /root/dp/ #同步包含url的txt文件
sh /root/dp/dropbox_youtube_dl.sh #下载视频和字幕
cp /root/dp/youtube-dl/*.part /root/dp/youtube-part/ #已下载过的视频信息存档
#sh /root/dp/dropbox_uploader.sh upload /root/dp/youtube /ifttt/ #上传视频和字幕到dropbox




convmv -f GBK -t UTF-8 -r *
convmv -f GBK -t UTF-8 --notest -r *
cd /root/dp/youtube
bypy upload -v
bypy upload

#sh /root/dp/dropbox_uploader.sh upload /root/dp/youtube /ifttt/ #上传视频和字幕到dropbox
rm -rf  /root/dp/youtube/* #删除vps上的视频和字幕
rm -rf  /root/dp/youtube-dl/* #删除temp文件
sh /root/dp/dropbox_uploader.sh delete /ifttt/youtube-dl/ #删除dropbox上的已下载视频的txt
sh /root/dp/dropbox_uploader.sh upload /root/dp/youtube-dl /ifttt/ #重建youtube-dl目录

再使用crontab设置定时执行就行了,这样从youtube上添加视频到“稍后阅读”后,等一段时间就自动下载到百度云的应用数据文件夹了,再手动移动到别的文件夹。

使用youtube-dl下载下载1080p及4k高清视频

1080p及以上的视频和音频确实是分离了,要想下载最高品质的视频就需要下载其视频和音频进行合并,参考使用youtube-dl下载YouTube视频

cd /root/dropbox_uploader/youtube #进入想要保存视频的目录
youtube-dl -F URL #获取所有格式(目前仅支持YouTube),例如:youtube-dl -F http://www.youtube.com/watch?v=n-BXNXvTvV4
youtube-dl -f format URL #下载指定格式的视频,这里以下载1080p原画质量的视频格式为例:youtube-dl -f 137 http://www.youtube.com/watch?v=n-BXNXvTvV4
youtube-dl -f format URL #下载指定格式的视频的音频,这里以下载aac  @256k (44100Hz)的音频为例:youtube-dl -f 141 http://www.youtube.com/watch?v=n-BXNXvTvV4
youtube-dl --skip-download --write-auto-sub URL #下载自动字幕

合并视频及音频

My Mp4Box Gui

合并工具:My Mp4Box Gui
下载地址:sina下载

我直接使用安装版的成功,绿色版的无法合并,不知道原因

使用方法:参考合併Youtube MP4+M4A

  1. 安裝完My MP4BOX GUI後打開它
  2. 把下載到的MP4和M4A檔,滑鼠直接拖進[Mux]這個分頁,可以看到程式會判斷出來他原始串流是甚麼
  3. 按下方Save As選擇要存到哪裡
  4. 按下Mux來合併檔案。因為Mux只是把兩個串流加在一起所以速度很快。

vps下载后自动合并

vps内存512m及以上可以尝试,参考VPS 教程系列:Ubuntu 14.04 安装 ffmpeg 并使用 youtube-dl 下载 1080p 高清视频

multcloud把视频及字幕从dropbox或FTP同步到百度云等国内网盘

登录multcloud官网,注册一下
添加云盘:dropbox和百度云
点击传输,设定为
from dropbox/ifttt/youtube
to 百度云盘我的应用数据lin1118

可设置为传输成功后发送邮件提醒

已下载视频信息存档的备份

写个脚本,可以每天备份一次,最好是能检测一下,若有新的文件更新,则打包上传到dropbox

#!/bin/bash
mkdir /tmp/backup
SCRIPT_DIR="/root/dp"
DROPBOX_DIR="/ifttt/youtube-part"
BACKUP_SRC="/root/dp/youtube-part"
BACKUP_DST="/tmp/backup"
DESTFILE="$BACKUP_DST/youtube-part.tar.gz"
tar cfz "$DESTFILE" $BACKUP_SRC
sh /root/dp/dropbox_uploader.sh upload /tmp/backup/ /ifttt/youtube-part/
rm -rf /tmp/backup/*

参考文献

如何下载YouTube上1080p的视频?

翻墙下载附带字幕的youtube视频

如何下载youtube视频的字幕?

centos yum方式安装ffmpeg