2017-04-03 42 views
0

我想找到最快的方式来获取电影中所有I帧的列表。mp4文件/ SSTS信息

到目前为止,我尝试过ffprobe,但它速度很慢,我一直在寻找更快的解决方案。

我发现的另一种选择是使用mp4parser工具;它输出文件与此sectio,所述SSTS信息:

------------------------------------------------------------------------- 
/moov/trak/mdia/minf/stbl/stss        @ 0x1c152d8 
    Box size: 0x44 version: 0x0 flags: 0x0 
    entry_count:    0xd 
    sample_number: 
    0x1 0x12d 0x259 0x385 .... 

我可以看到,我有13个I帧和他们隔开300帧(在显示的4个值)

是间隔I帧通过电影不变?还是我需要编写我自己的SSTS解析器来获取整个列表?

回答

0

下面的命令将快速提供视频关键帧的时间戳以及其他信息。

ffmpeg -skip_frame nokey -i in.mp4 -an -vf showinfo -f null - 

输出看起来像

[Parsed_showinfo_0 @ 00000000032903a0] n: 55 pts:5748224 pts_time:449.08 pos: 17288779 fmt:yuv420p sar:1/1 s:960x720 i:P iskey:1 type:I checksum:361866A6 plane_checksum:[BA2DCCBF A8E937B3 BD006225] mean:[220 117 133] stdev:[57.8 4.1 5.3] 

pts_time让你的时间索引。对于绝对帧索引,n不准确,但它是关键帧索引的准确计数,即n: 55是视频中的第56个关键帧。