在Pure Java中确定MP4旋转(没有本机库)

时间:2016-06-15 10:11:42

标签: java android video metadata

我编写了一个Android应用程序(其中包括)记录视频,然后将视频上传到AWS服务器。 在服务器上,我需要能够确定视频的旋转。我的研究表明,MP4Parser应该可以帮助我,但运行:

    FileDataSourceImpl fileDataSource = new FileDataSourceImpl("path/to/file");
    IsoFile isoFile = new IsoFile(fileDataSource);
    MovieBox moov = isoFile.getMovieBox();
    for (Box b : moov.getBoxes()) {
        System.out.println(b);
    }
我的文件上的

给出了以下输出:

MovieHeaderBox[creationTime=Wed Jun 15 12:08:38 IDT 2016;modificationTime=Wed Jun 15 12:08:38 IDT 2016;timescale=1000;duration=2057;rate=1.0;volume=1.0;matrix=Rotate 0°;nextTrackId=2]
UserDataBox[]
TrackBox[]

如果在我的应用程序中,我在非常相同的文件上运行以下Android代码

    MediaMetadataRetriever m = new MediaMetadataRetriever();
    m.setDataSource("path/to/file");
    String rotation = m.extractMetadata(MediaMetadataRetriever.METADATA_KEY_VIDEO_ROTATION);
    System.out.println("Rotation is " + rotation);

我明白了:

06-15 12:07:36.741 27424-27424/... I/System.out: Rotation is 90

为什么会出现差异?是否有任何纯Java(无本机库)工具可用于在服务器端获得相同的结果,而没有本机Android代码的好处?

谢谢, 鲁文

0 个答案:

没有答案