无法为“ffmpeg”找到合适的输出格式

KDe*_*kar 15 video android ffmpeg

我正在为 android使用ffmpeg库。

我传递一个ffmpeg命令转换视频格式从.mp4.avi

ffmpeg -r 20 -i /storage/emulated/0/WisperMedia/WisperVideos/sample.mp4 -b:v 20M /storage/emulated/0/WisperMedia/WisperVideos/output.avi
Run Code Online (Sandbox Code Playgroud)

但我收到了类似的错误

    09-23 09:29:41.525: E/Home(31343): FAILED with output : ffmpeg version n2.4.2 Copyright (c) 2000-2014 the FFmpeg developers
09-23 09:29:41.525: E/Home(31343):   built on Oct  7 2014 15:08:46 with gcc 4.8 (GCC)
09-23 09:29:41.525: E/Home(31343):   configuration: --target-os=linux --cross-prefix=/home/sb/Source-Code/ffmpeg-android/toolchain-android/bin/arm-linux-androideabi- --arch=arm --cpu=cortex-a8 --enable-runtime-cpudetect --sysroot=/home/sb/Source-Code/ffmpeg-android/toolchain-android/sysroot --enable-pic --enable-libx264 --enable-libass --enable-libfreetype --enable-libfribidi --enable-fontconfig --enable-pthreads --disable-debug --disable-ffserver --enable-version3 --enable-hardcoded-tables --disable-ffplay --disable-ffprobe --enable-gpl --enable-yasm --disable-doc --disable-shared --enable-static --pkg-config=/home/sb/Source-Code/ffmpeg-android/ffmpeg-pkg-config --prefix=/home/sb/Source-Code/ffmpeg-android/build/armeabi-v7a-neon --extra-cflags='-I/home/sb/Source-Code/ffmpeg-android/toolchain-android/include -U_FORTIFY_SOURCE -D_FORTIFY_SOURCE=2 -fno-strict-overflow -fstack-protector-all -mfpu=neon' --extra-ldflags='-L/home/sb/Source-Code/ffmpeg-android/toolchain-android/lib -Wl,-z,relro -Wl,-z,now -pie' --extra-libs='-lpng -lexpat -lm' --extra-cxxflags=
09-23 09:29:41.525: E/Home(31343):   libavutil      54.  7.100 / 54.  7.100
09-23 09:29:41.525: E/Home(31343):   libavcodec     56.  1.100 / 56.  1.100
09-23 09:29:41.525: E/Home(31343):   libavformat    56.  4.101 / 56.  4.101
09-23 09:29:41.525: E/Home(31343):   libavdevice    56.  0.100 / 56.  0.100
09-23 09:29:41.525: E/Home(31343):   libavfilter     5.  1.100 /  5.  1.100
09-23 09:29:41.525: E/Home(31343):   libswscale      3.  0.100 /  3.  0.100
09-23 09:29:41.525: E/Home(31343):   libswresample   1.  1.100 /  1.  1.100
09-23 09:29:41.525: E/Home(31343):   libpostproc    53.  0.100 / 53.  0.100
09-23 09:29:41.525: E/Home(31343): Input #0, mov,mp4,m4a,3gp,3g2,mj2, from '/storage/emulated/0/WisperMedia/WisperVideos/sample.mp4':
09-23 09:29:41.525: E/Home(31343):   Metadata:
09-23 09:29:41.525: E/Home(31343):     major_brand     : isom
09-23 09:29:41.525: E/Home(31343):     minor_version   : 0
09-23 09:29:41.525: E/Home(31343):     compatible_brands: isom3gp4
09-23 09:29:41.525: E/Home(31343):     creation_time   : 2015-09-23 03:50:16
09-23 09:29:41.525: E/Home(31343):   Duration: 00:00:01.56, start: 0.000000, bitrate: 14737 kb/s
09-23 09:29:41.525: E/Home(31343):     Stream #0:0(eng): Video: h264 (Constrained Baseline) (avc1 / 0x31637661), yuv420p, 1280x720, 11819 kb/s, SAR 65536:65536 DAR 16:9, 29.79 fps, 29.92 tbr, 90k tbn, 180k tbc (default)
09-23 09:29:41.525: E/Home(31343):     Metadata:
09-23 09:29:41.525: E/Home(31343):       rotate          : 90
09-23 09:29:41.525: E/Home(31343):       creation_time   : 2015-09-23 03:50:16
09-23 09:29:41.525: E/Home(31343):       handler_name    : VideoHandle
09-23 09:29:41.525: E/Home(31343):     Side data:
09-23 09:29:41.525: E/Home(31343):       displaymatrix: rotation of -90.00 degrees
09-23 09:29:41.525: E/Home(31343):     Stream #0:1(eng): Audio: aac (mp4a / 0x6134706D), 48000 Hz, mono, fltp, 128 kb/s (default)
09-23 09:29:41.525: E/Home(31343):     Metadata:
09-23 09:29:41.525: E/Home(31343):       creation_time   : 2015-09-23 03:50:16
09-23 09:29:41.525: E/Home(31343):       handler_name    : SoundHandle
09-23 09:29:41.525: E/Home(31343): [NULL @ 0x41f7f420] Unable to find a suitable output format for 'ffmpeg'
09-23 09:29:41.525: E/Home(31343): ffmpeg: Invalid argument
Run Code Online (Sandbox Code Playgroud)

aer*_*tal 16

这些类型的错误通常是由ffmpeg命令中意外的前导或尾随参数引起的。如果您使用充当包装器的第三方库,则ffmpeg必须检查其文档和输出,因为它可能会自动添加参数(例如ffmpeg二进制文件的路径)。

在这种特殊情况下ffmpeg被视为未知输出。一些可能引发此错误的不正确命令包括:

  • ffmpeg -i [input] -o [output] ffmpeg ...
  • ffmpeg ffmpeg ...


mar*_*ing 9

同样的错误可能表明 ffmpeg 只需要使用 -f 标志告诉输出什么格式,因为它无法从输出文件扩展名中推断出它。

ffmpeg -i audio.xxx -f flac audio.flac
Run Code Online (Sandbox Code Playgroud)