YouTube-dl下载视频

youtube-dl参数配合ffmpeg可以自动完成视频向音频的转换,首要任务是安装ffmpeg。Mac上安装ffmpeg得用安装工具brew,详细参见24.5 Mac上安装工具Homebrew,简单说来就是:

  1. 搜索homebrew找到它的老巢(sh)
  2. 拷贝主页上的安装命令:

/bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install.sh)"

打开Mac的终端,粘贴拷贝来的安装命令,按回车键开始安装。

  1. 安装完毕后,在终端敲入命令行:

            brew install ffmpeg 

安装ffmpeg。              

windows用户:

  1. 访问ffmpeg网站(org)的下载页面根据自己的操作系统选择下载安装文件。安装文件是个压缩文件,如果没有解压软件,可以去下载安装免费的压缩管理软件7-zip。
  2. 在C盘根目录下建立ffmpeg文件夹C:\ffmpeg,将ffmpeg安装文件解压到文件夹C:\ffmpeg下
  3. 点击wiondows左下角的“开始”菜单,右击“计算机”,在右键菜单中选择属性。弹出的系统窗口中,点击“高级系统设置”(Advanced system setting)链接。点击系统属性窗口中底端的环境变量(Environment Variables)按钮,在"用户变量"(User variables for …)区域选择PATH条目,点击编辑按钮。
  4. 在“变量值”(Variable value)栏,在其原始内容后添加路径C:\ffmpeg\bin。如果将ffmpeg拷贝到了其他路径,那么需要添加其他路径。点击确认保存更改。如果在这个窗口输入的内容有误,那么有可能会造成Windows无法正常启动。如果在"用户变量"设置下没有PATH条目,点击新建按钮创建。在变量名栏输入PATH。注意不要够删除在PATH中已有的内容。
  5. 打开命令提示符窗口,输入命令“ffmpeg –version”。如果命令提示窗口返回FFmpeg的版本信息,说明安装成功了。如果收到“libstdc++ -6 is missing”的错误消息,那么可能需要安装Microsoft Visual C++ Redistributable Package,该软件包可以在微软网站免费获取。

ffmpeg安装完毕后就可以跟youtube-dl下载选项里的postprocessors参数配合使用了。postprocessors这个参数设定下载完毕后如何处理:

ydl_opts = {           
            ……

            'postprocessors': [
                {
     'key': 'FFmpegExtractAudio',  # 指定用FFmpeg从视频中提取音频
     'preferredcodec': 'mp3',      # 指定音频格式
                },
                               ],
            'keepvideo': True,     # 默认视频转换成音频后删掉视频文件,设置为True后不删除视频,测试时反复运行,视频不必每次都下载

            ……
            }

用ffmpeg将视频的音频抽取出来,转成指定格式(mp3)的音频文件,完整代码: 

# 给出视频链接,用youtube-dl下载视频,在ffmpeg帮助下将视频转换成mp3音频

import youtube_dl

# 音频文件存放的目标字串
audioFile = '/Users/shiying/Documents/PythonABC_Book/bookProg/demo/tmp/'

# 下载视频的链接
videoPage = 'https://www.bilibili.com/video/BV1vW411X7nj'

# 设置下载选项
ydl_opts = {           
     'outtmpl': audioFile+'%(title)s.%(ext)s',    # 定义输出模版
     'format': 'best',                            # 下载品质最好的视频
     'postprocessors': [
                {
                 'key': 'FFmpegExtractAudio',     # 指定用FFmpeg从视频中提取音频
                 'preferredcodec': 'mp3',         # 指定目标音频格式
                },
                       ],
           }

ydl = youtube_dl.YoutubeDL(ydl_opts)        # 生成下载对象

ydl.download([videoPage])                    # 下载视频