如何旋转mp4文件?

时间:2018-10-23 06:10:53

标签: java android ffmpeg rotation mp4

我有一个mp4文件(已录制),并且想要更改视频的旋转度(包括元数据)。有一种使用Hex Editor来执行此操作的方法,您可以在其中找到轨道头(tkhdr),并将旋转矩阵替换为所需的旋转。

我知道可以使用ffmpeg库完成此操作,但我不想使用该库,而是想在Android中使用JAVA进行此操作。让我知道之前是否有人这样做过。

谢谢 拉维

Reference link

1 个答案:

答案 0 :(得分:2)

该库可能会帮助您:https://github.com/MasayukiSuda/Mp4Composer-android

该库使用Android MediaCodec API生成Mp4电影,并且可以旋转Mp4。

StackOverflow参考:https://stackoverflow.com/a/19392712/8572503


它的API流畅易用:

new Mp4Composer(sourceFile, destinationFile) 
            .rotation(Rotation.ROTATION_90)
            .size(1280,720) //720P
            .fillMode(FillMode.PRESERVE_ASPECT_FIT)
            .listener(new Mp4Composer.Listener() {
                @Override
                public void onProgress(double progress) {
                    Log.d(TAG, "onProgress = " + progress);
                    //or show in notification
                }

                @Override
                public void onCompleted() {
                    Log.v(TAG, "onCompleted() : Destination → "+ destinationFile);
                }

                @Override
                public void onCanceled() {
                    Log.d(TAG, "onCanceled");
                }

                @Override
                public void onFailed(Exception exception) {
                    Log.wtf(TAG, "onFailed()", exception);
                }
            })
            .start();

您还可以看到此代码转换器是用纯Java语言编写的:https://github.com/ypresto/android-transcoder


[编辑:来自注释] :您可以创建修改后的新文件,获取先前的文件名并将其存储到String对象中,然后删除先前的文件并重命名新文件将文件存储到String对象中。

您可以从以下代码中提取代码:https://github.com/javadev/hexeditor以手动修改十六进制。