ffprobe不会将mpeg传输流的数据包大小显示为188字节

时间:2015-09-27 00:28:23

标签: ffmpeg mpeg mpeg2-ts ffprobe

我使用以下H.264命令从ffmpeg编码文件创建了传输流:

ffmpeg -i encoded.mp4 -c copy -map 0 -vbsf h264_mp4toannexb mpegts sample.ts

现在我想检查传输流中的帧和数据包。我用了

ffprobe -show_frames

显示音频和视频帧的帧详细信息。但我对pkt_size字段感到困惑。它是每个基本音频和视频流(I / B / P帧)的实际帧大小吗?

另外,当我跑

ffprobe -show_packets

是否应该在传输流中提供每个数据包的详细信息?因为每个数据包的size字段不是188字节,而是与pkt_size获得的-show_frames相同。

有人可以解释一下为什么传输流的-show_packets中的大小不是188字节?在将mp4多路复用到TS时,我做错了什么?

1 个答案:

答案 0 :(得分:2)

pkt_size 必须等于。见ffprobe test from src code from gitHub

[packets_and_frames.packet.0]
codec_type=audio
stream_index=0
pts=0
pts_time=0.000000
dts=0
dts_time=0.000000
duration=1024
duration_time=0.023220
convergence_duration=N/A
convergence_duration_time=N/A
size=2048
pos=642
flags=K

[packets_and_frames.frame.0]
media_type=audio
stream_index=0
key_frame=1
pkt_pts=0
pkt_pts_time=0.000000
pkt_dts=0
pkt_dts_time=0.000000
best_effort_timestamp=0
best_effort_timestamp_time=0.000000
pkt_duration=1024
pkt_duration_time=0.023220
pkt_pos=642
pkt_size=2048
sample_fmt=s16
nb_samples=1024
channels=1
channel_layout=unknown

[packets_and_frames.packet.1]
codec_type=video
stream_index=1
pts=0
pts_time=0.000000
dts=0
dts_time=0.000000
duration=2048
duration_time=0.040000
convergence_duration=N/A
convergence_duration_time=N/A
size=230400
pos=2717
flags=K

[packets_and_frames.frame.1]
media_type=video
stream_index=1
key_frame=1
pkt_pts=0
pkt_pts_time=0.000000
pkt_dts=0
pkt_dts_time=0.000000
best_effort_timestamp=0
best_effort_timestamp_time=0.000000
pkt_duration=2048
pkt_duration_time=0.040000
pkt_pos=2717
pkt_size=230400
width=320
height=240
pix_fmt=rgb24
sample_aspect_ratio=1\:1
pict_type=I
coded_picture_number=0
display_picture_number=0
interlaced_frame=0
top_field_first=0
repeat_pict=0

[packets_and_frames.packet.2]
codec_type=video
stream_index=2
pts=0
pts_time=0.000000
dts=0
dts_time=0.000000
duration=2048
duration_time=0.040000
convergence_duration=N/A
convergence_duration_time=N/A
size=30000
pos=233138
flags=K

[packets_and_frames.frame.2]
media_type=video
stream_index=2
key_frame=1
pkt_pts=0
pkt_pts_time=0.000000
pkt_dts=0
pkt_dts_time=0.000000
best_effort_timestamp=0
best_effort_timestamp_time=0.000000
pkt_duration=2048
pkt_duration_time=0.040000
pkt_pos=233138
pkt_size=30000
width=100
height=100
pix_fmt=rgb24
sample_aspect_ratio=1\:1
pict_type=I
coded_picture_number=0
display_picture_number=0
interlaced_frame=0
top_field_first=0
repeat_pict=0

是一样的。 pkt_size 都是bytes中压缩帧的大小。

请参阅this issue ticket too