J'utilise Android ffmpeg Library, La bibliothèque fonctionne correctement, le seul problème que j'ai est que la vidéo est tournée. La vidéo originale est tournée de 90 degrés, j'ai essayé beaucoup d'options en les ajoutant à la fonction de bibliothèque ci-dessous, le code commenté est un échantillon de ce que j'ai essayé, j'ai essayé beaucoup d'autres options mais aucune ne fonctionne.Rotation vidéo à l'aide de la bibliothèque ffmpeg Android
N'importe qui d'entre vous l'a eu au travail?
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);
}
Voici comment je l'utilise BTW,
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()
Informations sur la compilation,
/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