问题背景:工作中,想从YouTube网站上下载所需的视频。(Windows电脑中用三方软件、修改网址、在线网站、插件工具等方法均搞不定)本文介绍一种终极解决方法:在Linux系统中使用youtube-dl工具来下载各种视频网站上的视频内容。(注意:不仅仅限于YouTube网站上的视频)1、安装youtube-dlyoutube-dl 的官网:https://ytdl-org.github.io/youtube-dl/index.htmlyoutube-dl 的GitHub项目地址:https://github.com/ytdl-org/youtube-dlyoutube-dl支持的网站列表:https://ytdl-org.github.io/youtube-dl/supportedsites.htmlyoutube-dl是一个命令行工具,可以下载youtube.com和其他网站(详细网站列表见链接)上的视频内容。使用前提是需要python解释器(版本需2.6、2.7或3.2+)。不受限于电脑的操作系统,Linux、Windows、MacOS都可以使用,本文主要介绍Linux下的使用。下载安装youtube-dl的几种方法:(1)sudo curl -L https://yt-dl.org/downloads/latest/youtube-dl -o /usr/local/bin/youtube-dlsudo chmod a+rx /usr/local/bin/youtube-dl(2)sudo wget https://yt-dl.org/downloads/latest/youtube-dl -O /usr/local/bin/youtube-dlsudo chmod a+rx /usr/local/bin/youtube-dl(3)sudo pip install –upgrade youtube_dl备注:youtube-dl是通过pypi(Python Package Index)分发的,如果电脑里有pip(package installer for Python.),用这种方法很好。而且还可以更新到最新版本 –upgrade。本文介绍的就是这种方法。(4)brew install youtube-dl经过检查,目前电脑里还没有pip,所以需要先下载安装pip。不过,安装pip时会需要使用setuptools中的模块,所以,我们还需先下载安装setuptools。本地Windows电脑下载好setuptools和pip源安装包,可以用WinSCP将其传到Linux计算云电脑中。解压并安装setuptools# cd /usr1/Softwares# unzip setuptools-41.0.1.zip // 解压# cd setuptools-41.0.1# python setup.py install // 安装setuptools解压并安装pip# cd ..# tar –zxvf pip-19.1.1.tar.gz // 解压# cd pip-19.1.1# python setup.py install // 安装pip安装youtube-dl# cd ..# pip install –upgrade youtube-dl警示:2020年1月1号之后不在维护Python 2.X版本,而且后续版本的pip也不再支持Python 2.X了。2、用youtube-dl下载视频到Linux电脑中# youtube-dl –list-formats https://www.youtube.com/watch?v=lyRPyRKHO8M // 查看当前地址链接的视频的所有可下载的格式,但不进行下载。# youtube-dl –f 22 https://www.youtube.com/watch?v=lyRPyRKHO8M // 执行下载,22表示格式标志码。在Linux计算云电脑中下载完成!# youtube-dl –help命令可查看其它更全的操作。也可以从youtube-dl的GitHub项目网站上看到更详细的说明信息。单独下载纯视频、纯音频、字幕,然后合成从上述的 –list-formats 选项命令中可知,某一视频资源有多种音频视频格式,而且一般只有少量是音视频合成好的。如果想下载更高质量的音频、视频,然后自己合成,该怎么办?使用youtube-dl -f <format code> 来选择下载列出的任何一条资源(单独视频或单独音频)。若想直接下载更高质量完整视频(如4K),使用youtube-dl配合ffmpeg来实现。如果系统中安装了ffmpeg的话, youtube-dl 会自动合并下下好的视频和音频, 然后自动删除单独的音频、视频文件。安装ffmpeg是一套开源免费软件,可以处理视频、音频等多媒体文件和流。# apt-get update# apt-get upgrade# apt-get install ffmpeg安装ffmpeg后,使用下面的命令就可以下载指定质量的视频和音频并自动合成。# youtube-dl –list-formats https://www.youtube.com/watch?v=wzEQX1tMLdY# youtube-dl –list-subs https://www.youtube.com/watch?v=wzEQX1tMLdY# youtube-dl –f 135+251 –write-auto-sub https://www.youtube.com/watch?v=wzEQX1tMLdY其中 –list-subs选项命令可以查看此资源的字幕captions情况。而 –write-auto-sub选项命令可以自动下载一个字幕(一般默认是英语en字幕)。注意:135 标记的是纯视频,251标记的是纯音频,在想音视频合成下载时,必需把视频标记放在加号前面。所以选项命令必需是 –f 135+251,如果写成251+135会报错。下载的音、视合成的视频格式被自动设成.mkv格式,另外还有一个单独的.vtt格式的字幕。3、用WinSCP将视频从Linux计算云传到本地Windows电脑中4、升级整理Linux中的python等软件在上述“安装youtube-dl”的时候,发现此Linux电脑中的python还是2.7版本的,并警示:在2020年1月1号之后就不在维护Python 2.X版本了,而且后续版本的pip也不再支持Python 2.X。所以需要升级并整理一下此电脑中的Python等软件。$ python –versionPython 2.7.12但是,当$ python3 –VPython 3.5.2发现此电脑已经也装有 python3.5 了。所以现在需要修改一下系统的默认Python为 Python 3.X。另外,Python 2.X也建议保留,别卸载、别删除,因为可能会有一些东西是在2.X版本玩的。一般Linux系统中,软件的二进制文件都可以在 /usr/bin 或 /usr/local/bin (这个优先级更高)找到。下面截图中也可以看到,新安装的pip、youtube-dl软件也都是默认放在 /usr/local/bin目录中的。$ ls –al /usr/bin在 /usr/bin 下面查看Python的路径,可以看到python链接的是 python 2.7。所以,执行python就相当于执行python 2.7。另外,再查看下 /usr/local/bin 的情况。$ ls –al /usr/local/bin用修改链接文件方法来整理Python$ ls –al /usr/bin | grep python // 查看安装目录下python相关文件$ sudo rm /usr/bin/python // 删除原来的python软链接$ ls –al /usr/bin | grep python$ sudo ln –s /usr/bin/python3.5 /usr/bin/python // 创建新的软链接指向已有的3.5版本$ ls –al /usr/bin | grep python$ python –V // 查看此时python的版本Python 3.5.2用update-alternatives方法来整理Python这个update-alternatives是Debian系提供的一个工具(非Debian系的Linux不适用),原理上类似通过链接的方式来整理电脑里的相同软件的不同版本,不过其切换过程非常方便。但是,如果使用中很少做软件的版本切换,大多数情况都使用Python 3.5的话,上述用修改软链接文件的方法就足够了。$ sudo update-alternatives –list python // 先列出所有可用的Python替代版本的信息update-alternatives: error: no alternatives for python出现错误。表示当前电脑里的Python替代版本信息还没有被添加进update-alternatives中。将Python的替代版本信息添加进update-alternatives中。$ sudo update-alternatives –install /usr/bin/python python /usr/bin/python3.5 2$ sudo update-alternatives –install /usr/bin/python python /usr/bin/python2.7 1$ sudo update-alternatives –list python$ sudo update-alternatives –config python$ python –versionPython 3.5.2其中 –install 选项使用多个参数用于创建符号链接,最后一个“2”或“1”表示优先级,值越大优先级越高。自动模式下高优先级(2)链接选定的是Python 3.5版本。其中 –config 命令是列出所有python版本信息,并可以很方便的选择切换任意版本。至此,两种系统级整理软件版本(比如Python)的方法就介绍完毕!用Python3.5重新安装整理setuptools和pip软件上述的截图中能发现之前用python安装的setuptools和pip软件都是版本较低的,具体可以查看安装目录 /usr/local/bin强迫症的我想卸载重装setuptools和pip软件。卸载使用python setup.py install方式安装的包(尝试过使用$ sudo apt –purge remove python-pip 结果根本找不到python-pip,因为pip不是通过apt install安装的,所以用apt卸载时根本找不到已安装包。)正确的卸载方法是:使用之前的Python2.7版本重新再装一次pip,并且设置好记录文件。$ cd pip-19.1.1$ python –version$ python2 –version$ sudo python2 setup.py install –record pipfile.txt$ ls –al /usr/local/bin可以看到pip(pip2、pip2.7)的确是被刚刚重新安装过。而安装记录文件 pipfile.txt 被新建并存放在 /usr1/Softwares/pip-19.1.1/ 目录中。$ sudo cat pipfile.txt | xargs rm –rf // 卸载删除这些pip安装文件注意此时用管理员账户无法卸载删除,不被允许 permission denied。所以需要用root的账号进行卸载删除操作。# cat pipfile.txt | xargs rm –rf$ ls -al /usr/local/bin然后查看 /usr/local/bin 目录,的确已经没有pip相关软件了。同理,卸载删除setuptools相关软件。重新安装Python3.5版本的setuptools和pip,并升级youtube-dl$ python –V$ sudo python setup.py install –record py3setuptoolsRecord.txt$ ls –al /usr/local/bin$ sudo rm –f py2setuptoolsfile.txt // 强制删除之前Python2版本重装时产生的记录文件$ cd ..$ cd pip-19.1.1$ sudo python setup.py install –record py3pipRecord.txt$ ls –al /usr/local/bin$ sudo rm –f pipfile.txt // 删除之前Python2重装的pip记录文件注意由于youtube-dl是之前用pip2.7安装的,所以此时的youtube-dl会出现错误。而且用管理员账号使用pip升级youtube-dl的时候也不成功。使用root账号来升级youtube-dl软件版本。搞定!然后,使用2019.5.11的新版youtube-dl再下载个视频试试。杨超导演在2016年“一席”栏目中以专业视角分析周星驰《喜剧之王》镜头的视频(个人超爱)。# youtube-dl –list-formats https://www.youtube.com/watch?v=UQfAEYhcH3A# youtube-dl –f 43 https://www.youtube.com/watch?v=UQfAEYhcH3A======End======喜欢,请关注虎哥的视界
本文出自快速备案,转载时请注明出处及相应链接。