【问题标题】:FFmpegAndroid library rotates video after CompressFFmpegAndroid 库在压缩后旋转视频
【发布时间】:2020-06-30 07:43:24
【问题描述】:

execFFmpegBinary(new String[]{"-y", "-i", 路径, "-s", "160x120", "-r", "25", "-vcodec", "mpeg4", " -b:v”、“150k”、“-b:a”、“48000”、“-ac”、“2”、“-ar”、“22050”、filePath});

压缩后视频自动旋转..

有什么办法吗?

这里是库Link

【问题讨论】:

    标签: android ffmpeg android-ffmpeg


    【解决方案1】:

    这可能是 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
    

    【讨论】:

    • -noautorotate 有效.. 谢谢老兄,但现在视频的高度降低了,压缩后视频显示不正确.. 你有什么解决办法吗?这是我的命令 execFFmpegBinary(new String[]{"-noautorotate", "-i", path, "-s", "800x600", "-r", "25", "-vcodec", "mpeg4", “-b:v”、“150k”、“-b:a”、“48000”、“-ac”、“2”、“-ar”、“22050”、filePath});
    • @BhavinKevadiya 我认为您将输出宽度和高度设置为 800 宽度和 600 高度,现在您的输出大小不同了吗? ,顺便说一句,如果您接受答案,如果它解决了您当前的问题,我将不胜感激
    • 如果我想要默认的高度和宽度怎么办?
    • @BhavinKevadiya 如果删除“800x600”部分会怎样?您还可以使用 MediaMetadataRetriever 类中的 METADATA_KEY_VIDEO_HEIGHT 和 METADATA_KEY_VIDEO_WIDTH 键获取输入视频的宽度和高度
    • 谢谢兄弟。我会尝试
    猜你喜欢
    • 2017-01-21
    • 1970-01-01
    • 2023-04-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多