当我在我的视频上运行以下行时,它只输出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
答案 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