我想从视频中提取单帧(作为拇指),而无需下载完整的视频文件。我只想读取 mp4 标头(信息应该位于 moov 原子中),然后下载所需的字节范围。 Afaik 这就是当您跳到无缓冲部分时浏览器(HTML5 视频)所做的事情
我已经看过:HTML5 视频的字节范围请求(伪流)如何工作?但我不知道如何将它与 ffmpeg 一起使用。
非常感谢!
如果您绝对决心让这种方法发挥作用,那么通用算法的运行方式如下:
moov
原子位于前面;确定 moov
原子的长度并发出另一个请求以获取原子的其余部分moov
原子以找到视频trak
原子;深入该原子以找到以下原子:stsd
、stss
、stco
/co64
和stsz
stsd
将为您提供输入 H.264 视频解码器所需的初始化信息stss
原子为您提供所有同步样本(关键帧)的列表;这些可以独立解码,非常适合您的缩略图前景stss
原子提供,您可以与 stco
或 co64
原子交叉引用(trak
将有一个或另一个)以找到绝对文件位置,以及 stsz
原子,它将告诉您帧中有多少字节将所有这些信息结合起来,您应该能够仅下载和解码 MP4 视频的关键帧(从而调整大小并重新压缩缩略图)。
我承认我确实回答的有点晚了,但是六个月前我也确实有这个想法,并且实现了其中很小的一部分,说实话多媒体Mike的回答已经把大概的流程说清楚了,但是还是不够具体。你可以参考我写的代码来了解过程:https://github.com/gaowanliang/web-video-thumbnailer