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

我有一個在 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']}},
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板