python - Python 脚本和等效命令的运行方式不同
问题描述
我想使用 youtubedl 将 YouTube 视频中的音频下载到 mp3 文件中。我想出了以下命令:
youtube-dl -x --audio-format mp3 https://www.youtube.com/watch?v=SF8DGbfOFig&ab_channel=derang
当我通过命令行运行上述命令时,似乎我成功地下载了 mp3 格式的文件:
[youtube] SF8DGbfOFig: Downloading webpage
[download] Destination: Total Science & S.P.Y - Piano Funk (Ft. Riya & DāM FunK) [320k]-SF8DGbfOFig.webm
[download] 100% of 5.57MiB in 00:03
[ffmpeg] Destination: Total Science & S.P.Y - Piano Funk (Ft. Riya & DāM FunK) [320k]-SF8DGbfOFig.mp3
Deleting original file Total Science & S.P.Y - Piano Funk (Ft. Riya & DāM FunK) [320k]-SF8DGbfOFig.webm (pass -k to keep)
然后我尝试将上述命令转换为等效的 python 脚本,如下所示:
import youtube_dl
links = ["https://www.youtube.com/watch?v=SF8DGbfOFig&ab_channel=derang"]
ydl_args = {
'audioformat': 'mp3',
'outtmpl': '%(title)s.%(ext)s',
'extractaudio': True
}
with youtube_dl.YoutubeDL(ydl_args) as ydl:
results = ydl.download(links)
但是,这不会成功生成音频的 mp3 文件。这些是我得到的日志:
WARNING: Requested formats are incompatible for merge and will be merged into mkv.
[download] Destination: Total Science & S.P.Y - Piano Funk (Ft. Riya & DāM FunK) [320k].f135.mp4
[download] 100% of 4.42MiB in 00:02
[download] Destination: Total Science & S.P.Y - Piano Funk (Ft. Riya & DāM FunK) [320k].f251.webm
[download] 100% of 5.57MiB in 00:03
[ffmpeg] Merging formats into "Total Science & S.P.Y - Piano Funk (Ft. Riya & DāM FunK) [320k].mkv"
Deleting original file Total Science & S.P.Y - Piano Funk (Ft. Riya & DāM FunK) [320k].f135.mp4 (pass -k to keep)
Deleting original file Total Science & S.P.Y - Piano Funk (Ft. Riya & DāM FunK) [320k].f251.webm (pass -k to keep)
我在这里做错了什么?我的命令和 python 脚本不是等效的吗?
解决方案
首先列出您想要获得的可用扩展,例如
youtube-dl -F https://www.youtube.com/watch?v=SF8DGbfOFig
其中-F (UPPER)列出所有项目,有些像
- 仅下载音频,在您想要的范围内,在示例中我选择“140”,使用-f(小写)选项,如下所示:
youtube-dl -f 140 https://www.youtube.com/watch?v=SF8DGbfOFig
现在你有一个 m4a 文件,在这个例子中将是“Total Science & SPY - Piano Funk (Ft. Riya & DāM FunK) [320k]-SF8DGbfOFig.m4a”
为了继续这个例子,我将原始文件名更改为“original.m4a”以便于解释
mv "Total Science & S.P.Y - Piano Funk (Ft. Riya & DāM FunK) [320k]-SF8DGbfOFig.m4a" original.m4a
- 您必须使用 ffmpeg 将此文件编码/解码为 mp3(ffmpeg 选项是一个简单的选项和人类抗病)
一个简单的代码可以是
ffmpeg -i "original.m4a" audio.mp3
你可以使用类似的选项
- -ac 用于通道,2 用于立体声,1 用于单声道。
- -ar 用于音频速率,48000、44100 等。
- -b:a 用于质量(比特率)320k、256k、128k、96k 等。
- -dn 用于删除所有数据但不删除元数据,它会删除标题等,
- -map_metadata -1 删除所有元数据
例子ffmpeg -i "original.m4a" -c:a libmp3lame -b:a 320k -ac 1 -ar 44100 -dn -map_metadata -1 audio_edit.mp3
国王问候
推荐阅读
- json - Spring Boot 无法解析从 Angular 发送的 JSON
- docker - Docker Tomcat Image:部署 WAR 文件时使用 Umlaute 的编码问题
- bash - 脚本用 SH 发送命令
- sql - 如何从一个列中获取不同的数据
- node.js - 如何在 NodeJS 中提取密钥大小
- python - splunklib.binding.HTTPError:HTTP 400 错误请求 - 未知搜索命令“索引”
- mongodb - 无法使用 expressjs 从 mongodb 获取数据
- xml - 使用 OdooV12 通过按钮调用操作
- sql - 接收每个 id 的一条记录和最新日期的一条记录
- python - 无法使用 python 烧瓶将箱线图渲染到 html 页面