我正在使用ffmpeg-command将带有音频文件的图像合并为mp4视频:
ffmpeg -y -r 30 -loop 1 -i <path/to/image.png> -i <path/to/audio.aac> -shortest -acodec copy -vcodec libx264 <path/to/output.mp4>
要使用Java调用此命令,请使用以下代码:
ProcessBuilder builder = new ProcessBuilder("ffmpeg", "-y", "-r",
String.valueOf(generalConfig.getOutputFPS()), "-loop", "1", "-i", pictureFile,
"-i", transspoken.getVoiceFile(), "-shortest", "-acodec", "copy", "-vcodec", "libx264",
snippetOut);
builder.redirectOutput(new File(getTMPName() + ".txt"));
builder.redirectError(new File(getTMPName() + ".txt"));
builder.redirectErrorStream(true);
LogUtils.debug("FFMPEG-Render", String.join(" ", builder.command()));
try {
Process p = builder.start();
p.waitFor();
} catch (IOException | InterruptedException e) {
e.printStackTrace();
}
此代码可以在运行Ubuntu 18.04 Desktop和OpenJDK 11.0.4的本地计算机上正常运行。但是,在运行相同的OpenJDK-Version的Ubuntu 18.04 Server Droplet上运行时,代码导致输出损坏。奇怪的是,当我ssh进入服务器并调用完全相同的命令来生成mp4文件时,绝对没有问题。所以我处于一种非常奇怪的情况下:
服务器上自动FFMPEG调用的输出:
ffmpeg version 3.4.6-0ubuntu0.18.04.1 Copyright (c) 2000-2019 the FFmpeg developers
built with gcc 7 (Ubuntu 7.3.0-16ubuntu3)
configuration: --prefix=/usr --extra-version=0ubuntu0.18.04.1 --toolchain=hardened --libdir=/usr/lib/x86_64-linux-gnu --incdir=/usr/include/x86_64-linux-gnu --enable-gpl --disable-stripping --enable-avresample --enable-avisynth --enable-gnutls --enable-ladspa --enable-libass --enable-libbluray --enable-libbs2b --enable-libcaca --enable-libcdio --enable-libflite --enable-libfontconfig --enable-libfreetype --enable-libfribidi --enable-libgme --enable-libgsm --enable-libmp3lame --enable-libmysofa --enable-libopenjpeg --enable-libopenmpt --enable-libopus --enable-libpulse --enable-librubberband --enable-librsvg --enable-libshine --enable-libsnappy --enable-libsoxr --enable-libspeex --enable-libssh --enable-libtheora --enable-libtwolame --enable-libvorbis --enable-libvpx --enable-libwavpack --enable-libwebp --enable-libx265 --enable-libxml2 --enable-libxvid --enable-libzmq --enable-libzvbi --enable-omx --enable-openal --enable-opengl --enable-sdl2 --enable-libdc1394 --enable-libdrm --enable-libiec61883 --enable-chromaprint --enable-frei0r --enable-libopencv --enable-libx264 --enable-shared
libavutil 55. 78.100 / 55. 78.100
libavcodec 57.107.100 / 57.107.100
libavformat 57. 83.100 / 57. 83.100
libavdevice 57. 10.100 / 57. 10.100
libavfilter 6.107.100 / 6.107.100
libavresample 3. 7. 0 / 3. 7. 0
libswscale 4. 8.100 / 4. 8.100
libswresample 2. 9.100 / 2. 9.100
libpostproc 54. 7.100 / 54. 7.100
[png_pipe @ 0x560225784a60] Stream #0: not enough frames to estimate rate; consider increasing probesize
Input #0, png_pipe, from 'tmp/render_1.png':
Duration: N/A, bitrate: N/A
Stream #0:0: Video: png, rgb24(pc), 1920x1080, 25 tbr, 25 tbn, 25 tbc
[aac @ 0x560225789940] Estimating duration from bitrate, this may be inaccurate
Input #1, aac, from 'tmp/marytts_1.aac':
Duration: 00:00:04.80, bitrate: 25 kb/s
Stream #1:0: Audio: aac (LC), 16000 Hz, mono, fltp, 25 kb/s
Stream mapping:
Stream #0:0 -> #0:0 (png (native) -> h264 (libx264))
Stream #1:0 -> #0:1 (copy)
Press [q] to stop, [?] for help
[libx264 @ 0x56022578c2e0] using cpu capabilities: MMX2 SSE2Fast SSSE3 SSE4.2 AVX FMA3 BMI2 AVX2 AVX512
[libx264 @ 0x56022578c2e0] profile High 4:4:4 Predictive, level 4.0, 4:4:4 8-bit
[libx264 @ 0x56022578c2e0] 264 - core 152 r2854 e9a5903 - H.264/MPEG-4 AVC codec - Copyleft 2003-2017 - http://www.videolan.org/x264.html - options: cabac=1 ref=3 deblock=1:0:0 analyse=0x1:0x111 me=hex subme=7 psy=1 psy_rd=1.00:0.00 mixed_ref=1 me_range=16 chroma_me=1 trellis=1 8x8dct=0 cqm=0 deadzone=21,11 fast_pskip=1 chroma_qp_offset=4 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=25 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
Output #0, mp4, to 'tmp/render_2.mp4':
Metadata:
encoder : Lavf57.83.100
Stream #0:0: Video: h264 (libx264) (avc1 / 0x31637661), yuv444p, 1920x1080, q=-1--1, 30 fps, 15360 tbn, 30 tbc
Metadata:
encoder : Lavc57.107.100 libx264
Side data:
cpb: bitrate max/min/avg: 0/0/0 buffer size: 0 vbv_delay: -1
Stream #0:1: Audio: aac (LC) (mp4a / 0x6134706D), 16000 Hz, mono, fltp, 25 kb/s
frame= 6 fps=0.0 q=0.0 size= 0kB time=00:00:00.00 bitrate=N/A speed= 0x
frame= 12 fps= 11 q=0.0 size= 0kB time=00:00:00.00 bitrate=N/A speed= 0x
frame= 18 fps= 11 q=0.0 size= 0kB time=00:00:00.00 bitrate=N/A speed= 0x
frame= 23 fps= 10 q=0.0 size= 0kB time=00:00:00.00 bitrate=N/A speed= 0x
frame= 27 fps=9.8 q=0.0 size= 0kB time=00:00:00.00 bitrate=N/A speed= 0x
frame= 30 fps=9.2 q=0.0 size= 0kB time=00:00:00.00 bitrate=N/A speed= 0x
frame= 32 fps=7.9 q=0.0 size= 0kB time=00:00:00.00 bitrate=N/A speed= 0x
frame= 33 fps=7.1 q=0.0 size= 0kB time=00:00:00.00 bitrate=N/A speed= 0x
frame= 34 fps=6.4 q=0.0 size= 0kB time=00:00:00.00 bitrate=N/A speed= 0x
frame= 35 fps=5.4 q=0.0 size= 0kB time=00:00:00.00 bitrate=N/A speed= 0x
frame= 38 fps=5.4 q=0.0 size= 0kB time=00:00:00.00 bitrate=N/A speed= 0x
frame= 42 fps=5.0 q=29.0 size= 0kB time=00:00:00.00 bitrate=N/A speed= 0x
错误输出为空。 FFProbe在损坏的文件上:
$ ffprobe tmp/render_2.mp4
ffprobe version 3.4.6-0ubuntu0.18.04.1 Copyright (c) 2007-2019 the FFmpeg developers
built with gcc 7 (Ubuntu 7.3.0-16ubuntu3)
configuration: --prefix=/usr --extra-version=0ubuntu0.18.04.1 --toolchain=hardened --libdir=/usr/lib/x86_64-linux-gnu --incdir=/usr/include/x86_64-linux-gnu --enable-gpl --disable-stripping --enable-avresample --enable-avisynth --enable-gnutls --enable-ladspa --enable-libass --enable-libbluray --enable-libbs2b --enable-libcaca --enable-libcdio --enable-libflite --enable-libfontconfig --enable-libfreetype --enable-libfribidi --enable-libgme --enable-libgsm --enable-libmp3lame --enable-libmysofa --enable-libopenjpeg --enable-libopenmpt --enable-libopus --enable-libpulse --enable-librubberband --enable-librsvg --enable-libshine --enable-libsnappy --enable-libsoxr --enable-libspeex --enable-libssh --enable-libtheora --enable-libtwolame --enable-libvorbis --enable-libvpx --enable-libwavpack --enable-libwebp --enable-libx265 --enable-libxml2 --enable-libxvid --enable-libzmq --enable-libzvbi --enable-omx --enable-openal --enable-opengl --enable-sdl2 --enable-libdc1394 --enable-libdrm --enable-libiec61883 --enable-chromaprint --enable-frei0r --enable-libopencv --enable-libx264 --enable-shared
libavutil 55. 78.100 / 55. 78.100
libavcodec 57.107.100 / 57.107.100
libavformat 57. 83.100 / 57. 83.100
libavdevice 57. 10.100 / 57. 10.100
libavfilter 6.107.100 / 6.107.100
libavresample 3. 7. 0 / 3. 7. 0
libswscale 4. 8.100 / 4. 8.100
libswresample 2. 9.100 / 2. 9.100
libpostproc 54. 7.100 / 54. 7.100
[mov,mp4,m4a,3gp,3g2,mj2 @ 0x558b07498080] moov atom not found
tmp/render_2.mp4: Invalid data found when processing input
起初,我认为Java程序没有适当地等待FFMpeg完成,从而导致输出损坏,但是经过一段时间的测量,我有点确信这不是导致此错误的原因。
编辑:
通过ssh调用时,服务器上ffmpeg命令的输出:
$ ffmpeg -y -r 30 -loop 1 -i tmp/render_1.png -i tmp/marytts_1.aac -shortest -acodec copy -vcodec libx264 tmp/render_2.mp4
ffmpeg version 3.4.6-0ubuntu0.18.04.1 Copyright (c) 2000-2019 the FFmpeg developers
built with gcc 7 (Ubuntu 7.3.0-16ubuntu3)
configuration: --prefix=/usr --extra-version=0ubuntu0.18.04.1 --toolchain=hardened --libdir=/usr/lib/x86_64-linux-gnu --incdir=/usr/include/x86_64-linux-gnu --enable-gpl --disable-stripping --enable-avresample --enable-avisynth --enable-gnutls --enable-ladspa --enable-libass --enable-libbluray --enable-libbs2b --enable-libcaca --enable-libcdio --enable-libflite --enable-libfontconfig --enable-libfreetype --enable-libfribidi --enable-libgme --enable-libgsm --enable-libmp3lame --enable-libmysofa --enable-libopenjpeg --enable-libopenmpt --enable-libopus --enable-libpulse --enable-librubberband --enable-librsvg --enable-libshine --enable-libsnappy --enable-libsoxr --enable-libspeex --enable-libssh --enable-libtheora --enable-libtwolame --enable-libvorbis --enable-libvpx --enable-libwavpack --enable-libwebp --enable-libx265 --enable-libxml2 --enable-libxvid --enable-libzmq --enable-libzvbi --enable-omx --enable-openal --enable-opengl --enable-sdl2 --enable-libdc1394 --enable-libdrm --enable-libiec61883 --enable-chromaprint --enable-frei0r --enable-libopencv --enable-libx264 --enable-shared
libavutil 55. 78.100 / 55. 78.100
libavcodec 57.107.100 / 57.107.100
libavformat 57. 83.100 / 57. 83.100
libavdevice 57. 10.100 / 57. 10.100
libavfilter 6.107.100 / 6.107.100
libavresample 3. 7. 0 / 3. 7. 0
libswscale 4. 8.100 / 4. 8.100
libswresample 2. 9.100 / 2. 9.100
libpostproc 54. 7.100 / 54. 7.100
[png_pipe @ 0x562e37a77a60] Stream #0: not enough frames to estimate rate; consider increasing probesize
Input #0, png_pipe, from 'tmp/render_1.png':
Duration: N/A, bitrate: N/A
Stream #0:0: Video: png, rgb24(pc), 1920x1080, 25 tbr, 25 tbn, 25 tbc
[aac @ 0x562e37a7c940] Estimating duration from bitrate, this may be inaccurate
Input #1, aac, from 'tmp/marytts_1.aac':
Duration: 00:00:04.80, bitrate: 25 kb/s
Stream #1:0: Audio: aac (LC), 16000 Hz, mono, fltp, 25 kb/s
Stream mapping:
Stream #0:0 -> #0:0 (png (native) -> h264 (libx264))
Stream #1:0 -> #0:1 (copy)
Press [q] to stop, [?] for help
[libx264 @ 0x562e37a7f2e0] using cpu capabilities: MMX2 SSE2Fast SSSE3 SSE4.2 AVX FMA3 BMI2 AVX2 AVX512
[libx264 @ 0x562e37a7f2e0] profile High 4:4:4 Predictive, level 4.0, 4:4:4 8-bit
[libx264 @ 0x562e37a7f2e0] 264 - core 152 r2854 e9a5903 - H.264/MPEG-4 AVC codec - Copyleft 2003-2017 - http://www.videolan.org/x264.html - options: cabac=1 ref=3 deblock=1:0:0 analyse=0x1:0x111 me=hex subme=7 psy=1 psy_rd=1.00:0.00 mixed_ref=1 me_range=16 chroma_me=1 trellis=1 8x8dct=0 cqm=0 deadzone=21,11 fast_pskip=1 chroma_qp_offset=4 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=25 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
Output #0, mp4, to 'tmp/render_2.mp4':
Metadata:
encoder : Lavf57.83.100
Stream #0:0: Video: h264 (libx264) (avc1 / 0x31637661), yuv444p, 1920x1080, q=-1--1, 30 fps, 15360 tbn, 30 tbc
Metadata:
encoder : Lavc57.107.100 libx264
Side data:
cpb: bitrate max/min/avg: 0/0/0 buffer size: 0 vbv_delay: -1
Stream #0:1: Audio: aac (LC) (mp4a / 0x6134706D), 16000 Hz, mono, fltp, 25 kb/s
frame= 194 fps= 10 q=29.0 Lsize= 280kB time=00:00:05.00 bitrate= 458.3kbits/s speed=0.261x
video:261kB audio:15kB subtitle:0kB other streams:0kB global headers:0kB muxing overhead: 1.337588%
[libx264 @ 0x562e37a7f2e0] frame I:1 Avg QP:16.02 size:255181
[libx264 @ 0x562e37a7f2e0] frame P:49 Avg QP:10.58 size: 93
[libx264 @ 0x562e37a7f2e0] frame B:144 Avg QP:13.67 size: 69
[libx264 @ 0x562e37a7f2e0] consecutive B-frames: 1.0% 0.0% 0.0% 99.0%
[libx264 @ 0x562e37a7f2e0] mb I I16..4: 49.3% 0.0% 50.7%
[libx264 @ 0x562e37a7f2e0] mb P I16..4: 0.0% 0.0% 0.0% P16..4: 0.1% 0.0% 0.0% 0.0% 0.0% skip:99.9%
[libx264 @ 0x562e37a7f2e0] mb B I16..4: 0.0% 0.0% 0.0% B16..8: 0.0% 0.0% 0.0% direct: 0.0% skip:100.0% L0: 0.0% L1:100.0% BI: 0.0%
[libx264 @ 0x562e37a7f2e0] coded y,u,v intra: 49.6% 41.1% 42.4% inter: 0.0% 0.0% 0.0%
[libx264 @ 0x562e37a7f2e0] i16 v,h,dc,p: 97% 0% 2% 1%
[libx264 @ 0x562e37a7f2e0] i4 v,h,dc,ddl,ddr,vr,hd,vl,hu: 22% 15% 7% 7% 9% 10% 9% 9% 11%
[libx264 @ 0x562e37a7f2e0] Weighted P-Frames: Y:0.0% UV:0.0%
[libx264 @ 0x562e37a7f2e0] ref P L0: 72.6% 13.6% 11.6% 2.3%
[libx264 @ 0x562e37a7f2e0] kb/s:333.64
本地自动呼叫的输出:
ffmpeg version 3.4.6-0ubuntu0.18.04.1 Copyright (c) 2000-2019 the FFmpeg developers
built with gcc 7 (Ubuntu 7.3.0-16ubuntu3)
configuration: --prefix=/usr --extra-version=0ubuntu0.18.04.1 --toolchain=hardened --libdir=/usr/lib/x86_64-linux-gnu --incdir=/usr/include/x86_64-linux-gnu --enable-gpl --disable-stripping --enable-avresample --enable-avisynth --enable-gnutls --enable-ladspa --enable-libass --enable-libbluray --enable-libbs2b --enable-libcaca --enable-libcdio --enable-libflite --enable-libfontconfig --enable-libfreetype --enable-libfribidi --enable-libgme --enable-libgsm --enable-libmp3lame --enable-libmysofa --enable-libopenjpeg --enable-libopenmpt --enable-libopus --enable-libpulse --enable-librubberband --enable-librsvg --enable-libshine --enable-libsnappy --enable-libsoxr --enable-libspeex --enable-libssh --enable-libtheora --enable-libtwolame --enable-libvorbis --enable-libvpx --enable-libwavpack --enable-libwebp --enable-libx265 --enable-libxml2 --enable-libxvid --enable-libzmq --enable-libzvbi --enable-omx --enable-openal --enable-opengl --enable-sdl2 --enable-libdc1394 --enable-libdrm --enable-libiec61883 --enable-chromaprint --enable-frei0r --enable-libopencv --enable-libx264 --enable-shared
WARNING: library configuration mismatch
avcodec configuration: --prefix=/usr --extra-version=0ubuntu0.18.04.1 --toolchain=hardened --libdir=/usr/lib/x86_64-linux-gnu --incdir=/usr/include/x86_64-linux-gnu --enable-gpl --disable-stripping --enable-avresample --enable-avisynth --enable-gnutls --enable-ladspa --enable-libass --enable-libbluray --enable-libbs2b --enable-libcaca --enable-libcdio --enable-libflite --enable-libfontconfig --enable-libfreetype --enable-libfribidi --enable-libgme --enable-libgsm --enable-libmp3lame --enable-libmysofa --enable-libopenjpeg --enable-libopenmpt --enable-libopus --enable-libpulse --enable-librubberband --enable-librsvg --enable-libshine --enable-libsnappy --enable-libsoxr --enable-libspeex --enable-libssh --enable-libtheora --enable-libtwolame --enable-libvorbis --enable-libvpx --enable-libwavpack --enable-libwebp --enable-libx265 --enable-libxml2 --enable-libxvid --enable-libzmq --enable-libzvbi --enable-omx --enable-openal --enable-opengl --enable-sdl2 --enable-libdc1394 --enable-libdrm --enable-libiec61883 --enable-chromaprint --enable-frei0r --enable-libopencv --enable-libx264 --enable-shared --enable-version3 --disable-doc --disable-programs --enable-libopencore_amrnb --enable-libopencore_amrwb --enable-libtesseract --enable-libvo_amrwbenc
libavutil 55. 78.100 / 55. 78.100
libavcodec 57.107.100 / 57.107.100
libavformat 57. 83.100 / 57. 83.100
libavdevice 57. 10.100 / 57. 10.100
libavfilter 6.107.100 / 6.107.100
libavresample 3. 7. 0 / 3. 7. 0
libswscale 4. 8.100 / 4. 8.100
libswresample 2. 9.100 / 2. 9.100
libpostproc 54. 7.100 / 54. 7.100
[png_pipe @ 0x558d89df15c0] Stream #0: not enough frames to estimate rate; consider increasing probesize
Input #0, png_pipe, from 'tmp/render_1.png':
Duration: N/A, bitrate: N/A
Stream #0:0: Video: png, rgb24(pc), 1920x1080, 25 tbr, 25 tbn, 25 tbc
[aac @ 0x558d89df64a0] Estimating duration from bitrate, this may be inaccurate
Input #1, aac, from 'tmp/marytts_1.aac':
Duration: 00:00:04.80, bitrate: 25 kb/s
Stream #1:0: Audio: aac (LC), 16000 Hz, mono, fltp, 25 kb/s
Stream mapping:
Stream #0:0 -> #0:0 (png (native) -> h264 (libx264))
Stream #1:0 -> #0:1 (copy)
Press [q] to stop, [?] for help
[libx264 @ 0x558d89df8e40] using cpu capabilities: MMX2 SSE2Fast SSSE3 SSE4.2 AVX FMA3 BMI2 AVX2
[libx264 @ 0x558d89df8e40] profile High 4:4:4 Predictive, level 4.0, 4:4:4 8-bit
[libx264 @ 0x558d89df8e40] 264 - core 152 r2854 e9a5903 - H.264/MPEG-4 AVC codec - Copyleft 2003-2017 - http://www.videolan.org/x264.html - options: cabac=1 ref=3 deblock=1:0:0 analyse=0x1:0x111 me=hex subme=7 psy=1 psy_rd=1.00:0.00 mixed_ref=1 me_range=16 chroma_me=1 trellis=1 8x8dct=0 cqm=0 deadzone=21,11 fast_pskip=1 chroma_qp_offset=4 threads=6 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=25 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
Output #0, mp4, to 'tmp/render_2.mp4':
Metadata:
encoder : Lavf57.83.100
Stream #0:0: Video: h264 (libx264) (avc1 / 0x31637661), yuv444p, 1920x1080, q=-1--1, 30 fps, 15360 tbn, 30 tbc
Metadata:
encoder : Lavc57.107.100 libx264
Side data:
cpb: bitrate max/min/avg: 0/0/0 buffer size: 0 vbv_delay: -1
Stream #0:1: Audio: aac (LC) (mp4a / 0x6134706D), 16000 Hz, mono, fltp, 25 kb/s
frame= 29 fps=0.0 q=0.0 size= 0kB time=00:00:00.00 bitrate=N/A speed= 0x
frame= 51 fps= 51 q=29.0 size= 0kB time=00:00:00.00 bitrate=N/A speed= 0x
frame= 67 fps= 44 q=29.0 size= 0kB time=00:00:00.51 bitrate= 0.8kbits/s speed=0.335x
frame= 88 fps= 43 q=29.0 size= 256kB time=00:00:01.21 bitrate=1724.9kbits/s speed=0.595x
frame= 111 fps= 43 q=29.0 size= 256kB time=00:00:01.93 bitrate=1084.9kbits/s speed=0.756x
frame= 132 fps= 43 q=29.0 size= 256kB time=00:00:02.68 bitrate= 780.3kbits/s speed=0.877x
frame= 153 fps= 43 q=29.0 size= 256kB time=00:00:03.39 bitrate= 618.4kbits/s speed=0.949x
frame= 176 fps= 43 q=29.0 size= 256kB time=00:00:04.16 bitrate= 504.2kbits/s speed=1.02x
frame= 196 fps= 43 q=29.0 size= 256kB time=00:00:04.80 bitrate= 437.0kbits/s speed=1.04x
frame= 203 fps= 38 q=29.0 Lsize= 280kB time=00:00:05.00 bitrate= 458.0kbits/s speed=0.946x
video:261kB audio:15kB subtitle:0kB other streams:0kB global headers:0kB muxing overhead: 1.338639%
[libx264 @ 0x558d89df8e40] frame I:1 Avg QP:16.02 size:255033
[libx264 @ 0x558d89df8e40] frame P:51 Avg QP:10.50 size: 91
[libx264 @ 0x558d89df8e40] frame B:151 Avg QP:13.67 size: 69
[libx264 @ 0x558d89df8e40] consecutive B-frames: 0.5% 1.0% 0.0% 98.5%
[libx264 @ 0x558d89df8e40] mb I I16..4: 49.4% 0.0% 50.6%
[libx264 @ 0x558d89df8e40] mb P I16..4: 0.0% 0.0% 0.0% P16..4: 0.1% 0.0% 0.0% 0.0% 0.0% skip:99.9%
[libx264 @ 0x558d89df8e40] mb B I16..4: 0.0% 0.0% 0.0% B16..8: 0.0% 0.0% 0.0% direct: 0.0% skip:100.0% L0: 0.0% L1:100.0% BI: 0.0%
[libx264 @ 0x558d89df8e40] coded y,u,v intra: 49.6% 41.1% 42.2% inter: 0.0% 0.0% 0.0%
[libx264 @ 0x558d89df8e40] i16 v,h,dc,p: 97% 0% 2% 1%
[libx264 @ 0x558d89df8e40] i4 v,h,dc,ddl,ddr,vr,hd,vl,hu: 22% 15% 7% 7% 9% 10% 9% 10% 11%
[libx264 @ 0x558d89df8e40] Weighted P-Frames: Y:0.0% UV:0.0%
[libx264 @ 0x558d89df8e40] ref P L0: 80.5% 10.5% 8.7% 0.3%
[libx264 @ 0x558d89df8e40] kb/s:319.34
本地人工呼叫的输出:
$ ffmpeg -y -r 30 -loop 1 -i tmp/render_1.png -i tmp/marytts_1.aac -shortest -acodec copy -vcodec libx264 tmp/render_2.mp4
ffmpeg version 3.4.6-0ubuntu0.18.04.1 Copyright (c) 2000-2019 the FFmpeg developers
built with gcc 7 (Ubuntu 7.3.0-16ubuntu3)
configuration: --prefix=/usr --extra-version=0ubuntu0.18.04.1 --toolchain=hardened --libdir=/usr/lib/x86_64-linux-gnu --incdir=/usr/include/x86_64-linux-gnu --enable-gpl --disable-stripping --enable-avresample --enable-avisynth --enable-gnutls --enable-ladspa --enable-libass --enable-libbluray --enable-libbs2b --enable-libcaca --enable-libcdio --enable-libflite --enable-libfontconfig --enable-libfreetype --enable-libfribidi --enable-libgme --enable-libgsm --enable-libmp3lame --enable-libmysofa --enable-libopenjpeg --enable-libopenmpt --enable-libopus --enable-libpulse --enable-librubberband --enable-librsvg --enable-libshine --enable-libsnappy --enable-libsoxr --enable-libspeex --enable-libssh --enable-libtheora --enable-libtwolame --enable-libvorbis --enable-libvpx --enable-libwavpack --enable-libwebp --enable-libx265 --enable-libxml2 --enable-libxvid --enable-libzmq --enable-libzvbi --enable-omx --enable-openal --enable-opengl --enable-sdl2 --enable-libdc1394 --enable-libdrm --enable-libiec61883 --enable-chromaprint --enable-frei0r --enable-libopencv --enable-libx264 --enable-shared
WARNING: library configuration mismatch
avcodec configuration: --prefix=/usr --extra-version=0ubuntu0.18.04.1 --toolchain=hardened --libdir=/usr/lib/x86_64-linux-gnu --incdir=/usr/include/x86_64-linux-gnu --enable-gpl --disable-stripping --enable-avresample --enable-avisynth --enable-gnutls --enable-ladspa --enable-libass --enable-libbluray --enable-libbs2b --enable-libcaca --enable-libcdio --enable-libflite --enable-libfontconfig --enable-libfreetype --enable-libfribidi --enable-libgme --enable-libgsm --enable-libmp3lame --enable-libmysofa --enable-libopenjpeg --enable-libopenmpt --enable-libopus --enable-libpulse --enable-librubberband --enable-librsvg --enable-libshine --enable-libsnappy --enable-libsoxr --enable-libspeex --enable-libssh --enable-libtheora --enable-libtwolame --enable-libvorbis --enable-libvpx --enable-libwavpack --enable-libwebp --enable-libx265 --enable-libxml2 --enable-libxvid --enable-libzmq --enable-libzvbi --enable-omx --enable-openal --enable-opengl --enable-sdl2 --enable-libdc1394 --enable-libdrm --enable-libiec61883 --enable-chromaprint --enable-frei0r --enable-libopencv --enable-libx264 --enable-shared --enable-version3 --disable-doc --disable-programs --enable-libopencore_amrnb --enable-libopencore_amrwb --enable-libtesseract --enable-libvo_amrwbenc
libavutil 55. 78.100 / 55. 78.100
libavcodec 57.107.100 / 57.107.100
libavformat 57. 83.100 / 57. 83.100
libavdevice 57. 10.100 / 57. 10.100
libavfilter 6.107.100 / 6.107.100
libavresample 3. 7. 0 / 3. 7. 0
libswscale 4. 8.100 / 4. 8.100
libswresample 2. 9.100 / 2. 9.100
libpostproc 54. 7.100 / 54. 7.100
[png_pipe @ 0x558ddf2165c0] Stream #0: not enough frames to estimate rate; consider increasing probesize
Input #0, png_pipe, from 'tmp/render_1.png':
Duration: N/A, bitrate: N/A
Stream #0:0: Video: png, rgb24(pc), 1920x1080, 25 tbr, 25 tbn, 25 tbc
[aac @ 0x558ddf21b4a0] Estimating duration from bitrate, this may be inaccurate
Input #1, aac, from 'tmp/marytts_1.aac':
Duration: 00:00:04.80, bitrate: 25 kb/s
Stream #1:0: Audio: aac (LC), 16000 Hz, mono, fltp, 25 kb/s
Stream mapping:
Stream #0:0 -> #0:0 (png (native) -> h264 (libx264))
Stream #1:0 -> #0:1 (copy)
Press [q] to stop, [?] for help
[libx264 @ 0x558ddf21de40] using cpu capabilities: MMX2 SSE2Fast SSSE3 SSE4.2 AVX FMA3 BMI2 AVX2
[libx264 @ 0x558ddf21de40] profile High 4:4:4 Predictive, level 4.0, 4:4:4 8-bit
[libx264 @ 0x558ddf21de40] 264 - core 152 r2854 e9a5903 - H.264/MPEG-4 AVC codec - Copyleft 2003-2017 - http://www.videolan.org/x264.html - options: cabac=1 ref=3 deblock=1:0:0 analyse=0x1:0x111 me=hex subme=7 psy=1 psy_rd=1.00:0.00 mixed_ref=1 me_range=16 chroma_me=1 trellis=1 8x8dct=0 cqm=0 deadzone=21,11 fast_pskip=1 chroma_qp_offset=4 threads=6 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=25 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
Output #0, mp4, to 'tmp/render_2.mp4':
Metadata:
encoder : Lavf57.83.100
Stream #0:0: Video: h264 (libx264) (avc1 / 0x31637661), yuv444p, 1920x1080, q=-1--1, 30 fps, 15360 tbn, 30 tbc
Metadata:
encoder : Lavc57.107.100 libx264
Side data:
cpb: bitrate max/min/avg: 0/0/0 buffer size: 0 vbv_delay: -1
Stream #0:1: Audio: aac (LC) (mp4a / 0x6134706D), 16000 Hz, mono, fltp, 25 kb/s
frame= 203 fps= 40 q=29.0 Lsize= 280kB time=00:00:05.00 bitrate= 458.0kbits/s speed=0.986x
video:261kB audio:15kB subtitle:0kB other streams:0kB global headers:0kB muxing overhead: 1.338639%
[libx264 @ 0x558ddf21de40] frame I:1 Avg QP:16.02 size:255033
[libx264 @ 0x558ddf21de40] frame P:51 Avg QP:10.50 size: 91
[libx264 @ 0x558ddf21de40] frame B:151 Avg QP:13.67 size: 69
[libx264 @ 0x558ddf21de40] consecutive B-frames: 0.5% 1.0% 0.0% 98.5%
[libx264 @ 0x558ddf21de40] mb I I16..4: 49.4% 0.0% 50.6%
[libx264 @ 0x558ddf21de40] mb P I16..4: 0.0% 0.0% 0.0% P16..4: 0.1% 0.0% 0.0% 0.0% 0.0% skip:99.9%
[libx264 @ 0x558ddf21de40] mb B I16..4: 0.0% 0.0% 0.0% B16..8: 0.0% 0.0% 0.0% direct: 0.0% skip:100.0% L0: 0.0% L1:100.0% BI: 0.0%
[libx264 @ 0x558ddf21de40] coded y,u,v intra: 49.6% 41.1% 42.2% inter: 0.0% 0.0% 0.0%
[libx264 @ 0x558ddf21de40] i16 v,h,dc,p: 97% 0% 2% 1%
[libx264 @ 0x558ddf21de40] i4 v,h,dc,ddl,ddr,vr,hd,vl,hu: 22% 15% 7% 7% 9% 10% 9% 10% 11%
[libx264 @ 0x558ddf21de40] Weighted P-Frames: Y:0.0% UV:0.0%
[libx264 @ 0x558ddf21de40] ref P L0: 80.5% 10.5% 8.7% 0.3%
[libx264 @ 0x558ddf21de40] kb/s:319.34
答案 0 :(得分:0)
结果证明服务器具有足够的RAM来让FFMpeg命令自己运行,但没有足够的RAM来支持JVM和FFMpeg。这导致上述奇怪的情况。我猜丢失的RAM还会导致错误消息没有重定向到文件(或者FFMpeg在丢失的RAM上静默失败)。
我解决了这个问题,添加了一些SWAP空间。否则,您可以升级服务器。