YT-DLP-Rückgabeformat (m3u8)
P粉920835423
P粉920835423 2024-03-29 10:19:34
0
1
494

Ich habe eine Website, die auf Node.js läuft, mit Express im Backend, das wiederum ein .py Skript aufruft, um vom Benutzer angeforderte Audiodaten mithilfe von yt-dlp herunterzuladen. Wenn ich die Site auf localhost betreibe, läuft alles einwandfrei und ich erhalte eine herunterladbare .mp4-URL, die ich direkt in das JavaScript-Audio einspeisen kann.

Wenn ich jedoch die Website auf Heroku bereitstelle, gibt mir dasselbe .py 脚本给了我一个 .m3u8 url,它是一个音频播放列表,并且需要额外的步骤,例如 hls Skript eine .m3u8-URL, die eine Audio-Wiedergabeliste ist und für die Wiedergabe mit JavaScript zusätzliche Schritte wie hls erfordert.

Meine Frage ist, warum das passiert.

Mein Heroku-Buildpack enthält nodejspython。我是否缺少 FFmpegExtractAudio einige YT-DLP-Formatoptionen hier oder unten?

Mein .py Drehbuch ist

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

Antworte allen(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']}},
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage