Compiler errors ffmpeg H264 avi文件获取帧时间戳??UINT64_C错误

Compiler errors ffmpeg H264 avi文件获取帧时间戳??UINT64_C错误,compiler-errors,ffmpeg,timestamp,uint64,Compiler Errors,Ffmpeg,Timestamp,Uint64,avi文件与h264编解码器。我需要打开它并提取每帧的时间戳 我尝试在opencv中执行此操作,但它返回错误的结果 为了获得时间戳,我修改了fffmpeg/doc/examples文件夹中的示例filtering_video.c的代码 我有下面的代码,但是编译它会给我一个关于UNIT64\u C的奇怪结果。 四处搜索,我发现这是一个ffmpeg问题 因此,有两个问题: 1.这段代码看起来能够返回和打印帧时间戳吗 2.UINT64_C问题的任何解决方案 使用Ubuntu11.04和最新的ffmpe

avi文件与h264编解码器。我需要打开它并提取每帧的时间戳

我尝试在opencv中执行此操作,但它返回错误的结果

为了获得时间戳,我修改了fffmpeg/doc/examples文件夹中的示例filtering_video.c的代码

我有下面的代码,但是编译它会给我一个关于UNIT64\u C的奇怪结果。 四处搜索,我发现这是一个ffmpeg问题

因此,有两个问题: 1.这段代码看起来能够返回和打印帧时间戳吗 2.UINT64_C问题的任何解决方案

使用Ubuntu11.04和最新的ffmpeg

代码


UINT64_C
是在
中声明的,因此在任何其他头之前包含它,它不应该再抱怨它。

UINT64_C的定义在一个条件内:

/* The ISO C99 standard specifies that in C++ implementations these
   should only be defined if explicitly requested.  */
#if !defined __cplusplus || defined __STDC_CONSTANT_MACROS
看起来如果您像我一样使用C++98中的ffmpeg,您需要

#define __STDC_CONSTANT_MACROS
在你面前

#include <stdint.h>
#包括

<代码> > p>我发现,Stdit.h只定义了C的宏It64,而不是C++。 因为我不想对ffmpeg的头文件太过麻烦,所以我将这个定义放在代码中,首先是ffmpeg的所有包含项

#ifndef INT64_C
#define INT64_C(c) (c ## LL)
#define UINT64_C(c) (c ## ULL)
#endif

首先链接它,但compliler仍然对UINT64_C感到愤怒。也链接了inttypes.h,但仍然.Show
gcc-E-dD-C yourfile.C | grep UINT64_C
在添加
stdint
inttypes
包括
#define(定义#UINT64)C#UL#定义UINT64_MAX(#u UINT64_C(18446744073709551615))#定义UINT64_MAX(#u UINT64_C(18446744073709551615))#定义UINTMAX_MAX(#u UINT64_C(18446744073709551615))#定义UINT64_C(C)UL。我不知道为什么编译器不喜欢它。
#include <stdint.h>
#ifndef INT64_C
#define INT64_C(c) (c ## LL)
#define UINT64_C(c) (c ## ULL)
#endif