FFmpegAndroid 库在压缩后旋转视频
FFmpegAndroid library rotates video after Compress
execFFmpegBinary(new String[]{"-y", "-i", path, "-s", "160x120", "-r", "25", "-vcodec", "mpeg4", "-b:v", "150k", "-b:a", "48000", "-ac", "2", "-ar", "22050", filePath});
视频压缩后自动旋转..
有什么解决办法吗?
这里是库Link
这可能是 FFMPEG 中的自动旋转问题,您必须禁用自动旋转:
ffmpeg -noautorotate -i input.mp4 output.mp4
如果此解决方案不能解决您的问题,您可以使用 Android API 获取输入视频旋转,如下所示:
MediaMetadataRetriever m = new MediaMetadataRetriever();
m.setDataSource(inputVideoFilePath);
String rotation;
if (Build.VERSION.SDK_INT >= 17) {
rotation = m.extractMetadata(MediaMetadataRetriever.METADATA_KEY_VIDEO_ROTATION);
}
找到输入文件的旋转后,您必须相应地旋转输出文件,如下所示:
ffmpeg -noautorotate -i input.mp4 -filter:v "rotation*PI/180" output.mp4
execFFmpegBinary(new String[]{"-y", "-i", path, "-s", "160x120", "-r", "25", "-vcodec", "mpeg4", "-b:v", "150k", "-b:a", "48000", "-ac", "2", "-ar", "22050", filePath});
视频压缩后自动旋转..
有什么解决办法吗?
这里是库Link
这可能是 FFMPEG 中的自动旋转问题,您必须禁用自动旋转:
ffmpeg -noautorotate -i input.mp4 output.mp4
如果此解决方案不能解决您的问题,您可以使用 Android API 获取输入视频旋转,如下所示:
MediaMetadataRetriever m = new MediaMetadataRetriever();
m.setDataSource(inputVideoFilePath);
String rotation;
if (Build.VERSION.SDK_INT >= 17) {
rotation = m.extractMetadata(MediaMetadataRetriever.METADATA_KEY_VIDEO_ROTATION);
}
找到输入文件的旋转后,您必须相应地旋转输出文件,如下所示:
ffmpeg -noautorotate -i input.mp4 -filter:v "rotation*PI/180" output.mp4