我想获得视频的帧率,但是我不想使用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();
}

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

更新1 什么是 KEY_FRAME_RATE ,可能是可选



恒定值:“帧速率”

更新2 代码检查是否存在KEY_FRAME_RATE的NPE。往上看

07-27 13:35