如何在Android OS中获取视频的帧率?

我想获得视频的帧速率,但是我不想使用FFMPEG,JAVACV lib。是否有可能在Android中获取视频的帧率?

我读到KEY_FRAME_RATE时说,“具体地说,MediaExtractor提供了一个与轨道的帧速率信息相对应的整数值(如果已指定且非零)。”

但我不知道如何使用它?

如果您知道如何从视频中获取帧频,请在此处回答。

回答:

MediaExtractor extractor = new MediaExtractor();

int frameRate = 24; //may be default

try {

//Adjust data source as per the requirement if file, URI, etc.

extractor.setDataSource(...);

int numTracks = extractor.getTrackCount();

for (int i = 0; i < numTracks; ++i) {

MediaFormat format = extractor.getTrackFormat(i);

String mime = format.getString(MediaFormat.KEY_MIME);

if (mime.startsWith("video/")) {

if (format.containsKey(MediaFormat.KEY_FRAME_RATE)) {

frameRate = format.getInteger(MediaFormat.KEY_FRAME_RATE);

}

}

}

} catch (IOException e) {

e.printStackTrace();

}finally {

//Release stuff

extractor.release();

}

尝试在辅助线程中运行以上代码。

什么是 ,可能是

在API级别16中添加字符串KEY_FRAME_RATE一个键,以帧/秒为单位描述视频格式的帧速率。当平台使用该值时,关联的值通常是整数,但是视频编解码器也接受浮点型配置值。具体而言,MediaExtractor提供一个与轨道的帧速率信息相对应的整数值(如果已指定),并且该值非零。

MediaCodec接受浮点和整数值。如果KEY_OPERATING_RATE不存在并且KEY_PRIORITY为0(实时),则这表示所需的工作帧速率。对于视频编码器,此值对应于预期的帧速率,尽管编码器应支持基于缓冲区时间戳的可变帧速率。MediaKeyc输入/输出格式或MediaMuxer均未使用此键。

恒定值:“帧速率”

代码检查是否用于NPE。往上看

以上是 如何在Android OS中获取视频的帧率? 的全部内容, 来源链接: utcz.com/qa/426171.html

回到顶部