Maison > Questions et réponses > le corps du texte
J'ai un site Web fonctionnant sur Node.js, avec Express sur le backend, qui à son tour appelle un script .py
pour télécharger l'audio demandé par l'utilisateur à l'aide de yt-dlp. Lorsque j'exécute le site sur localhost, tout fonctionne correctement et j'obtiens une URL téléchargeable .mp4 que je peux insérer directement dans l'audio JavaScript.
Cependant, lorsque je déploie le site Web sur Heroku, le même script .py
脚本给了我一个 .m3u8 url,它是一个音频播放列表,并且需要额外的步骤,例如 hls
me donne une URL .m3u8 qui est une liste de lecture audio et nécessite des étapes supplémentaires comme hls
pour jouer en utilisant JavaScript.
Ma question est de savoir pourquoi cela se produit.
Mon buildpack Heroku contient nodejs
和 python
。我是否缺少 FFmpegExtractAudio
quelques options de format yt-dlp ici ou ci-dessous ?
Mon .py
script est
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
Edit : Pour ceux qui ont des problèmes similaires, j'ai pu résoudre le problème en modifiant les options yt-dlp. Plus précisément, j'ai ajouté le drapeau format
和 extractor_args
. Remarque : Le code ci-dessus s'exécute sur localhost, le code ci-dessous s'exécute sur l'application Web déployée par Heroku ainsi que sur localhost. Bon codage !
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']}},