Java mp4parser旋转并保存视频
在我的Android项目中,我需要将视频旋转90度。谷歌搜索之后,我停在了可以与Android集成的mp4parser。视频存储在设备上,也将保存在设备上(不确定是否使用其他名称,但这并不重要)。 以下是我正在使用的代码(由isoviewer-1.0-RC-35生成),但如果需要,我可以将库更改为2.0版:Java mp4parser旋转并保存视频,java,video,rotation,mp4parser,Java,Video,Rotation,Mp4parser,在我的Android项目中,我需要将视频旋转90度。谷歌搜索之后,我停在了可以与Android集成的mp4parser。视频存储在设备上,也将保存在设备上(不确定是否使用其他名称,但这并不重要)。 以下是我正在使用的代码(由isoviewer-1.0-RC-35生成),但如果需要,我可以将库更改为2.0版: try { String inputVideoName = "path_to_a_video"; IsoFile out = new IsoFile(inputVide
try
{
String inputVideoName = "path_to_a_video";
IsoFile out = new IsoFile(inputVideoName);
out.getMovieBox().getMovieHeaderBox().setMatrix(Matrix.ROTATE_90);
File outputVideoName = new File("path_to_a_saved_processed_video");
if (!outputVideoName.exists())
outputVideoName.createNewFile();
FileOutputStream fos = new FileOutputStream(outputVideoName);
out.writeContainer(fos.getChannel());
fos.close();
out.close();
}
catch (IOException e) {
Log.e("test", "some exception", e);
}
该代码编译、运行和保存视频,但使用原始旋转,因此不会对其进行任何更改。怎么了?这有帮助吗?另外,您不认为应该使用比Isoviewer更大的等参线吗
package com.googlecode.mp4parser;
import com.googlecode.mp4parser.authoring.Movie;
import com.googlecode.mp4parser.authoring.builder.DefaultMp4Builder;
import com.googlecode.mp4parser.authoring.container.mp4.MovieCreator;
import com.googlecode.mp4parser.util.Matrix;
import java.io.FileOutputStream;
import java.io.IOException;
public class Rotate {
public static void main(String[] args) throws IOException {
String f1 = AppendExample.class.getProtectionDomain().getCodeSource().getLocation().getFile() + "/1365070268951.mp4";
Movie inMovie = MovieCreator.build(f1);
inMovie.setMatrix(Matrix.ROTATE_90);
new DefaultMp4Builder().build(inMovie).writeContainer(new FileOutputStream("output.mp4").getChannel());
}
}
代码看起来不错。我猜android播放器不支持旋转视频,只是忽略了电影标题中的矩阵。尝试使用VLC、mplayer或avplay播放输出文件(其中至少有一个应支持电影头转换矩阵)。最好使用这些播放器的最新版本。或者,您可以检查输出文件(可以使用十六进制编辑器手动检查,也可以使用mp4dump或类似工具检查),并检查输出文件转换矩阵是否符合您的预期。这会让您感到困惑。视频是在设备处于另一个方向时制作的。如果我使用vlc客户端查看视频(原始视频和旋转视频),它们会被旋转,但vlc是唯一显示旋转视频的播放器。问题是我使用ffmpeg库对该视频进行了修剪,之后我发现了与NDK集成的旋转问题。这是否意味着修剪操作不保存标题?我尝试使用ffmpeg对其进行旋转,但库中包含的版本不支持旋转。此外,我无法将库更新到项目中(这是我与NDK的第一次接触)。