应用过滤器复合体失败,与音频相关

时间:2014-09-17 19:08:43

标签: android ffmpeg audio-streaming mp4 video-encoding

我终于设法构建了ffmpeg,如下所示:https://enoent.fr/blog/2014/06/20/compile-ffmpeg-for-android/最后,我有一个接受命令参数的ffmpeg库。

我正在尝试在视频上应用水印图像,所以我正在使用这个ffmpeg命令:

ffmpeg -i input.avi -i logo.png -filter_complex 'overlay=10:main_h-overlay_h-10' output.avi

我首先使用ffmpeg.exe在Windows上尝试过,结果与预期一致。

我在android上使用已编译的android尝试过,输出如下:

09-17 22:03:34.455: I/Videokit(18419): Loading native library compiled at 22:33:10 Sep 15 2014
09-17 22:03:34.455: I/Videokit(18419): Option: ffmpeg
09-17 22:03:34.455: I/Videokit(18419): Option: -loglevel
09-17 22:03:34.455: I/Videokit(18419): Option: debug
09-17 22:03:34.455: I/Videokit(18419): Option: -i
09-17 22:03:34.455: I/Videokit(18419): Option: /storage/emulated/0/vid.mp4
09-17 22:03:34.455: I/Videokit(18419): Option: -i
09-17 22:03:34.455: I/Videokit(18419): Option: /storage/emulated/0/logo.png
09-17 22:03:34.455: I/Videokit(18419): Option: -qscale:v
09-17 22:03:34.455: I/Videokit(18419): Option: 1
09-17 22:03:34.455: I/Videokit(18419): Option: -filter_complex
09-17 22:03:34.455: I/Videokit(18419): Option: overlay=10:main_h-overlay_h-10
09-17 22:03:34.455: I/Videokit(18419): Option: /storage/emulated/0/outVid.mp4
09-17 22:03:34.455: I/Videokit(18419): Running main
09-17 22:03:34.463: D/Videokit(18419): Splitting the commandline.
09-17 22:03:34.463: D/Videokit(18419): Reading option '-loglevel' ...
09-17 22:03:34.463: D/Videokit(18419):  matched as option 'loglevel' (set logging level) with argument 'debug'.
09-17 22:03:34.463: D/Videokit(18419): Reading option '-i' ...
09-17 22:03:34.463: D/Videokit(18419):  matched as input file with argument '/storage/emulated/0/vid.mp4'.
09-17 22:03:34.463: D/Videokit(18419): Reading option '-i' ...
09-17 22:03:34.463: D/Videokit(18419):  matched as input file with argument '/storage/emulated/0/logo.png'.
09-17 22:03:34.463: D/Videokit(18419): Reading option '-qscale:v' ...
09-17 22:03:34.463: D/Videokit(18419):  matched as option 'qscale' (use fixed quality scale (VBR)) with argument '1'.
09-17 22:03:34.463: D/Videokit(18419): Reading option '-filter_complex' ...
09-17 22:03:34.463: D/Videokit(18419):  matched as option 'filter_complex' (create a complex filtergraph) with argument 'overlay=10:main_h-overlay_h-10'.
09-17 22:03:34.463: D/Videokit(18419): Reading option '/storage/emulated/0/outVid.mp4' ...
09-17 22:03:34.463: D/Videokit(18419):  matched as output file.
09-17 22:03:34.463: D/Videokit(18419): Finished splitting the commandline.
09-17 22:03:34.463: D/Videokit(18419): Parsing a group of options: global .
09-17 22:03:34.463: D/Videokit(18419): Applying option loglevel (set logging level) with argument debug.
09-17 22:03:34.463: D/Videokit(18419): Applying option filter_complex (create a complex filtergraph) with argument overlay=10:main_h-overlay_h-10.
09-17 22:03:34.463: D/Videokit(18419): Successfully parsed a group of options.
09-17 22:03:34.463: D/Videokit(18419): Parsing a group of options: input file /storage/emulated/0/vid.mp4.
09-17 22:03:34.463: D/Videokit(18419): Successfully parsed a group of options.
09-17 22:03:34.463: D/Videokit(18419): Opening an input file: /storage/emulated/0/vid.mp4.
09-17 22:03:34.612: D/Videokit(18419): Successfully opened the file.
09-17 22:03:34.612: D/Videokit(18419): Parsing a group of options: input file /storage/emulated/0/logo.png.
09-17 22:03:34.612: D/Videokit(18419): Successfully parsed a group of options.
09-17 22:03:34.612: D/Videokit(18419): Opening an input file: /storage/emulated/0/logo.png.
09-17 22:03:34.620: D/Videokit(18419): Successfully opened the file.
09-17 22:03:34.620: D/Videokit(18419): Parsing a group of options: output file /storage/emulated/0/outVid.mp4.
09-17 22:03:34.620: D/Videokit(18419): Applying option qscale:v (use fixed quality scale (VBR)) with argument 1.
09-17 22:03:34.620: D/Videokit(18419): Successfully parsed a group of options.
09-17 22:03:34.620: D/Videokit(18419): Opening an output file: /storage/emulated/0/outVid.mp4.
09-17 22:03:34.627: D/Videokit(18419): Successfully opened the file.
09-17 22:03:34.643: I/Videokit(18419): Conversion failed!
09-17 22:03:34.643: I/Videokit(18419): Stream mapping:
09-17 22:03:34.643: E/Videokit(18419): Error while opening encoder for output stream #0:1 - maybe incorrect parameters such as bit_rate, rate, width or height

问题是打开输出流#0:1的编码器时出错 - 可能是不正确的参数,如bit_rate,rate,width或height ,这与文件的音频有某种关系。我删除了音频,但没有错误。

ffmpeg -i vid.mp4会返回此信息:

Command line:
ffmpeg -i vid.mp4 -report
ffmpeg version N-66278-g91459bd Copyright (c) 2000-2014 the FFmpeg developers
  built on Sep 14 2014 22:05:07 with gcc 4.8.3 (GCC)
  configuration: --enable-gpl --enable-version3 --disable-w32threads --enable-avisynth --enable-bzlib --enable-fontconfig --enable-frei0r --enable-gnutls --enable-iconv --enable-libass --enable-libbluray --enable-libbs2b --enable-libcaca --enable-libfreetype --enable-libgme --enable-libgsm --enable-libilbc --enable-libmodplug --enable-libmp3lame --enable-libopencore-amrnb --enable-libopencore-amrwb --enable-libopenjpeg --enable-libopus --enable-librtmp --enable-libschroedinger --enable-libsoxr --enable-libspeex --enable-libtheora --enable-libtwolame --enable-libvidstab --enable-libvo-aacenc --enable-libvo-amrwbenc --enable-libvorbis --enable-libvpx --enable-libwavpack --enable-libwebp --enable-libx264 --enable-libx265 --enable-libxavs --enable-libxvid --enable-decklink --enable-zlib
  libavutil      54.  7.100 / 54.  7.100
  libavcodec     56.  1.100 / 56.  1.100
  libavformat    56.  4.101 / 56.  4.101
  libavdevice    56.  0.100 / 56.  0.100
  libavfilter     5.  1.100 /  5.  1.100
  libswscale      3.  0.100 /  3.  0.100
  libswresample   1.  1.100 /  1.  1.100
  libpostproc    53.  0.100 / 53.  0.100
Splitting the commandline.
Reading option '-i' ... matched as input file with argument 'vid.mp4'.
Reading option '-report' ... matched as option 'report' (generate a report) with argument '1'.
Finished splitting the commandline.
Parsing a group of options: global .
Applying option report (generate a report) with argument 1.
Successfully parsed a group of options.
Parsing a group of options: input file vid.mp4.
Successfully parsed a group of options.
Opening an input file: vid.mp4.
[mov,mp4,m4a,3gp,3g2,mj2 @ 040e38c0] Format mov,mp4,m4a,3gp,3g2,mj2 probed with size=2048 and score=100
[mov,mp4,m4a,3gp,3g2,mj2 @ 040e38c0] ISO: File Type Major Brand: isom
[mov,mp4,m4a,3gp,3g2,mj2 @ 040e38c0] Before avformat_find_stream_info() pos: 19279 bytes read:32768 seeks:0
[mov,mp4,m4a,3gp,3g2,mj2 @ 040e38c0] All info found
[mov,mp4,m4a,3gp,3g2,mj2 @ 040e38c0] After avformat_find_stream_info() pos: 41952 bytes read:65536 seeks:0 frames:2
Input #0, mov,mp4,m4a,3gp,3g2,mj2, from 'vid.mp4':
  Metadata:
    major_brand     : isom
    minor_version   : 512
    compatible_brands: isomiso2avc1mp41
    encoder         : Lavf55.19.104
  Duration: 00:00:14.58, start: 0.023222, bitrate: 1250 kb/s
    Stream #0:0(und), 1, 1/11988: Video: h264 (Constrained Baseline) (avc1 / 0x31637661), yuv420p, 640x640 [SAR 1:1 DAR 1:1], 1099 kb/s, 29.97 fps, 29.97 tbr, 11988 tbn, 59.94 tbc (default)
    Metadata:
      handler_name    : VideoHandler
    Stream #0:1(und), 1, 1/44100: Audio: aac (mp4a / 0x6134706D), 44100 Hz, mono, fltp, 97 kb/s (default)
    Metadata:
      handler_name    : SoundHandler
    Stream #0:2(eng), 0, 1/90000: Data: none (rtp  / 0x20707472), 39 kb/s
    Metadata:
      handler_name    : HintHandler
    Stream #0:3(eng), 0, 1/44100: Data: none (rtp  / 0x20707472), 8 kb/s
    Metadata:
      handler_name    : HintHandler
Successfully opened the file.
At least one output file must be specified
[AVIOContext @ 040e3f40] Statistics: 65536 bytes read, 0 seeks

1 个答案:

答案 0 :(得分:1)

ffmpeg有一个原生AAC编码器(-c:a aac),但它被认为是实验性的,因此需要一个额外的选项:-strict experimental(或-strict -2,同样的事情不同名称)。

这不是ffmpeg支持的最佳编码器,但也不是最差的编码器。如果有疑问,只要提供足够的比特率,直到它听起来足够好。有关详细信息,请参阅FFmpeg AAC Audio Encoding Guide