Android Java Process上的FFMPEG命令无法完全执行

时间:2014-11-08 04:43:50

标签: java android video ffmpeg video-processing

我遇到的问题很奇怪。我的Android上安装了一个FFMPEG可执行二进制库,我正在尝试执行此命令

ffmpeg -loop 1 -i /storage/emulated/0/image.jpg -i /storage/emulated/0/input.mov -filter_complex '[0:v][1:v] overlay' -shortest /storage/emulated/0/output.mp4

我的JAVA代码看起来像

try {
            Runtime.getRuntime().exec("chmod 700 " + mFfmpegPath);
            cmd.add(mFfmpegPath);
            cmd.add("-loop");
            cmd.add("1");
            cmd.add("-i");
            cmd.add("/storage/emulated/0/image.jpg");
            cmd.add("-i");
            cmd.add("/storage/emulated/0/pizza.mov");
            cmd.add("-filter_complex");
            cmd.add("'[0:v][1:v] overlay'");
            cmd.add("-shortest");
            cmd.add("-vcodec");
            cmd.add("-libx264");
            cmd.add("-strict");
            cmd.add("experimental");
            cmd.add("/storage/emulated/0/output22.mp4");

            final ProcessBuilder pb = new ProcessBuilder(cmd);
            pb.redirectErrorStream();
            final Process p = pb.start();
            Log.i("FFMPEG","stdError= " + getSTD(p.getErrorStream()));
            p.waitFor();
            return run;
        } catch (IOException e1) {
            // TODO Auto-generated catch block
            e1.printStackTrace();
        } catch (InterruptedException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        } 

由于某种原因,我的执行没有完全完成,它停止了。它甚至没有在我的Android存储中创建输出文件。以下是流程

中的日志文件
11-07 20:34:21.636: I/FFMPEG(6259): stdError= WARNING: linker: /data/data/za.jamie.androidffmpegcmdline/app_bin/ffmpeg has text relocations. This is wasting memory and is a security risk. Please fix.
11-07 20:34:21.636: I/FFMPEG(6259): ffmpeg version n2.4.2 Copyright (c) 2000-2014 the FFmpeg developers
11-07 20:34:21.636: I/FFMPEG(6259):   built on Nov  8 2014 00:21:33 with gcc 4.8 (GCC)
11-07 20:34:21.636: I/FFMPEG(6259):   configuration: --target-os=linux --cross-prefix=/home/ubuntu/ffmpeg-android/toolchain-android/bin/arm-linux-androideabi- --arch=arm --cpu=cortex-a8 --enable-runtime-cpudetect --sysroot=/home/ubuntu/ffmpeg-android/toolchain-android/sysroot --enable-pic --enable-libx264 --enable-libass --enable-avcodec --enable-avformat --enable-swresample --enable-swscale --enable-postproc --enable-avfilter --enable-avresample --disable-libfreetype --enable-libfribidi --disable-fontconfig --enable-pthreads --disable-debug --disable-ffserver --enable-version3 --enable-hardcoded-tables --enable-ffplay --enable-ffprobe --enable-gpl --enable-yasm --disable-doc --disable-shared --enable-static --pkg-config=/home/ubuntu/ffmpeg-android/ffmpeg-pkg-config --prefix=/home/ubuntu/ffmpeg-android/build/armeabi-v7a --extra-cflags='-I/home/ubuntu/ffmpeg-android/toolchain-android/include -U_FORTIFY_SOURCE -D_FORTIFY_SOURCE=2 -fno-strict-overflow -fstack-protector-all' --extra-ldflags='-L/home/ubuntu/ffmpeg-android/toolchain-android/lib -Wl,-z,relro -Wl,-z,now -pie' --extra-libs='-lpng -lexpat -lm' --extra-cxxflags=
11-07 20:34:21.636: I/FFMPEG(6259):   libavutil      54.  7.100 / 54.  7.100
11-07 20:34:21.636: I/FFMPEG(6259):   libavcodec     56.  1.100 / 56.  1.100
11-07 20:34:21.636: I/FFMPEG(6259):   libavformat    56.  4.101 / 56.  4.101
11-07 20:34:21.636: I/FFMPEG(6259):   libavdevice    56.  0.100 / 56.  0.100
11-07 20:34:21.636: I/FFMPEG(6259):   libavfilter     5.  1.100 /  5.  1.100
11-07 20:34:21.636: I/FFMPEG(6259):   libavresample   2.  1.  0 /  2.  1.  0
11-07 20:34:21.636: I/FFMPEG(6259):   libswscale      3.  0.100 /  3.  0.100
11-07 20:34:21.636: I/FFMPEG(6259):   libswresample   1.  1.100 /  1.  1.100
11-07 20:34:21.636: I/FFMPEG(6259):   libpostproc    53.  0.100 / 53.  0.100
11-07 20:34:21.636: I/FFMPEG(6259): Input #0, image2, from '/storage/emulated/0/image.jpg':
11-07 20:34:21.636: I/FFMPEG(6259):   Duration: 00:00:00.04, start: 0.000000, bitrate: 35211 kb/s
11-07 20:34:21.636: I/FFMPEG(6259):     Stream #0:0: Video: mjpeg, yuvj420p(pc, bt470bg), 640x640 [SAR 1:1 DAR 1:1], 25 fps, 25 tbr, 25 tbn, 25 tbc
11-07 20:34:21.636: I/FFMPEG(6259): Input #1, mov,mp4,m4a,3gp,3g2,mj2, from '/storage/emulated/0/input.mov':
11-07 20:34:21.636: I/FFMPEG(6259):   Metadata:
11-07 20:34:21.636: I/FFMPEG(6259):     major_brand     : qt  
11-07 20:34:21.636: I/FFMPEG(6259):     minor_version   : 537199360
11-07 20:34:21.636: I/FFMPEG(6259):     compatible_brands: qt  
11-07 20:34:21.636: I/FFMPEG(6259):     creation_time   : 2014-10-30 23:57:31
11-07 20:34:21.636: I/FFMPEG(6259):     xmp             : <?xpacket begin="" id="W5M0MpCehiHzreSzNTczkc9d"?>
11-07 20:34:21.636: I/FFMPEG(6259):                     : <x:xmpmeta xmlns:x="adobe:ns:meta/" x:xmptk="Adobe XMP Core 5.5-c024 79.155959, 2014/02/07-11:44:46        ">
11-07 20:34:21.636: I/FFMPEG(6259):                     :  <rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#">
11-07 20:34:21.636: I/FFMPEG(6259):                     :   <rdf:Description rdf:about=""
11-07 20:34:21.636: I/FFMPEG(6259):                     :     xmlns:xmp="http://ns.adobe.com/xap/1.0/"
11-07 20:34:21.636: I/FFMPEG(6259):                     :     xmlns:xmpDM="http://ns.adobe.com/xmp/1.0/DynamicMedia/"
11-07 20:34:21.636: I/FFMPEG(6259):                     :     xmlns:stDim="http://ns.adobe.com/xap/1.0/sType/Dimensions#"
11-07 20:34:21.636: I/FFMPEG(6259):                     :     xmlns:xmpMM="http://ns.adobe.com/xap/1.0/mm/"
11-07 20:34:21.636: I/FFMPEG(6259):                     :     xmlns:stEvt="http://ns.adobe.com/xap/1.0/sType/ResourceEvent#"
11-07 20:34:21.636: I/FFMPEG(6259):                     :     xmlns:creatorAtom="http://ns.adobe.com/creatorAtom/1.0/"
11-07 20:34:21.636: I/FFMPEG(6259):                     :     xmlns:dc="http://purl.org/dc/elements/1.1/"
11-07 20:34:21.636: I/FFMPEG(6259):                     :    xmp:CreateDate="2014-10-30T16:57:31-07:00"
11-07 20:34:21.636: I/FFMPEG(6259):                     :    xmp:ModifyDate="2014-10-30T15:57:57-07:00"
11-07 20:34:21.636: I/FFMPEG(6259):                     :    xmp:CreatorTool="Adobe After Effects CC 2014 (Windows)"
11-07 20:34:21.636: I/FFMPEG(6259):                     :    xmp:MetadataDate="2014-10-30T15:57:57-07:00"
11-07 20:34:21.636: I/FFMPEG(6259):                     :    xmpDM:startTimeScale="30"
11-07 20:34:21.636: I/FFMPEG(6259):                     :    xmpDM:startTimeSampleSize="1"
11-07 20:34:21.636: I/FFMPEG(6259):                     :    xmpDM:videoFrameRate="30.000000"
11-07 20:34:21.636: I/FFMPEG(6259):                     :    xmpDM:videoFieldOrder="Progressive"
11-07 20:34:21.636: I/FFMPEG(6259):                     :    xmpDM:videoPixelAspectRatio="1/1"
11-07 20:34:21.636: I/FFMPEG(6259):                     :    xmpDM:audioSampleRate="48000"
11-07 20:34:21.636: I/FFMPEG(6259):                     :    xmpDM:audioSampleType="16Int"
11-07 20:34:21.636: I/FFMPEG(6259):                     :    xmpDM:audioChannelType="Stereo"
11-07 20:34:21.636: I/FFMPEG(6259):                     :    xmpMM:InstanceID="xmp.iid:b791d2dc-6759-ee45-b5a2-692ecba2c4fd"
11-07 20:34:21.636: I/FFMPEG(6259):                     :    xmpMM:DocumentID="xmp.did:d3fde073-8716-144a-acbd-7676f27002a0"
11-07 20:34:21.636: I/FFMPEG(6259):                     :    xmpMM:OriginalDocumentID="xmp.
11-07 20:34:21.836: E/ViewRootImpl(6259): sendUserActionEvent() mView == null

请帮助:(

1 个答案:

答案 0 :(得分:0)

我解决了!我删除了

中的单引号
cmd.add("'[0:v][1:v] overlay'");

成为

cmd.add("[0:v][1:v] overlay");