首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >面向Java的媒体信息抽取器

面向Java的媒体信息抽取器
EN

Stack Overflow用户
提问于 2010-01-30 16:05:25
回答 4查看 31.8K关注 0票数 17

我需要一个媒体信息提取库(纯Java或JNI包装),可以处理常见的媒体格式。我主要使用它作为视频文件,我至少需要以下信息:

  1. 视频长度(运行时)
  2. 视频比特率
  3. 视频帧
  4. 视频格式和编解码
  5. 视频大小(宽X高)
  6. 音频通道
  7. 音频格式
  8. 音频比特率和采样率

有几个库和工具,但我找不到Java。

EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2011-08-18 22:25:14

在问了几天这个问题之后,我找到了MediaInfo,它提供了几十个关于视频或音频文件的技术和标签信息。

我发现MediaInfo在subs4me源树中有一个JNI包装器,它非常有用。下面是一些代码片段,展示如何从媒体文件中提取一些信息:

代码语言:javascript
复制
String fileName   = "path/to/my/file";
File file         = new File(fileName);
MediaInfo info    = new MediaInfo();
info.open(file);

String format     = info.get(MediaInfo.StreamKind.Video, i, "Format", 
                        MediaInfo.InfoKind.Text, MediaInfo.InfoKind.Name);
int bitRate       = info.get(MediaInfo.StreamKind.Video, i, "BitRate", 
                        MediaInfo.InfoKind.Text, MediaInfo.InfoKind.Name);
float frameRate   = info.get(MediaInfo.StreamKind.Video, i, "FrameRate", 
                        MediaInfo.InfoKind.Text, MediaInfo.InfoKind.Name);
short width       = info.get(MediaInfo.StreamKind.Video, i, "Width", 
                        MediaInfo.InfoKind.Text, MediaInfo.InfoKind.Name);

int audioBitrate  = info.get(MediaInfo.StreamKind.Audio, i, "BitRate", 
                        MediaInfo.InfoKind.Text, MediaInfo.InfoKind.Name);
int audioChannels = info.get(MediaInfo.StreamKind.Audio, i, "Channels", 
                        MediaInfo.InfoKind.Text, MediaInfo.InfoKind.Name);

请注意,上面的代码是一个基本示例,不包含任何错误检查(这在实际场景中是一个坏习惯)。还请注意,您可以从MediaInfo中提取的信息并不局限于上述信息。请参阅MediaInfo的原始输出,了解可以提取或读取MediaInfo C++ SDK的媒体信息类型。

票数 13
EN

Stack Overflow用户

发布于 2010-01-30 17:55:23

您不需要这样的框架,例如,AVI视频容器格式有一个包含所有相关元数据的56字节头那个网站上也有很多其他的格式,所有这些似乎都是非常微不足道的实现。

票数 1
EN

Stack Overflow用户

发布于 2010-02-03 04:19:36

试试夏格勒。下面是一些查询媒体文件并输出各种有用的元数据的源代码

  • 艺术
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/2168472

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档