ffmpeg如何获得h264的时间戳
时间: 2023-08-27 15:16:00 浏览: 336
Android调用FFmpeg 拉rtsp流 获得h264原始压缩数据(Nalu数据)
5星 · 资源好评率100%
在使用ffmpeg处理h264视频时,可以通过使用AVPacket结构体中的pts(表示显示时间戳)和dts(表示解码时间戳)来获得时间戳信息。在解码过程中,可以使用avcodec_send_packet()和avcodec_receive_frame()函数分别发送AVPacket并接收AVFrame,从而获得时间戳信息。具体的代码示例如下:
```
AVPacket packet;
AVFrame *frame = av_frame_alloc();
int ret;
// 读取h264视频数据到packet中
ret = av_read_frame(format_context, &packet);
// 将packet发送到解码器中
ret = avcodec_send_packet(codec_context, &packet);
// 接收解码后的AVFrame
ret = avcodec_receive_frame(codec_context, frame);
if (ret >= 0) {
// 获取解码后的AVFrame的时间戳信息
int64_t pts = av_frame_get_best_effort_timestamp(frame);
int64_t dts = frame->pkt_dts;
}
```
其中,pts和dts都是以AVStream.time_base为单位的时间戳,需要通过av_rescale_q()函数将其转换为秒或毫秒等更易于处理的时间单位。
阅读全文