获取合成时间C++

Get composition time C++

本文关键字:C++ 时间 获取      更新时间:2023-10-16

我使用libav和ffmpeg制作了自己的rtmp服务器。我收到一个flv文件或一个rtmp流"包含"flv文件作为输入。由于我操作flv文件和每帧的相对合成时间,我想知道是否有办法获得这个合成时间。我想,考虑到我的AVPacket,我可以分析原始缓冲区以提取正确的信息,因为我知道flv标头是11个字节,然后在接下来的16个字节中,我应该找到合成时间。但它不起作用。

这是一个粗略的代码示例:

AVPacket pkt;
AVFormatContext *ifmt_ctx
while(true)
{
AVStream *in_stream, *out_stream;
ret = av_read_frame(ifmt_ctx, &pkt);
//get the composite time
}

AVPacket需要能够表示所有媒体格式中的数据。一些格式(如mp4和flv(具有decode_time和composition_time,其他格式(如传输流(具有decode _time和presentation_time。为了让程序员更容易,AVPacket选择了一种方法来存储信息,并在需要时进行转换。幸运的是,这是一个易于转换的

auto cts = pkt.pts - pkt.dts