Heim > Fragen und Antworten > Hauptteil
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 nodejs
和 python
。我是否缺少 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粉4594409912024-03-30 00:14:27
编辑:对于那些有类似问题的人,我可以通过更改 yt-dlp 选项来解决问题。具体来说,我添加了 format
和 extractor_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']}},