ffmpeg 怎么处理udp音频_下载视频and转音频,youtubedl自己就给办了

一直用命令行youtube-dl下载视频,觉得好用,对能用它的个把参数控制下载播放列表的指定视频很是满意。不学无术的我呀,一直以来都是够用就行,绝不肯为难自己多学一点点,生怕把自己累着,所以我一直以为youtube-dl只能在代码体外以命令的形式工作。

1607c287c5cacad30cbda4a811956f69.png

如前所述用youtube-dl下载了一堆视频,为了把视频转成音频,找了第三方模块moviepy完成批量处理任务,还挺得意省却了些许麻烦。唯一不足的是得自己动手在终端敲youtube-dl命令,还得自己动手运行mp4到mp3的转换程序。能不能合起来,把youtube-dl下载程序这一步也整合到代码中呢?我想至少可以用subprocess让youtube-dl命令在代码中启动下载吧。

20344106805e3d7766e51e157c17b6ee.png

到网上一搜才发现原来人家youtube-dl本来就是个第三方模块,完全可以在python中import使用;再定睛一个,额滴个老天嘢呀,居然还自己带下载音频的参数!眼前不由闪过一片小阴影,之前不是白费功夫么

cec7cb2d99e5cde1d10d3de4310843e1.png

试了一下下载音频的参数,发现只能有啥下啥,就是说它有才有的下,它没有你还非指定要音频就会报错。而且视频网站提供啥格式音频文件,则只有那些格式的音频文件可以下。我试的时候是下了一堆的webm和m2a的音频,心里略安,看来没白费功夫,这一堆哪有mp3格式的顺眼and整齐啊。

00cac09c914a983a4d1f771b6166cac2.png

万万没想到再仔细看下去,又发现了个参数。这个参数再配合另一个ffmpeg模块居然...居然可以把视频转化成mp3音频,而且强大到不限定必须是mp4视频,也不限定必须是mp3音频。

90bb01fa5dc595ed087c62cae33e9ba0.png

youtube-dl功能很强大,但参数也是真烦杂,真要研究明白且得花些功夫,幸好我不需要研究明白,只把自己需要的整明白就行啦。程序里能实现的,命令行加参数都可以实现。

ea000e0c59e6d7a0bd8b51388c530f69.png

1、如果视频网站有提供视频对应的音频,可以直接下载它的音频

先给个视频的链接:油管有提供该视频对应的音频,然后你还不嫌乎音频的格式,那么可以用以下代码直接下载油管提供的视频对应的音频。但是如果网站没提供音频文件(比如B站好像就没有视频对应的音频),你还非要给这个网站的视频链接,则程序会毫不犹豫地报错。为了不模糊焦点,代码没有对“意外”的处理部分:

# 指定视频链接,用youtube-dl下载视频网站提供的音频文件# 如果视频网站没有提供音频文件则会报错import youtube_dl    # 先安装第三方模块youtube-dlaudioFile = '/Users/shiying/Documents/PythonABC_Book/bookProg/demo/tmp/'# 音频文件存放的目标字串# 下载视频的链接,油管有提供视频对应的音频videoPage = 'https://www.youtube.com/watch?v=FLhzB_DJQb4'ydl_opts = {            # ydl_opts很重要,是个字典,所有参数在这里设置            'outtmpl': audioFile+'%(title)s.%(ext)s',            # 定义输出模版:指定输出的文件夹+保存的文件名            # title:视频的标题,比如将多个pdf文件合并成一个;ext:扩展名,比如m2a            # 所以视频或音频的文件名就是:将多个pdf文件合并成一个.m2a            'format': 'bestaudio',            # 不止一个音频文件时,选择音质最好(format标注为bestaudio)的音频下载            # 但是如果视频网站没有提供对应的音频文件,则会报错            }ydl = youtube_dl.YoutubeDL(ydl_opts)        # 生成下载对象with ydl:    ydl.download([videoPage])    # 下载视频,参数是列表,列表的每个元素是视频的链接

2、如果视频网站没有提供视频对应音频,或者您对视频网站提供的音频格式不满意,youtube-dl参数配合ffmpeg可以自动完成视频向音频的转换

首先要安装第三方模块ffmpeg,然而光安装第三方模块ffmpeg还不够,这个第三方模块只是包裹真正的ffmpeg的外壳,在Mac上真正的ffmpeg要用安装工具brew来安装,windows用户登陆到ffmpeg网站上下载解压文件,而后添加到Path里,具体怎么操作自己用搜索引擎搜哈。这里只说Mac上的:

  • 安装homebrew这个安装工具本身(如果已经安装请忽略)

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

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

        到Mac的终端,安装这个安装工具。

  • 使用homebrew安装ffmpeg

    在Mac终端敲入:brew install ffmpeg

然后就可以跟youtube-dl的postprocessors参数配合使用了。postprocessors这个参数设定视频从视频网站下载下来后该怎样处理,在这里就用ffmpeg将视频的音频抽取出来,转成指定格式,比如mp3:

# 给出视频链接,用youtube-dl下载视频,在ffmpeg帮助下将视频转换成音频import youtube_dlimport ffmpegaudioFile = '/Users/shiying/Documents/PythonABC_Book/bookProg/demo/tmp/'# 音频文件存放的目标字串# 下载视频的链接videoPage = 'https://www.bilibili.com/video/BV1vW411X7nj'# videoPage = 'https://www.youtube.com/watch?v=FLhzB_DJQb4'ydl_opts = {            # ydl_opts很重要,是个字典,所有参数在这里设置            'outtmpl': audioFile+'%(title)s.%(ext)s',            # 定义输出模版            'postprocessors': [                {'key': 'FFmpegExtractAudio',                 # 指定用FFmpeg从视频中提取音频                 'preferredcodec': 'mp3',                 # 指定音频格式                 },            ],            'keepvideo': True,            # 默认视频转换成音频后删掉视频文件            # 设置为True后不删除视频,测试时反复运行,视频不必每次都下载            }ydl = youtube_dl.YoutubeDL(ydl_opts)        # 生产下载对象with ydl:    ydl.download([videoPage])               # 下载视频

至于format和下载播放列表的参数设定咱们下回分解:

41196a728cb815fb4482f7d4b2896121.png

c45a8c23030aac081e0967b74636a1b7.png

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值