C++ 获取合成时间C++;

C++ 获取合成时间C++;,c++,ffmpeg,video-streaming,streaming,libav,C++,Ffmpeg,Video Streaming,Streaming,Libav,我使用libav和ffmpeg制作了自己的rtmp服务器。我接收flv文件或“包含”flv文件的rtmp流媒体作为输入。 由于我操纵flv文件和每个帧的相对合成时间,我想知道是否有办法获得该合成时间。 我认为,给定我的AVPacket,我可以分析原始缓冲区以提取正确的信息,因为我知道flv报头是11个字节,然后在接下来的16个字节中,我应该找到合成时间。 但它不起作用 这是一个粗略的代码示例: AVPacket pkt; AVFormatContext *ifmt_ctx while(true)

我使用libav和ffmpeg制作了自己的rtmp服务器。我接收flv文件或“包含”flv文件的rtmp流媒体作为输入。 由于我操纵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)具有解码时间和合成时间,其他格式(如传输流)具有解码时间和呈现时间。为了方便程序员,AVPacket选择了一种方法来存储信息,并在需要时进行转换。幸运的是,它很容易转换回:

auto cts = pkt.pts - pkt.dts

试试这个:这不是我需要的,对吧,你是。你能在时间应该在的地方得到16字节的十六进制转储吗?是的,但它看起来不是我需要的正确信息