我试图使用FFMPEG和libavformat从WebM文件中检索持续时间和帧数。我正在调整一些最初用于处理MP4的代码,当传递一个MP4时,它似乎可以正常工作。
我已经编译了带有vp8解析器和解码器以及matroska分离器的FFMPEG 2.1。
我有一个指向视频流的AVStream指针,*video_st。代码查找video_st->nb_frames中的帧数,并在video_st->duration中查找持续时间。这两者都显示为0。
API文档中对于
至于
谢谢!
我已经编译了带有vp8解析器和解码器以及matroska分离器的FFMPEG 2.1。
我有一个指向视频流的AVStream指针,*video_st。代码查找video_st->nb_frames中的帧数,并在video_st->duration中查找持续时间。这两者都显示为0。
API文档中对于
video_st->duration
(https://ffmpeg.org/doxygen/trunk/structAVStream.html#a4e04af7a5a4d8298649850df798dd0b)的说明是:"如果源文件没有指定持续时间,但指定了比特率,则将从比特率和文件大小估算此值。" 我可以确认该文件确实指定了持续时间和比特率(因为我在我的桌面上使用ffmpeg -i
进行了测试)。所以这个返回值为0似乎有些奇怪。也许我的FFMPEG构建配置不正确?至于
nb_frames
,文档中说:“如果已知,则为此流中的帧数;否则为0”。如果返回0,我能做什么呢?同样,ffmpeg -i
会返回fps的估计值;这已经足够了,因为我可以用它和持续时间来估算帧数。谢谢!