验证视频编码为H.264(Verify video encoding is H.264)

2019-10-17 11:12发布

我需要验证的视频文件(在Java中):

  • 视频是H.264编码
  • 音频AAC编码

我看着JMF和Xuggle。

Xuggle可以更容易地加载和解码文件,并把它变成另一种格式,但我已经无法弄清楚如何确定我已经加载的然而,这个文件的编码。

所以,我想知道是否有Xuggle只是返回音频视频及编码文件类型的能力已经或做我需要阅读的文件的位来确定这个自己?

如果我需要这个决定我自己,可有人点我到一些机制的文档上的H.264格式

Answer 1:

所以,我看着Xuggler的解码演示,发现我的答案,所以在未来这里寻找类似的解决方案是任何人我写的代码:


    // 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;


Answer 2:

这是夫妇JCodec(行http://jcodec.org ):

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");
}


文章来源: Verify video encoding is H.264