当前位置: 首页 > 知识库问答 >
问题:

为什么在我的流中PTS和DTS是相同的?

钱振
2023-03-14

我正在用FFProbe测试一个带有H264视频的mp4文件。我正在使用以下命令来获取帧信息。

ffprobe -i <input_mp4_file> -show_frames -select_streams v

我得到以下输出。

[FRAME]
media_type=video
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=512
pkt_duration_time=0.033333
pkt_pos=48
pkt_size=513516
width=1920
height=1920
pix_fmt=yuv420p
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
[/FRAME]
[FRAME]
media_type=video
stream_index=0
key_frame=0
pkt_pts=512
pkt_pts_time=0.033333
pkt_dts=512
pkt_dts_time=0.033333
best_effort_timestamp=512
best_effort_timestamp_time=0.033333
pkt_duration=512
pkt_duration_time=0.033333
pkt_pos=513564
pkt_size=3299
width=1920
height=1920
pix_fmt=yuv420p
sample_aspect_ratio=1:1
pict_type=P
coded_picture_number=1
display_picture_number=0
interlaced_frame=0
top_field_first=0
repeat_pict=0
[/FRAME]
[FRAME]
media_type=video
stream_index=0
key_frame=0
pkt_pts=1024
pkt_pts_time=0.066667
pkt_dts=1024
pkt_dts_time=0.066667
best_effort_timestamp=1024
best_effort_timestamp_time=0.066667
pkt_duration=512
pkt_duration_time=0.033333
pkt_pos=823989
pkt_size=40971
width=1920
height=1920
pix_fmt=yuv420p
sample_aspect_ratio=1:1
pict_type=B
coded_picture_number=4
display_picture_number=0
interlaced_frame=0
top_field_first=0
repeat_pict=0
[/FRAME]
[FRAME]
media_type=video
stream_index=0
key_frame=0
pkt_pts=1536
pkt_pts_time=0.100000
pkt_dts=1536
pkt_dts_time=0.100000
best_effort_timestamp=1536
best_effort_timestamp_time=0.100000
pkt_duration=512
pkt_duration_time=0.033333
pkt_pos=784312
pkt_size=38785
width=1920
height=1920
pix_fmt=yuv420p
sample_aspect_ratio=1:1
pict_type=B
coded_picture_number=3
display_picture_number=0
interlaced_frame=0
top_field_first=0
repeat_pict=0
[/FRAME]
[FRAME]
media_type=video
stream_index=0
key_frame=0
pkt_pts=2048
pkt_pts_time=0.133333
pkt_dts=2048
pkt_dts_time=0.133333
best_effort_timestamp=2048
best_effort_timestamp_time=0.133333
pkt_duration=512
pkt_duration_time=0.033333
pkt_pos=516886
pkt_size=267344
width=1920
height=1920
pix_fmt=yuv420p
sample_aspect_ratio=1:1
pict_type=P
coded_picture_number=2
display_picture_number=0
interlaced_frame=0
top_field_first=0
repeat_pict=0
[/FRAME]

共有1个答案

呼延沈义
2023-03-14

这些值不是您期望的DTS/PTS,请注意pkt_前缀。看这里。

PKT_PTS

从已解码生成此帧的AVPacket复制的PTS。

如果执行-show_packets,应该会看到不同的值。

 类似资料:
  • 我在我的代码中使用ffmpeg库从摄像机捕获rtsp流并用FLV编写。如果我只从一个摄像机捕获流,而摄像机只有视频流,那么没有任何错误,我得到了第一个带有pts和DTS1698557894的包,其他包的pts和dts慢慢增加。但是如果摄像机有视频和音频流,那么奇怪的事情就会发生。例如,视频数据包pts和dts以1698557894开始并缓慢增加,音频数据包以0开始并缓慢增加,在~50之后,数据包跳

  • 当从avi转码到mp4(x264)时,我遇到了fps问题。最终问题出在PTS和DTS值上,所以在AV_INTLEAVED_WRITE_FRAME函数之前添加的第12-15行: 看了很多帖子我还是不明白: =1/25和=1/12800。第一个是我设置的,但我不知道为什么和谁设置了12800?我注意到,在第(7)行=1/90000之前,紧接着它变成了1/12800,为什么?当我从avi转码到avi时,

  • 我正在从两个不同的线程接收视频H264编码数据和音频G.711 PCM编码数据,以mux/写入多媒体容器。 writer函数签名如下所示: 提前感谢! 编辑:在我的视频流中,没有B帧。所以,我认为这里PTS和DTS可以保持不变。

  • 我正在尝试mux H264编码数据和G711 PCM数据到多媒体容器。我从编码数据创建,最初视频/音频帧的PTS和DTS值等效于。所以我使用当前时间信息计算了DTS。我的密码- 我添加了这样的流- 编辑: 根据Ronald S.Bultje的建议,我所理解的是: 应该设置为现在音频和视频流现在都在同一时间基本单位中。 另外,如果我想使用视频流时基作为和音频流时基作为,正确的代码应该是什么样子? 编

  • 我正在写一个从文件中读取行的程序。 正在使用。例如,使用的密钥是“InboundTCP”。 从缓冲读取器读取第一行时,hashmap的containsKey(key)返回false,并添加一个新条目,这是显而易见的情况。但是,如果有另一行带有键“InboundTCP”,则containskey(key)返回false。 我放置了一个断点,并看到哈希代码不同。它将作为新条目添加。对于所有其他后续读取