【发布时间】:2021-05-22 03:49:42
【问题描述】:
我需要提取在线视频的特定帧来处理算法,但我不想下载整个视频,因为这样会降低效率。
对于初学者,我尝试使用 youtube 视频。我可以通过这种方式使用youtube-dl 下载整个视频:
ydl_opts = {'outtmpl': r'OUTPUT_DIRECTORY_HERE',}
with youtube_dl.YoutubeDL(ydl_opts) as ydl:
ydl.download([url])
然后我可以捕获单个帧。
我需要避免下载整个视频。经过一番研究,我发现ffmpeg 可能会帮助我做到这一点。我发现没有办法只下载帧,所以如果这不可能,第二个选择是我可以下载视频的特定部分。 linux 中的一个这样的例子是here,但我找不到任何适用于 python 的解决方案。
什么是只下载帧或部分视频(在 python 中)而不下载整个内容的好方法?
【问题讨论】:
-
@AyeshaKhan 这个答案是下载所有帧。所以我所做的是我跳过了下载其中的一些(比如我下载了视频中的每 300 帧,即我每 10 秒下载一帧以获取 30 fps 的视频)。这似乎有效。虽然,我不确定我是只是跳过在本地保存它们还是实际上跳过捕获它们。不过谢谢!
-
我已经构建了一个 API 来获取 youtube 视频的帧:rapidapi.com/abyesilyurt/api/youtube-screenshot1/details。它需要一个 http 请求并返回图像。
标签: python opencv ffmpeg video-capture youtube-dl