使用MP4文件块作为缩略图

时间:2014-01-19 22:53:09

标签: video ffmpeg mp4

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

我已经看过:How can HTML5 video's byte-range requests (pseudo-streaming) work?但我无法弄清楚如何将它与ffmpeg一起使用。

非常感谢!

1 个答案:

答案 0 :(得分:8)

如果您绝对决定使这种方法有效,那么通用算法可能会如何运作:

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

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