我想让我的软件定期(每5分钟左右)采取的实时流,目前正在发生的截图。我在Youtube和Twitch上都标记了这个问题,因为这两个网站上都有这个问题,所以一个适合这两个网站的答案是完美的。我已经研究了一些旧的库,如youtube-dl和livestreamer,但它们是CLI,下载一个文件,然后需要用视频播放器读取。
ffscu2ro1#
使用yt-dlp和ffmpeg,您可以通过执行以下命令来获取YouTube上直播的最后一帧:
ffmpeg -i "$(yt-dlp -g VIDEO_ID | head -n 1)" -vframes 1 last.jpg
yt-dlp -g VIDEO_ID | head -n 1将从Google服务器检索实际视频URL。据我用ydYDqZQpim8测试,检索到的帧比直播上显示的时间晚不到2秒。
yt-dlp -g VIDEO_ID | head -n 1
ydYDqZQpim8
oxiaedzo2#
对于Twitch,您可以使用Get Streams API获取流的当前缩略图。Twitch已经为你提供了截图,所以你可以只使用缩略图。因此,对Get Streams的响应示例
Get Streams
{ "data": [ { "id": "41375541868", "user_id": "459331509", "user_login": "auronplay", "user_name": "auronplay", "game_id": "494131", "game_name": "Little Nightmares", "type": "live", "title": "hablamos y le damos a Little Nightmares 1", "viewer_count": 78365, "started_at": "2021-03-10T15:04:21Z", "language": "es", "thumbnail_url": "https://static-cdn.jtvnw.net/previews-ttv/live_user_auronplay-{width}x{height}.jpg", "tag_ids": [ "d4bb9c58-2141-4881-bcdc-3fe0505457d1" ], "is_mature": false },
只要抓住thumbnail_url,并在最后抛出一个缓存破坏者,你就有了一个图像。不需要FFMPEG或yt-dl schnanigans
thumbnail_url
2条答案
按热度按时间ffscu2ro1#
使用yt-dlp和ffmpeg,您可以通过执行以下命令来获取YouTube上直播的最后一帧:
yt-dlp -g VIDEO_ID | head -n 1
将从Google服务器检索实际视频URL。据我用
ydYDqZQpim8
测试,检索到的帧比直播上显示的时间晚不到2秒。oxiaedzo2#
对于Twitch,您可以使用Get Streams API获取流的当前缩略图。
Twitch已经为你提供了截图,所以你可以只使用缩略图。
因此,对
Get Streams
的响应示例只要抓住
thumbnail_url
,并在最后抛出一个缓存破坏者,你就有了一个图像。不需要FFMPEG或yt-dl schnanigans