目前我正在尝试检索 YouTube 上正在进行的直播的最新帧,但不知道如何执行此操作。
我自己做的最好的事情就是向
https://www.googleapis.com/youtube/v3/search?part=snippet&channelId=${channelId}&eventType=live&type=video&key=${apiKey}
发出 GET 请求,但似乎没有返回任何对我有用的东西。
使用浏览器的开发者工具,我注意到 YouTube 向
https://rr3---sn-5hnednss.googlevideo.com/videoplayback
发出了 GET 请求,以获得我认为正是我需要的内容:正在进行的直播的最新帧。
问题是,我不知道如何使用该端点,并且似乎无法在网上找到有关它的文档。
有人知道从这里去哪里吗?
使用 yt-dlp 和 ffmpeg,您可以通过执行以下命令来获取 YouTube 视频的最后一帧:
ffmpeg -sseof -3 -i "$(yt-dlp -g VIDEO_ID | head -n 1)" -update 1 last.jpg
这将查找输入的最后三秒并输出所有帧。但由于设置了
,每一帧都会被覆盖到同一个文件中,只留下最后一帧。-update 1
将从 Google 服务器检索实际视频 URL。yt-dlp -g VIDEO_ID | head -n 1
您可以使用这个已经播放的 YouTube 直播视频 ID RGBK6aHC9Yg 进行测试,因为最后一帧是有趣,因为与前几秒不同的是,它是黑色的,并带有一些文本。
对于正在进行的直播,您可以通过执行以下命令检索第一个接收帧:
ffmpeg -i "$(yt-dlp -g VIDEO_ID | head -n 1)" -vframes 1 last.jpg
据我使用vKVBgsOj2pc测试,检索到的帧比直播上显示的日期晚了10秒。