我编写了一个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代码的好处?
谢谢, 鲁文