用于检查视频元数据的Java库(如果它是1080p,720p等)

时间:2011-08-22 02:35:34

标签: java video metadata

我目前正在寻找一个查看视频元数据的库,看看视频是1080p,720p还是最不能获得基本元数据(分辨率,比特率等),这样我就可以进行计算来检查自己。

我希望图书馆体积小,跨平台,它可以支持许多主要格式。像https://github.com/drewnoakes/metadata-extractor这样的东西,当然还有视频。

我试着四处寻找,什么也没找到,这样的图书库存在吗?

2 个答案:

答案 0 :(得分:2)

答案 1 :(得分:1)

我还没有尝试过,但似乎Java MP4 Parser图书馆是我一直在寻找的。它能够读取和编辑元数据,跨平台,并且文件大小似乎很轻。

github文档的摘录:

  

Java MP4 Parser

     

用于读取,写入和创建MP4容器的Java API。操纵   容器不同于编码和解码视频和音频。   使用库

     

该库已发布到Maven存储库。推出每个版本   到发布页面上发布的临时存储库。上   请求特定版本可以推送到maven central。

  <dependency>
    <groupId>com.googlecode.mp4parser</groupId>
    <artifactId>isoparser</artifactId>
    <version>1.1.7</version>
  </dependency>
     

对于不使用依赖关系管理工具的项目   发布的工件(jar,javadoc-jar,source-jar)附加到   发布页面。请注意,该项目需要   aspectj-rt.jar library。

     

你能做什么?

     

MP4 Parser的典型任务是:

     
      
  • 将音频/视频复用为MP4文件
  •   
  • 附加使用相同编码设置的录制文件
  •   
  • 添加/更改元数据
  •   
  • 通过省略帧来缩短录音我的示例将全部使用H264和AAC,因为这两个编解码器是MP4文件的最典型。 AC-3是   由于编解码器在DVD中众所周知,因此也并不罕见。还有   带有H263 / MPEG-2视频轨道的MP4文件,但不再使用它们   像大多数Android手机一样普及。你也可以
  •   
     

Muxing音频/视频

     

API和流程很简单:

     

将每个原始格式文件包装到适当的Track对象中。

     
    

H264TrackImpl h264Track = new H264TrackImpl(new     FileDataSourceImpl(&#34; video.h264&#34)); AACTrackImpl aacTrack = new     AACTrackImpl(新的FileDataSourceImpl(&#34; audio.aac&#34;));

  
     

然后将这些Track对象添加到Movie对象

Movie movie = new Movie();
movie.addTrack(h264Track);
movie.addTrack(aacTrack);
     

将Movie对象输入MP4Builder以创建容器。

Container mp4file = new DefaultMp4Builder().build(movie);
     

将容器写入适当的水槽。

     

FileChannel fc = new FileOutputStream(new   文件(&#34; output.mp4&#34)。)getChannel(); mp4file.writeContainer(FC);   fc.close();有些情况下会发出帧率信号   带或预先知道,以便H264不包含它   从字面上。在这种情况下,您必须将它提供给构造函数。

     

以下格式有Track实现:

     
      
  • H264
  •   
  • AAC
  •   
  • AC3
  •   
  • EC3
  •   
     

另外还有两个没有直接包裹原始字幕的字幕轨道   格式,但它们在概念上是相似的。

     

典型问题

     

音频和视频不同步。每当有问题时   可能的时间确保开始

     

音频在视频

之前启动      

在AAC中,每个样本都有样本率/ 1024个样本/秒   持续时间为1000 * 1024 / samplerate毫秒。

     
      
  • 48KHz =&gt; 〜21.3ms
  •   
  • 44.1KHz =&gt; 〜23.2ms
  •   
     

通过从开头省略样本,您可以轻松缩短音频   跟踪。删除任意多个。您将无法匹配音频   和视频完全相同,但人类的感知更明智   早期音频比晚期音频。

     记住:如果有人距离音讯只有10米之遥   和视频> 30ms。大脑习惯了!

     

AACTrackImpl aacTrackOriginal = new AACTrackImpl(new   FileDataSourceImpl(&#34; audio.aac&#34)); //删除第一个样本和   缩短AAC轨道约22ms CroppedTrack aacTrackShort = new   CroppedTrack(aacTrackOriginal,1,aacTrack.getSamples()。size());

     

附加具有相同编码设置的录制文件

     

重要的是要强调你不能附加任何两个曲目   用:

     
      
  • 不同的分辨率
  •   
  • 不同的帧率
  •   
     

你做什么?

     

从电影中创建JPEG。不 - 这不是解码器。 MP4解析器   不知道该怎么做。从JPEG创建电影