无需下载整个文件即可从 HTTP 流视频中提取帧

Ort*_*x92 2 video vlc-media-player ffmpeg streaming

我想从视频文件中的特定位置提取一帧。该文件位于远程服务器上,我不想下载整个文件。如何以编程方式从 http 流中提取帧?

我可以使用带有 GUI 的 VLC 做我想做的事,但例如我不知道如何在 CLI 中做到这一点。也许是一种使用 VLC cli 发送范围标头的方法?

我正在尝试在无头 ubuntu 机器上执行此操作

slh*_*hck 5

ffmpeg 也应该能够从 URL 中读取。只需HH:MM:SS.msec-ss选项指定以秒为单位的偏移量或格式:

ffmpeg -i http://example.com/video.mp4 -ss 5 -frames:v 1 thumbnail.png
Run Code Online (Sandbox Code Playgroud)

这也适用于其他 HTML5 容器。

如果您使用的是 Linux 发行版,请确保您没有通过 安装 ffmpeg apt-get install ffmpeg,而是自己编译下载静态构建。官方软件包中的版本总是有点过时,而且——取决于 Ubuntu 版本——甚至不是“真正的”ffmpeg。