Heim  >  Fragen und Antworten  >  Hauptteil

YT-DLP-Rückgabeformat (m3u8)

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粉920835423P粉920835423204 Tage vor427

Antworte allen(1)Ich werde antworten

  • P粉459440991

    P粉4594409912024-03-30 00:14:27

    编辑:对于那些有类似问题的人,我可以通过更改 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']}},

    Antwort
    0
  • StornierenAntwort