首页 > 解决方案 > 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 脚本不是等效的吗?

标签: pythonffmpegyoutube-dl

解决方案


  1. 首先列出您想要获得的可用扩展,例如

    youtube-dl -F https://www.youtube.com/watch?v=SF8DGbfOFig

其中-F (UPPER)列出所有项目,有些像

使用 -F 列出所有要下载的选项

  1. 仅下载音频,在您想要的范围内,在示例中我选择“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


  1. 您必须使用 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

国王问候


推荐阅读