我的视频没有关键帧,怎么可能?

时间:2018-02-04 13:55:25

标签: video ffmpeg h.264 ffprobe

当我在我的视频上运行以下行时,它只输出P帧和B帧而没有I帧,

ffprobe -select_streams v -show_frames -show_entries frame=pict_type -of csv 00000.MTS

视频怎么可能没有I帧。
Here是视频的链接 根据{{​​3}}教程的定义,P帧只是建立在以前的帧上,如果没有其他帧可以构建我们如何使用P帧?
ffprobe -i 00000.MTS的输出为:

...
Input #0, mpegts, from '00000.MTS':
  Duration: 00:17:13.24, start: 1.040000, bitrate: 16451 kb/s
  Program 1 
    Stream #0:0[0x1011]: Video: h264 (High) (HDMV / 0x564D4448), yuv420p, 1920x1080 [SAR 1:1 DAR 16:9], 25 fps, 25 tbr, 90k tbn, 50 tbc
    Stream #0:1[0x1100]: Audio: ac3 (AC-3 / 0x332D4341), 48000 Hz, stereo, fltp, 256 kb/s
    Stream #0:2[0x1200]: Subtitle: hdmv_pgs_subtitle ([144][0][0][0] / 0x0090), 1920x1080

2 个答案:

答案 0 :(得分:2)

http://www.javahelps.com/2015/08/jersey-2x-hello-world.html中所述 :

  

P帧可以包含帧内宏块或预测宏块

因此,您的视频可以在P帧中包含I帧宏块。

答案 1 :(得分:2)

我在共享样本视频中看到了很多I帧。

运行

ffprobe videotoshare.mts -show_entries frame=key_frame,pict_type,pkt_pts_time -select_streams v -of compact -v 0 | grep ame=1

frame|key_frame=1|pkt_pts_time=1.520000|pict_type=I
frame|key_frame=1|pkt_pts_time=2.040000|pict_type=I
frame|key_frame=1|pkt_pts_time=2.560000|pict_type=I
frame|key_frame=1|pkt_pts_time=3.080000|pict_type=I
frame|key_frame=1|pkt_pts_time=3.600000|pict_type=I
frame|key_frame=1|pkt_pts_time=4.120000|pict_type=I
frame|key_frame=1|pkt_pts_time=4.640000|pict_type=I
frame|key_frame=1|pkt_pts_time=5.160000|pict_type=I

完整视频显示类似的读数

ffprobe videotoshare-full.mts -show_entries frame=key_frame,pict_type,pkt_pts_time -select_streams v -of compact -v 0 | grep ame=1

frame|key_frame=1|pkt_pts_time=1.120000|pict_type=I
frame|key_frame=1|pkt_pts_time=1.640000|pict_type=I
frame|key_frame=1|pkt_pts_time=2.160000|pict_type=I
frame|key_frame=1|pkt_pts_time=2.680000|pict_type=I
frame|key_frame=1|pkt_pts_time=3.200000|pict_type=I
frame|key_frame=1|pkt_pts_time=3.720000|pict_type=I