为FFMPEG构建我的JAVA参数数组

时间:2016-01-29 15:49:50

标签: java arrays linux amazon-ec2 ffmpeg

FFmpeg版本:N-63893-gc69defd版权所有(c)2000-2014 FFmpeg开发人员   建立于2014年7月16日05:38:01与gcc 4.6(Debian 4.6.3-1)

计算机:Amazon Linux t2.micro(免费套餐)

示例文件:sample_iTunes.mov
示例文件网址https://support.apple.com/en-us/HT201549

我正在尝试使用字符串数组复制以下FFmpeg命令,然后将此数组传递给Runtime.getRuntime()。exec()。

ffmpeg -i file:/var/local/ffmpegtest/media_input/sample_iTunes.mov -pix_fmt yuv420p -c:v libx264 -vtag mp42 -metadata major_brand="mp42" -b:v 8000k -minrate 8000k -maxrate 10000k -ac 2 -strict experimental -c:a aac -b:a 256k -metadata:s:a:0 handler="Stereo" /var/local/ffmpegtest/media_output/sample_iTunes.mp4 -y

注意:当我将完整命令作为单个字符串传递给Runtime.getRuntime()。exec()时,这是有效的。

    String _cmd = "ffmpeg -i %s -pix_fmt yuv420p -c:v libx264 -vtag mp42 -metadata major_brand=\"mp42\" "
            + "-b:v 8000k -minrate 8000k -maxrate 10000k -ac 2 -strict experimental -c:a aac -b:a 256k -metadata:s:a:0 handler=\"Stereo\" %s -y";
    String _ffmpegCommand = String.format(_cmd, _inputFile, _outPutFile);
    p = Runtime.getRuntime().exec(_ffmpegCommand);
    BufferedReader _reader = new BufferedReader(new InputStreamReader(p.getErrorStream()));

    String _line = null;

    while((_line = _reader.readLine()) != null) {
        lw.writeLine(_logPath + _logName, _line);
        System.out.println(_line);
    }

我刚开始只有一个基本的参数列表。当我添加添加每个附加参数时,我重新构建JAR文件并将其上传到我的EC2实例以测试任何错误。

以下字符串数组

try
        {
            String[] _params = {"ffmpeg",
                       "-i",
                       String.format("%s", _inputFile),
                       "-pix_fmt",
                       "yuv420p",
                       "-c:v",
                       "libx264",
                       String.format("%s", _outPutFile),
                       "-y"};

            p = Runtime.getRuntime().exec(_params);

            BufferedReader _reader = new BufferedReader(new InputStreamReader(p.getErrorStream()));

            String _line = null;

            while((_line = _reader.readLine()) != null) {
                lw.writeLine(_logPath + _logName, _line);
                System.out.println(_line);
            }
        }
        catch (Exception e) {
            BufferedReader _reader = new BufferedReader(new InputStreamReader(p.getErrorStream()));

            String _line = null;

            while((_line = _reader.readLine()) != null) {
                lw.writeLine(_logPath + _logName, _line);
                System.out.println(_line);
            }

        }

但是,当我继续使用其他参数构建数组时,我开始遇到问题(让我们添加-vtag mp42):

try
        {
            String[] _params = {"ffmpeg",
                       "-i",
                       String.format("%s", _inputFile),
                       "-pix_fmt",
                       "yuv420p",
                       "-c:v",
                       "libx264",
                       "-vtag", // <---- New
                       "mp42", // <---  New
                       String.format("%s", _outPutFile),
                       "-y"};

            p = Runtime.getRuntime().exec(_params);

            BufferedReader _reader = new BufferedReader(new InputStreamReader(p.getErrorStream()));

            String _line = null;

            while((_line = _reader.readLine()) != null) {
                lw.writeLine(_logPath + _logName, _line);
                System.out.println(_line);
            }
        }
        catch (Exception e) {
            BufferedReader _reader = new BufferedReader(new InputStreamReader(p.getErrorStream()));

            String _line = null;

            while((_line = _reader.readLine()) != null) {
                lw.writeLine(_logPath + _logName, _line);
                System.out.println(_line);
            }

        }

错误消息:无法为输出文件#0写入标头(编解码器参数不正确?):处理输入时找到无效数据

错误跟踪运行的完整日志输出

29 Jan 2016 03:45:09 UTC - Running FFMpeg...
29 Jan 2016 03:45:09 UTC -  Input file: /var/local/ffmpegtest/media_input/sample_iTunes.mov
29 Jan 2016 03:45:09 UTC -  Output file: /var/local/ffmpegtest/media_output/sample_iTunes.mp4
29 Jan 2016 03:45:09 UTC - ffmpeg version N-63893-gc69defd Copyright (c) 2000-2014 the FFmpeg developers
29 Jan 2016 03:45:09 UTC -   built on Jul 16 2014 05:38:01 with gcc 4.6 (Debian 4.6.3-1)
29 Jan 2016 03:45:09 UTC -   configuration: --prefix=/root/ffmpeg-static/64bit --extra-cflags='-I/root/ffmpeg-static/64bit/include -static' --extra-ldflags='-L/root/ffmpeg-static/64bit/lib -static' --extra-libs='-lxml2 -lexpat -lfreetype' --enable-static --disable-shared --disable-ffserver --disable-doc --enable-bzlib --enable-zlib --enable-postproc --enable-runtime-cpudetect --enable-libx264 --enable-gpl --enable-libtheora --enable-libvorbis --enable-libmp3lame --enable-gray --enable-libass --enable-libfreetype --enable-libopenjpeg --enable-libspeex --enable-libvo-aacenc --enable-libvo-amrwbenc --enable-version3 --enable-libvpx
29 Jan 2016 03:45:09 UTC -   libavutil      52. 89.100 / 52. 89.100
29 Jan 2016 03:45:09 UTC -   libavcodec     55. 66.101 / 55. 66.101
29 Jan 2016 03:45:09 UTC -   libavformat    55. 43.100 / 55. 43.100
29 Jan 2016 03:45:09 UTC -   libavdevice    55. 13.101 / 55. 13.101
29 Jan 2016 03:45:09 UTC -   libavfilter     4.  8.100 /  4.  8.100
29 Jan 2016 03:45:09 UTC -   libswscale      2.  6.100 /  2.  6.100
29 Jan 2016 03:45:09 UTC -   libswresample   0. 19.100 /  0. 19.100
29 Jan 2016 03:45:09 UTC -   libpostproc    52.  3.100 / 52.  3.100
29 Jan 2016 03:45:09 UTC - Input #0, mov,mp4,m4a,3gp,3g2,mj2, from '/var/local/ffmpegtest/media_input/sample_iTunes.mov':
29 Jan 2016 03:45:09 UTC -   Metadata:
29 Jan 2016 03:45:09 UTC -     major_brand     : qt  
29 Jan 2016 03:45:09 UTC -     minor_version   : 537199360
29 Jan 2016 03:45:09 UTC -     compatible_brands: qt  
29 Jan 2016 03:45:09 UTC -     creation_time   : 2005-10-17 22:54:32
29 Jan 2016 03:45:09 UTC -   Duration: 00:01:25.50, start: 0.000000, bitrate: 307 kb/s
29 Jan 2016 03:45:09 UTC -     Stream #0:0(eng): Video: mpeg4 (Simple Profile) (mp4v / 0x7634706D), yuv420p, 640x480 [SAR 1:1 DAR 4:3], 261 kb/s, 10 fps, 10 tbr, 3k tbn, 25 tbc (default)
29 Jan 2016 03:45:09 UTC -     Metadata:
29 Jan 2016 03:45:09 UTC -       creation_time   : 2005-10-17 22:54:33
29 Jan 2016 03:45:09 UTC -       handler_name    : Apple Video Media Handler
29 Jan 2016 03:45:09 UTC -       encoder         : 3ivx D4 4.5.1
29 Jan 2016 03:45:09 UTC -     Stream #0:1(eng): Audio: aac (mp4a / 0x6134706D), 32000 Hz, mono, fltp, 43 kb/s (default)
29 Jan 2016 03:45:09 UTC -     Metadata:
29 Jan 2016 03:45:09 UTC -       creation_time   : 2005-10-17 22:54:34
29 Jan 2016 03:45:09 UTC -       handler_name    : Apple Sound Media Handler
29 Jan 2016 03:45:09 UTC - [libx264 @ 0x30c2c00] using SAR=1/1
29 Jan 2016 03:45:09 UTC - [libx264 @ 0x30c2c00] using cpu capabilities: MMX2 SSE2Fast SSSE3 FastShuffle SSE4.2 AVX AVX2 FMA3 BMI1 BMI2
29 Jan 2016 03:45:09 UTC - [libx264 @ 0x30c2c00] profile High, level 2.2
29 Jan 2016 03:45:09 UTC - [libx264 @ 0x30c2c00] 264 - core 129 r2230 1cffe9f - H.264/MPEG-4 AVC codec - Copyleft 2003-2012 - http://www.videolan.org/x264.html - options: cabac=1 ref=3 deblock=1:0:0 analyse=0x3:0x113 me=hex subme=7 psy=1 psy_rd=1.00:0.00 mixed_ref=1 me_range=16 chroma_me=1 trellis=1 8x8dct=1 cqm=0 deadzone=21,11 fast_pskip=1 chroma_qp_offset=-2 threads=1 lookahead_threads=1 sliced_threads=0 nr=0 decimate=1 interlaced=0 bluray_compat=0 constrained_intra=0 bframes=3 b_pyramid=2 b_adapt=1 b_bias=0 direct=1 weightb=1 open_gop=0 weightp=2 keyint=250 keyint_min=10 scenecut=40 intra_refresh=0 rc_lookahead=40 rc=crf mbtree=1 crf=23.0 qcomp=0.60 qpmin=0 qpmax=69 qpstep=4 ip_ratio=1.40 aq=1:1.00
29 Jan 2016 03:45:09 UTC - [mp4 @ 0x30c21a0] Tag mp42/0x3234706d incompatible with output codec id '28' ([33][0][0][0])
29 Jan 2016 03:45:09 UTC - Output #0, mp4, to '/var/local/ffmpegtest/media_output/sample_iTunes.mp4':
29 Jan 2016 03:45:09 UTC -   Metadata:
29 Jan 2016 03:45:09 UTC -     major_brand     : qt  
29 Jan 2016 03:45:09 UTC -     minor_version   : 537199360
29 Jan 2016 03:45:09 UTC -     compatible_brands: qt  
29 Jan 2016 03:45:09 UTC -     Stream #0:0(eng): Video: h264 (libx264) (mp42 / 0x3234706D), yuv420p, 640x480 [SAR 1:1 DAR 4:3], q=-1--1, 10 fps, 90k tbn, 10 tbc (default)
29 Jan 2016 03:45:09 UTC -     Metadata:
29 Jan 2016 03:45:09 UTC -       creation_time   : 2005-10-17 22:54:33
29 Jan 2016 03:45:09 UTC -       handler_name    : Apple Video Media Handler
29 Jan 2016 03:45:09 UTC -       encoder         : Lavc55.66.101 libx264
29 Jan 2016 03:45:09 UTC -     Stream #0:1(eng): Audio: aac (libvo_aacenc), 32000 Hz, mono, s16, 128 kb/s (default)
29 Jan 2016 03:45:09 UTC -     Metadata:
29 Jan 2016 03:45:09 UTC -       creation_time   : 2005-10-17 22:54:34
29 Jan 2016 03:45:09 UTC -       handler_name    : Apple Sound Media Handler
29 Jan 2016 03:45:09 UTC -       encoder         : Lavc55.66.101 libvo_aacenc
29 Jan 2016 03:45:09 UTC - Stream mapping:
29 Jan 2016 03:45:09 UTC -   Stream #0:0 -> #0:0 (mpeg4 (native) -> h264 (libx264))
29 Jan 2016 03:45:09 UTC -   Stream #0:1 -> #0:1 (aac (native) -> aac (libvo_aacenc))
29 Jan 2016 03:45:09 UTC - Could not write header for output file #0 (incorrect codec parameters ?): Invalid data found when processing input

0 个答案:

没有答案