pra*_*iya 18 java video android frame-rate
我想获得视频的帧速率,但我不想使用FFMPEG,JAVACV lib.是否有可能在Android中获得视频的帧速率?
我读了KEY_FRAME_RATE它说,"具体来说,MediaExtractor提供一个整数值,对应于轨道的帧速率信息,如果指定且非零." 但我不知道如何使用它?
如果您知道如何从视频中获取帧速率,请在此处回答.
Anu*_*ngh 18
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();
}
Run Code Online (Sandbox Code Playgroud)
注意:尝试在工作线程中运行上面的代码.
更新1什么是KEY_FRAME_RATE,可以是可选的
KEY_FRAME_RATE 在API级别16中添加字符串KEY_FRAME_RATE描述视频格式帧速率的密钥,以帧/秒为单位.当平台使用该值时,关联值通常为整数,但视频编解码器也接受浮点配置值.具体地,MediaExtractor提供对应于轨道的帧速率信息的整数值(如果指定)且非零.否则,此密钥不存在.MediaCodec接受浮点值和整数值.如果KEY_OPERATING_RATE不存在且KEY_PRIORITY为0(实时),则表示所需的操作帧速率.对于视频编码器,该值对应于预期的帧速率,但是期望编码器基于缓冲器时间戳支持可变帧速率.此键不用于MediaCodec输入/输出格式,也不用于MediaMuxer.
常数值:"帧率"
更新2代码检查是否为NPE,如果KEY_FRAME_RATE不存在.往上看
| 归档时间: |
|
| 查看次数: |
4860 次 |
| 最近记录: |