1

我正在使用以下命令在视频中添加复古效果。

String[] ffmpegCommand = {"/data/data/com.mobvcasting.mjpegffmpeg/ffmpeg", "-r", ""+p.getPreviewFrameRate(), "-b", "1000000", "-vcodec", "mjpeg", "-i", Environment.getExternalStorageDirectory().getPath() + "/com.mobvcasting.mjpegffmpeg/frame_%05d.jpg","-vcodec", "mjpeg", "-acodec","libfaac","-vf","curves=vintage", "-qscale", "3", "-async", "1", "-y",Environment.getExternalStorageDirectory().getPath() + "/com.mobvcasting.mjpegffmpeg/video.mp4"};

ffmpegProcess = new ProcessBuilder(ffmpegCommand).redirectErrorStream(true).start();            

BufferedReader reader = new BufferedReader(new InputStreamReader(ffmpegProcess.getInputStream()));

但我收到以下错误:

09-02 13:42:57.343: V/MJPEG_FFMPEG(2346): Finished Writing Frame
09-02 13:42:57.351: V/MJPEG_FFMPEG(2346): Recording Stopped
09-02 13:42:57.414: V/MJPEG_FFMPEG(2346): ***Starting FFMPEG***
09-02 13:42:57.460: V/MJPEG_FFMPEG(2346): ***FFmpeg version UNKNOWN, Copyright (c) 2000-2010 the FFmpeg developers***
09-02 13:42:57.460: V/MJPEG_FFMPEG(2346): ***  built on Jul 28 2011 16:47:07 with gcc 4.4.3***
09-02 13:42:57.460: V/MJPEG_FFMPEG(2346): ***  configuration: --target-os=linux --cross-prefix=arm-linux-androideabi- --arch=arm --sysroot=/Developer/android-ndk-r5b//platforms/android-3/arch-arm --soname-prefix=/data/data/com.mobvcasting.mjpegffmpeg/ --enable-shared --disable-symver --enable-small --optimization-flags=-O2 --enable-encoder=mpeg2video --enable-encoder=nellymoser --enable-protocol=file --prefix=../build/ffmpeg/armeabi --extra-cflags= --extra-ldflags=***
09-02 13:42:57.460: V/MJPEG_FFMPEG(2346): ***  libavutil     50.34. 0 / 50.34. 0***
09-02 13:42:57.460: V/MJPEG_FFMPEG(2346): ***  libavcore      0.16. 0 /  0.16. 0***
09-02 13:42:57.460: V/MJPEG_FFMPEG(2346): ***  libavcodec    52.99. 1 / 52.99. 1***
09-02 13:42:57.460: V/MJPEG_FFMPEG(2346): ***  libavformat   52.88. 0 / 52.88. 0***
09-02 13:42:57.460: V/MJPEG_FFMPEG(2346): ***  libavdevice   52. 2. 2 / 52. 2. 2***
09-02 13:42:57.460: V/MJPEG_FFMPEG(2346): ***  libavfilter    1.69. 0 /  1.69. 0***
09-02 13:42:57.460: V/MJPEG_FFMPEG(2346): ***  libswscale     0.12. 0 /  0.12. 0***

09-02 13:42:57.648: V/MJPEG_FFMPEG(2346): ***Input #0, image2, from '/mnt/sdcard/com.mobvcasting.mjpegffmpeg/frame_%05d.jpg':***
09-02 13:42:57.656: V/MJPEG_FFMPEG(2346): ***  Duration: 00:00:01.83, start: 0.000000, bitrate: N/A***
09-02 13:42:57.656: V/MJPEG_FFMPEG(2346): ***    Stream #0.0: Video: mjpeg, yuvj420p, 320x240 [PAR 1:1 DAR 4:3], 30 fps, 30 tbr, 30 tbn, 30 tbc***
09-02 13:42:57.695: V/MJPEG_FFMPEG(2346): ***[buffer @ 0x5d110] w:320 h:240 pixfmt:yuvj420p***
09-02 13:42:57.695: V/MJPEG_FFMPEG(2346): ***No such filter: 'curves'***
09-02 13:42:57.695: V/MJPEG_FFMPEG(2346): ***Error opening filters!***
09-02 13:42:57.695: V/MJPEG_FFMPEG(2346): ***Ending FFMPEG***

任何帮助将不胜感激。

4

1 回答 1

0

您的 ffmpeg 版本太旧,无法支持curves带有预设的视频过滤器。预设是在 2013 年 3 月 25 日(lavfi/curves:添加预设支持)将 libavfilter 提升到 3.48.103 版添加的。

您将需要更新您的 ffmpeg。

于 2013-09-02T16:46:26.730 回答