gpt4 book ai didi

android - 使用 Android ffmpeg 库进行视频旋转

转载 作者:行者123 更新时间:2023-12-04 23:09:18 26 4
gpt4 key购买 nike

我正在使用 Android ffmpeg Library ,图书馆工作正常,我唯一遇到的问题是视频被旋转了。原始视频旋转了 90 度,我通过将它们添加到下面的库函数中尝试了许多选项,注释代码是我尝试过的示例,我尝试了许多其他选项,但它们都不起作用。

你们中的任何人都有它的工作吗?

    public void processVideo(Clip in, Clip out, boolean enableExperimental, ShellCallback sc) throws Exception {

ArrayList<String> cmd = new ArrayList<String>();

cmd.add(mFfmpegBin);
// cmd.add("-vf \"transpose=1\"");Not working
// cmd.add(" -vfilters \"rotate=90\"");Not working
cmd.add("-y");

if (in.format != null)
{
cmd.add(Argument.FORMAT);
cmd.add(in.format);
}

if (in.videoCodec != null)
{
cmd.add(Argument.VIDEOCODEC);
cmd.add(in.videoCodec);
}

if (in.audioCodec != null)
{
cmd.add(Argument.AUDIOCODEC);
cmd.add(in.audioCodec);
}

cmd.add("-i");
cmd.add(new File(in.path).getCanonicalPath());

if (out.videoBitrate > 0)
{
cmd.add(Argument.BITRATE_VIDEO);
cmd.add(out.videoBitrate + "k");
}

if (out.width > 0)
{
cmd.add(Argument.SIZE);
cmd.add(out.width + "x" + out.height);

}
if (out.videoFps != null)
{
cmd.add(Argument.FRAMERATE);
cmd.add(out.videoFps);
}

if (out.videoCodec != null)
{
cmd.add(Argument.VIDEOCODEC);
cmd.add(out.videoCodec);
}

if (out.videoBitStreamFilter != null)
{
cmd.add(Argument.VIDEOBITSTREAMFILTER);
cmd.add(out.videoBitStreamFilter);
}


if (out.videoFilter != null)
{
cmd.add("-vf");
cmd.add(out.videoFilter);
}

if (out.audioCodec != null)
{
cmd.add(Argument.AUDIOCODEC);
cmd.add(out.audioCodec);
}

if (out.audioBitStreamFilter != null)
{
cmd.add(Argument.AUDIOBITSTREAMFILTER);
cmd.add(out.audioBitStreamFilter);
}
if (out.audioChannels > 0)
{
cmd.add(Argument.CHANNELS_AUDIO);
cmd.add(out.audioChannels+"");
}

if (out.audioBitrate > 0)
{
cmd.add(Argument.BITRATE_AUDIO);
cmd.add(out.audioBitrate + "k");
}

if (out.format != null)
{
cmd.add("-f");
cmd.add(out.format);
}

if (enableExperimental)
{
cmd.add("-strict");
cmd.add("-2");//experimental
}
// cmd.add("-metadata:s:v rotate=\"0\"");Not working
// cmd.add("rotate=\"0\""); Not working

cmd.add(new File(out.path).getCanonicalPath());

execFFMPEG(cmd, sc);

}

顺便说一句,这就是我使用它的方式,
FfmpegController fc = new FfmpegController(this, fileTmp);

clip_out.videoFps = "30";
clip_out.width = 480;
clip_out.height = 320;
clip_out.videoCodec = "mpeg4";
clip_out.audioCodec = "copy";
clip_out.videoBitrate = 450;

fc.processVideo(clip_in, clip_out, false, new ShellUtils.ShellCallback()

关于编译的信息,
/data/data/com.example.testffmpeg/app_bin/ffmpeg -filters 
ffmpeg version 0.11.1 Copyright (c) 2000-2012 the FFmpeg developers
built on Nov 15 2013 00:50:10 with gcc 4.6 20120106 (prerelease)
configuration: --arch=arm --cpu=cortex-a8 --target-os=linux --enable-runtime-cpudetect --enable-small --prefix=/data/data/info.guardianproject.ffmpeg/app_opt --enable-pic --disable-shared --enable-static --cross-prefix=/home/n8fr8/dev/android/ndk//toolchains/arm-linux-androideabi-4.6/prebuilt/linux-x86_64/bin/arm-linux-androideabi- --sysroot=/home/n8fr8/dev/android/ndk//platforms/android-3/arch-arm --extra-cflags='-I../x264 -mfloat-abi=softfp -mfpu=neon' --extra-ldflags=-L../x264 --enable-version3 --enable-gpl --disable-doc --enable-yasm --enable-decoders --enable-encoders --enable-muxers --enable-demuxers --enable-parsers --enable-protocols --enable-filters --enable-avresample --enable-libfreetype --disable-indevs --enable-indev=lavfi --disable-outdevs --enable-hwaccels --enable-ffmpeg --disable-ffplay --disable-ffprobe --disable-ffserver --disable-network --enable-libx264 --enable-zlib --enable-muxer=md5

最佳答案

它一直都在那里,我只需要使用它,

if (out.videoFilter != null)
{
cmd.add("-vf");
cmd.add(out.videoFilter);
}

像这样使用它
clip_out.videoFilter = "transpose=1";

关于android - 使用 Android ffmpeg 库进行视频旋转,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25800263/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com