如何对TS视频流进行截图?

LA_*_*LA_ 3 python opencv screenshot video-streaming

我想每 1 分钟从视频流中截取一次屏幕截图。视频流以m3u8 文件形式提供:

#EXTM3U
#EXT-X-TARGETDURATION:6
#EXT-X-VERSION:3
#EXT-X-MEDIA-SEQUENCE:112076
#EXT-X-PROGRAM-DATE-TIME:2019-03-19T16:16:53Z
#EXTINF:6.000, 2019/03/19/16/16/53-06000.ts
#EXTINF:6.000, 2019/03/19/16/16/59-06000.ts
#EXTINF:6.000, 2019/03/19/16/17/05-06000.ts
#EXTINF:6.000, 2019/03/19/16/17/11-06000.ts
Run Code Online (Sandbox Code Playgroud)

我找到了一个库来解析它 - https://github.com/globocom/m3u8。但我不明白如何将此 TS 视频流转换为单个 jpeg 文件。我应该吗

  1. 下载.ts文件
  2. 找到需要的框架
  3. 提取它
  4. 删除ts文件?

我应该使用OpenCV还是有更简单的解决方案?

使用OpenV

Ped*_*ito 6

这是ffmpeg的工作。\n要每分钟从播放列表
中捕获一帧,您可以使用:

\n\n
ffmpeg -i "http://cam.l-invest.ru/nagatinskaya4/tracks-v1/index.m3u8" -vf fps=1/60 invest.ru_%04d.jpg -hide_banner\n
Run Code Online (Sandbox Code Playgroud)\n\n

上面将产生:

\n\n
invest.ru_0001.jpg\n
Run Code Online (Sandbox Code Playgroud)\n\n

投资.ru_0001.jpg

\n\n
invest.ru_0002.jpg\n
Run Code Online (Sandbox Code Playgroud)\n\n

投资.ru_0002.jpg

\n\n

依此类推...每 60\xe2\x80\xb3 一次

\n\n
\n\n

注意事项

\n\n
    \n
  1. invest.ru_0002.jpg正好在 60\xe2\x80\xb3 之后拍摄invest.ru_0001.jpg,如右上方时间戳所示。

  2. \n
  3. -vf表示ffmpeg使用视频过滤器fps=1/60,因此它将每 60\xe2\x80\xb3 ( src ) 提取一帧。

  4. \n
  5. 如果需要,可以更改输出格式和文件名结构(例如%Y-%m-%d_%H-%M-%S.jpg:)。请检查ffmpeg image2 文档以获取可用选项。
  6. \n
\n