Android录制的视频在使用ffmpeg后旋转

Android录制的视频在使用ffmpeg后旋转,android,ffmpeg,mediarecorder,Android,Ffmpeg,Mediarecorder,我正在开发一个android应用程序,用户可以在其中录制视频,修剪视频,然后上传到我的服务器。我使用MediaRecorder类来处理录制,并使用ffmpeg来修剪录制的视频。我使用ffmpeg的问题是,视频在被修剪后总是旋转90度或180度。我知道我可以在ffmpeg命令中添加一个视频过滤器(transpose=1)来旋转视频。但这需要对视频进行重新编码。在我的情况下,我不想重新编码视频,因为它需要太长时间。相反,我在ffmpeg命令中使用“-vcodec:copy”来使用相同的视频编解码器

我正在开发一个android应用程序,用户可以在其中录制视频,修剪视频,然后上传到我的服务器。我使用MediaRecorder类来处理录制,并使用ffmpeg来修剪录制的视频。我使用ffmpeg的问题是,视频在被修剪后总是旋转90度或180度。我知道我可以在ffmpeg命令中添加一个视频过滤器(transpose=1)来旋转视频。但这需要对视频进行重新编码。在我的情况下,我不想重新编码视频,因为它需要太长时间。相反,我在ffmpeg命令中使用“-vcodec:copy”来使用相同的视频编解码器

因为我正在为媒体录制器设置方向提示,所以媒体录制器总是向视频元数据添加“rotate=90”或“rotate=180”。我想这就是为什么视频总是被ffmpeg旋转的原因。 所以我想知道是否有一种方法可以在不重新编码的情况下旋转视频。或者,在使用ffmpeg对录制的视频进行剪裁之前,是否有办法修改其元数据(旋转)

请帮忙!这个问题让我抓狂

提前谢谢

以下是ffmpeg命令:

/data/data/com.xxx.xxx/app_bin/ffmpeg -y -ss 00:00:00 -t 4.000000 -i    file:/storage/sdcard0/Movies/xxx/vid.mp4 -vcodec copy -acodec copy -metadata:s:v:0 rotate=0 -  strict -2 file:/storage/sdcard0/Movies/xxx/vid_new.mp4
以下是控制台输出:

I/ShellCallback : shellOut()(9781): ffmpeg version 0.11.1 Copyright (c) 2000-2012 the FFmpeg developers
I/ShellCallback : shellOut()(9781):   built on Nov 15 2013 00:50:10 with gcc 4.6 20120106 (prerelease)
I/ShellCallback : shellOut()(9781):   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
I/ShellCallback : shellOut()(9781):   libavutil      51. 54.100 / 51. 54.100
I/ShellCallback : shellOut()(9781):   libavcodec     54. 23.100 / 54. 23.100
I/ShellCallback : shellOut()(9781):   libavformat    54.  6.100 / 54.  6.100
I/ShellCallback : shellOut()(9781):   libavdevice    54.  0.100 / 54.  0.100
I/ShellCallback : shellOut()(9781):   libavfilter     2. 77.100 /  2. 77.100
I/ShellCallback : shellOut()(9781):   libswscale      2.  1.100 /  2.  1.100
I/ShellCallback : shellOut()(9781):   libswresample   0. 15.100 /  0. 15.100
I/ShellCallback : shellOut()(9781):   libpostproc    52.  0.100 / 52.  0.100
I/ShellCallback : shellOut()(9781): Input #0, mov,mp4,m4a,3gp,3g2,mj2, from 'file:/storage/sdcard0/Movies/xxx/vid.mp4':
I/ShellCallback : shellOut()(9781):   Metadata:
I/ShellCallback : shellOut()(9781):     major_brand     : isom
I/ShellCallback : shellOut()(9781):     minor_version   : 0
I/ShellCallback : shellOut()(9781):     compatible_brands: isom3gp4
I/ShellCallback : shellOut()(9781):     creation_time   : 2014-09-17 17:25:50
I/ShellCallback : shellOut()(9781):   Duration: 00:00:04.69, start: 0.000000, bitrate: 2969 kb/s
I/ShellCallback : shellOut()(9781):     Stream #0:0(eng): Video: h264 (avc1 / 0x31637661), yuv420p, 720x480, 2989 kb/s, 29.89 fps, 30 tbr, 90k tbn, 180k tbc
I/ShellCallback : shellOut()(9781):     Metadata:
I/ShellCallback : shellOut()(9781):       rotate          : 90
I/ShellCallback : shellOut()(9781):       creation_time   : 2014-09-17 17:25:50
I/ShellCallback : shellOut()(9781):       handler_name    : VideoHandle
I/ShellCallback : shellOut()(9781):     Stream #0:1(eng): Audio: aac (mp4a / 0x6134706D), 44100 Hz, mono, s16, 128 kb/s
I/ShellCallback : shellOut()(9781):     Metadata:
I/ShellCallback : shellOut()(9781):       creation_time   : 2014-09-17 17:25:50
I/ShellCallback : shellOut()(9781):       handler_name    : SoundHandle
I/ShellCallback : shellOut()(9781): Output #0, mp4, to 'file:/storage/sdcard0/Movies/xxx/vid_new.mp4':
I/ShellCallback : shellOut()(9781):   Metadata:
I/ShellCallback : shellOut()(9781):     major_brand     : isom
I/ShellCallback : shellOut()(9781):     minor_version   : 0
I/ShellCallback : shellOut()(9781):     compatible_brands: isom3gp4
I/ShellCallback : shellOut()(9781):     creation_time   : 2014-09-17 17:25:50
I/ShellCallback : shellOut()(9781):     encoder         : Lavf54.6.100
I/ShellCallback : shellOut()(9781):     Stream #0:0(eng): Video: h264 (![0][0][0] / 0x0021), yuv420p, 720x480, q=2-31, 2989 kb/s, 29.89 fps, 90k tbn, 90k tbc
I/ShellCallback : shellOut()(9781):     Metadata:
I/ShellCallback : shellOut()(9781):       handler_name    : VideoHandle
I/ShellCallback : shellOut()(9781):       creation_time   : 2014-09-17 17:25:50
I/ShellCallback : shellOut()(9781):       rotate          : 0
I/ShellCallback : shellOut()(9781):     Stream #0:1(eng): Audio: aac (@[0][0][0] / 0x0040), 44100 Hz, mono, 128 kb/s
I/ShellCallback : shellOut()(9781):     Metadata:
I/ShellCallback : shellOut()(9781):       creation_time   : 2014-09-17 17:25:50
I/ShellCallback : shellOut()(9781):       handler_name    : SoundHandle
I/ShellCallback : shellOut()(9781): Stream mapping:
I/ShellCallback : shellOut()(9781):   Stream #0:0 -> #0:0 (copy)
I/ShellCallback : shellOut()(9781):   Stream #0:1 -> #0:1 (copy)
I/ShellCallback : shellOut()(9781): Press [q] to stop, [?] for help
I/ShellCallback : shellOut()(9781): frame=  120 fps=0.0 q=-1.0 Lsize=    1530kB time=00:00:03.98 bitrate=3147.1kbits/s    
I/ShellCallback : shellOut()(9781): video:1462kB audio:62kB global headers:0kB muxing overhead 0.329934%
I/ShellCallback : shellOut()(9781): ret 0, stream_spec v:0

可能的副本我无法使用最新的ffmpeg,因为它总是给我一些错误:…app_bin/ffmpeg[1]:语法错误:“(意外。我使用的版本是0.11.1您必须提供实际的
ffmpeg
命令和完整的控制台输出,以便我们中的任何人尝试找出问题。