0

这是整个代码,方便参考:

import urllib.request
import streamlink
import ffmpeg
stream_url = streamlink.streams("https://www.twitch.tv/videos/783301562")['best'].url
print(stream_url)

try:
    urllib.request.urlretrieve(stream_url, "vod.m3u8")
except Exception as e:
    print(e)

stream = (
    ffmpeg
    .input('vod.m3u8')
    .output('output.mp4')
    .run
)
print(stream)

我正在寻找一种下载 Twitch VOD 的方法。我从 VOD 的链接开始:https ://www.twitch.tv/videos/783301562 。然后我使用了代码:

stream_url = streamlink.streams("https://www.twitch.tv/videos/783301562")['best'].url
print(stream_url)

这给了我一个新链接,当我转到此链接时,它下载了一个扩展名为“.m3u8”的文件。此链接为:https ://dqrpb9wgowsf5.cloudfront.net/ab3654a5992fbfa52ccb_briziana_40240109614_1603789265/chunked/index-dvr.m3u8

从这里开始,我首先尝试将链接直接放入以下代码中:

stream = (
    ffmpeg
    .input(stream_url)
    .output('output.mp4')
    .run
)
print(stream)

这没有输出任何 mp4 文件,但确实给出了输出:

<bound method run of output(filename='output.mp4')[None] <2606681a>>

然后我添加了以下代码来下载文件,我还将 ffmpeg 代码更改为使用下载的文件而不是 url:

try:
    urllib.request.urlretrieve(stream_url, "vod.m3u8")
except Exception as e:
    print(e)

stream = (
    ffmpeg
    .input('vod.m3u8')
    .output('output.mp4')
    .run
)
print(stream)

这给出了相同的结果,没有具有与上述相同输出的 mp4 文件。任何帮助将不胜感激!

4

0 回答 0