使用MP4文件块作为缩略图

Mor*_*ger 1 video mp4 ffmpeg

我想从视频中提取单帧(作为拇指),而无需下载完整的视频文件.我想只读取mp4标题(信息应该在moov原子中),然后下载所需的字节范围.Afaik这就是当您跳到无缓冲的部分时,浏览器(HTML5视频)所做的事情

我已经看过:HTML5视频的字节范围请求(伪流)如何工作?但我无法弄清楚如何与ffmpeg一起使用它.

非常感谢!

Mul*_*ike 8

如果您绝对决定使这种方法有效,那么通用算法的运行方式如下:

  • 下载MP4文件的第一个千字节
  • 确保moov原子在前面; 确定moov原子的长度并提出另一个请求来获取原子的其余部分
  • 通过moov原子挖掘找到视频trak原子; 挖成原子找到下列原子:stsd,stss,stco/ co64,和stsz
  • stsd将为您提供输入H.264视频解码器所需的初始化信息
  • stss原子给你所有同步样本(关键帧)的列表; 这些可以独立解码,非常适合您的缩略图
  • 当你知道哪些帧是关键帧时,stss原子的礼貌,你可以与stcoco64原子(一个trak将有一个或另一个)交叉引用,以找到绝对文件的位置,和stsz原子,它将告诉你究竟有多少字节在帧中

结合所有这些信息,您应该能够下载和解码(并因此调整大小和重新压缩以进行缩略图)只是MP4视频的关键帧.