我目前正在寻找一个查看视频元数据的库,看看视频是1080p,720p还是最不能获得基本元数据(分辨率,比特率等),这样我就可以进行计算来检查自己。
我希望图书馆体积小,跨平台,它可以支持许多主要格式。像https://github.com/drewnoakes/metadata-extractor这样的东西,当然还有视频。
我试着四处寻找,什么也没找到,这样的图书库存在吗?
答案 0 :(得分:2)
试试这些api:
答案 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创建电影