YT-DLP 返回格式 (m3u8)
P粉920835423
P粉920835423 2024-03-29 10:19:34
0
1
512

我有一个在 Node.js 上运行的网站,并在后端 Express 上运行,该网站依次调用 .py 脚本来使用 yt-dlp 下载用户请求的音频。当我在本地主机上运行该网站时,一切都运行得很好,并且我得到了一个 .mp4 可下载 URL,可以直接将其输入 JavaScript 音频中。

但是,当我在 Heroku 上部署网站时,相同的 .py 脚本给了我一个 .m3u8 url,它是一个音频播放列表,并且需要额外的步骤,例如 hls 才能使用 JavaScript 播放。

我的问题是为什么会发生这种情况。

我的 Heroku 构建包包含 nodejspython。我是否缺少 FFmpegExtractAudio 这里或下面的一些 yt-dlp 格式选项?

我的 .py 脚本是

ydl_opts = {
'format': 'bestaudio/best',
'quiet': True,
'postprocessors': [{
    'key': 'FFmpegExtractAudio',
    'preferredcodec': 'mp3',
    'preferredquality': '192',
}],}

with yt_dlp.YoutubeDL(ydl_opts) as ydl:
try:
    info = ydl.extract_info("ytsearch:%s" %
                            requestedAudio, download=False)['entries'][0]
    # code follows...
except yt_dlp.utils.DownloadError or yt_dlp.utils.ExtractorError:
    # code follows...

P粉920835423
P粉920835423

全部回复(1)
P粉459440991

编辑:对于那些有类似问题的人,我可以通过更改 yt-dlp 选项来解决问题。具体来说,我添加了 formatextractor_args 标志。注意:上面的代码在 localhost 上运行,下面的代码在 Heroku 部署的 webapp 以及 localhost 上运行。快乐编码!

ydl_opts = {
'format': '(bestaudio/best)[protocol~="^https?$"]',
'quiet': True,
'noplaylist': True,
'postprocessors': [{
    'key': 'FFmpegExtractAudio',
    'preferredcodec': 'mp3',
    'preferredquality': '192',
}],
'extractor_args': {'youtube':{'player_client': ['android', 'web']}},
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板