Java 验证视频编码是否为H.264
我需要验证视频文件是否为(Java):Java 验证视频编码是否为H.264,java,h.264,aac,xuggle,xuggler,Java,H.264,Aac,Xuggle,Xuggler,我需要验证视频文件是否为(Java): 视频是H.264编码的 音频是AAC编码的 我调查了JMF和Xuggle Xuggle使加载和解码文件并将其转换为另一种格式变得更容易,但我还无法确定如何确定我加载的文件的编码 因此,我想知道Xuggle是否能够简单地返回文件的视频和音频编码类型,或者我是否需要读取文件的位来确定这一点 如果我需要自己确定这一点,有人能给我指一些关于H.264格式的文档吗?因此我查看了Xugler的解码演示并找到了我的答案,因此,对于将来寻找类似解决方案的任何人,这里是
- 视频是H.264编码的
- 音频是AAC编码的
如果我需要自己确定这一点,有人能给我指一些关于H.264格式的文档吗?因此我查看了Xugler的解码演示并找到了我的答案,因此,对于将来寻找类似解决方案的任何人,这里是我编写的代码:
//创建一个Xuggler容器对象
IContainer容器=IContainer.make();
if(container.open(file.getPath(),IContainer.Type.READ,null)<0){
返回false;
}
//查询要打开的调用找到了多少流
布尔isH264=假;
布尔值isAAC=false;
int numStreams=container.getNumStreams();
for(int i=0;i
这是JCodec()的几行代码:
为什么这对你的申请很重要?这些编解码器限制是否意味着其他未指定的要求,或者?这只是为了确保我们不会让麻烦制造者将图像或文本文件作为视频文件上传。这只是预防措施
// create a Xuggler container object
IContainer container = IContainer.make();
if(container.open(file.getPath(),IContainer.Type.READ,null) < 0) {
return false;
}
// query how many streams the call to open found
boolean isH264 = false;
boolean isAAC = false;
int numStreams = container.getNumStreams();
for(int i = 0; i < numStreams; i++)
{
// find the stream object
IStream stream = container.getStream(i);
// get the pre-configured decoder that can decode this stream;
IStreamCoder coder = stream.getStreamCoder();
if (coder.getCodecID() == ID.CODEC_ID_H264) {
isH264 = true;
}
if (coder.getCodecID() == ID.CODEC_ID_AAC) {
isAAC = true;
}
}
if (container !=null)
{
container.close();
container = null;
}
return isH264 && isAAC;
MovieBox movie = MP4Util.parseMovie(new File("path to file"));
Assert.assertEquals(movie.getVideoTrack().getSampleEntries()[0].getFourcc(), "avc1");
for (TrakBox trakBox : movie.getAudioTracks()) {
Assert.assertEquals(trakBox.getSampleEntries()[0].getFourcc(), "mp4a");
}