[FFmpeg-user] High memory usage when merging videos

Jonathan Girven jonathan.girven at trickbook.com
Mon Dec 19 14:02:49 EET 2016


> A patch that I believe is a prerequisite for the improvement was
> just committed:
> http://ffmpeg.org/pipermail/ffmpeg-cvslog/2016-December/103759.html

Thanks for letting me know. I assume by "prerequisite for the
improvement" there are still more changes to come, but I thought I'd
try the current head anyway.

I pulled the master branch of FFmpeg & x264 and compiled a new binary.
FFmpeg seems to be hanging now at the transition between the two
videos. I have tried a couple of times with different videos of
different lengths and get the same result. dmesg shows other processes
being killed on the device around the same time, but not FFmpeg.

ffmpeg -y -i new_f2f63d36-4d99-4b61-a212-7cf25bb9c45e_0_14300.mp4 -i
new_aa8ab6af-fa88-4026-9e09-8aff1b59174b_0_5910.mp4 -i
app_images/video_stamp_720.png -f lavfi -i color=black:s=1280x720
-filter_complex
"[0:v]setpts=PTS-STARTPTS[v0_trim0];[0:a]asetpts=PTS-STARTPTS[a0_trim0];[v0_trim0]fade=t=in:st=0:d=0.4:alpha=1,fade=t=out:st=13.900000184774399:d=0.4:alpha=1,format=pix_fmts=yuva420p[v0];[a0_trim0]afade=t=in:st=0:d=0.4,afade=t=out:st=13.900000184774399:d=0.4[a0];[1:v]setpts=PTS-STARTPTS[v1_trim1];[1:a]asetpts=PTS-STARTPTS[a1_trim1];[v1_trim1]fade=t=in:st=0:d=0.4:alpha=1,fade=t=out:st=5.509999841451645:d=0.4:alpha=1,format=pix_fmts=yuva420p,setpts=expr=PTS-STARTPTS+13.900000184774399/TB,fifo[v1];[a1_trim1]afade=t=in:st=0:d=0.4,afade=t=out:st=5.509999841451645:d=0.4[a_fade1];aevalsrc=0:d=13.900000184774399[na1];[na1][a_fade1]concat=n=2:v=0:a=1[a1];[a0][a1]amix=inputs=2[complete_audio];[complete_audio]volume=1.0[audio_vol];[3:v]trim=duration=19.81[over0];[over0][v0]overlay=eof_action=pass[over1];[over1][v1]overlay=eof_action=pass[over2];[over2][2:v]overlay=0:0,format=yuva420p[over3]"
-vcodec libx264 -preset faster -map [over3] -map [audio_vol] -acodec
aac -ac 2 -b:a 128k -strict -2
new_572e1912-b147-4448-b6ab-757c6027ca0c.mp4
ffmpeg version N-82880-g02aa070 Copyright (c) 2000-2016 the FFmpeg developers
  built with gcc 4.9 (GCC) 20140827 (prerelease)
  configuration: --target-os=linux
--prefix=/home/jon/workspace/ffmpeg/ffmpeg-android/ffmpeg-build/armeabi-v7a
--enable-cross-compile --arch=arm
--cc=/home/jon/Development/android-ndk-r10e/toolchains/arm-linux-androideabi-4.9/prebuilt/linux-x86_64/bin/arm-linux-androideabi-gcc
--sysroot=/home/jon/Development/android-ndk-r10e/platforms/android-5/arch-arm/
--cross-prefix=/home/jon/Development/android-ndk-r10e/toolchains/arm-linux-androideabi-4.9/prebuilt/linux-x86_64/bin/arm-linux-androideabi-
--nm=/home/jon/Development/android-ndk-r10e/toolchains/arm-linux-androideabi-4.9/prebuilt/linux-x86_64/bin/arm-linux-androideabi-nm
--sysroot=/home/jon/Development/android-ndk-r10e/platforms/android-5/arch-arm/
--disable-shared --enable-static
--extra-cflags='-I/home/jon/workspace/ffmpeg/ffmpeg-android/ffmpeg-build/armeabi-v7a/include
-O3 -fPIE -pie -mfloat-abi=softfp -mfpu=vfpv3-d16 -marm -march=armv7-a
' --extra-ldflags='-L/home/jon/workspace/ffmpeg/ffmpeg-android/ffmpeg-build/armeabi-v7a/lib
-fPIE -pie' --enable-gpl --enable-libx264 --enable-pic
--enable-version3 --enable-zlib --disable-debug --disable-doc
--disable-ffplay --disable-ffprobe --disable-ffserver
--disable-outdevs --disable-decoders
--enable-decoder='mpeg4,aac,h264,mpegvideo,mpeg1video,mpeg2video,png,mjpeg,rawvideo,mp3,pcm_f64le,pcm_s16le,pcm_u8,flv,amrnb,svq1'
--disable-encoders
--enable-encoder='mpeg4,aac,h264,libx264,mpeg1video,mpeg2video,png,mjpeg,rawvideo,pcm_s16le,wrapped_avframe'
--disable-parsers
--enable-parser='aac,mpeg4video,ac3,h261,h264,vc1,mpegvideo'
--disable-demuxers
--enable-demuxer='aac,h264,mpegvideo,m4v,mov,vc1,mp4,concat,image2,mpegts,mp3,pcm_s16le,flv,matroska,avi,mov'
--disable-muxers
--enable-muxer='h264,mpeg1video,mpeg2video,m4v,mov,vc1,md5,mp4,image2,mpegts,segment,null'
--disable-filters
--enable-filter='aresample,scale,movie,overlay,color,fade,afade,pad,asetpts,amerge,aevalsrc,concat,amix,colorchannelmixer,eq,hue,atempo,hflip,vflip,transpose,volume,anullsrc'
  libavutil      55. 43.100 / 55. 43.100
  libavcodec     57. 68.100 / 57. 68.100
  libavformat    57. 61.100 / 57. 61.100
  libavdevice    57.  2.100 / 57.  2.100
  libavfilter     6. 68.100 /  6. 68.100
  libswscale      4.  3.101 /  4.  3.101
  libswresample   2.  4.100 /  2.  4.100
  libpostproc    54.  2.100 / 54.  2.100
Input #0, mov,mp4,m4a,3gp,3g2,mj2, from
'app_local_videos/new_f2f63d36-4d99-4b61-a212-7cf25bb9c45e_0_14300.mp4':
  Metadata:
    major_brand     : isom
    minor_version   : 512
    compatible_brands: isomiso2avc1mp41
    encoder         : Lavf57.61.100
  Duration: 00:00:14.34, start: 0.000000, bitrate: 874 kb/s
    Stream #0:0(und): Video: h264 (High) (avc1 / 0x31637661), yuv420p,
1280x720 [SAR 1:1 DAR 16:9], 741 kb/s, 16.67 fps, 16.67 tbr, 12800
tbn, 33.33 tbc (default)
    Metadata:
      handler_name    : VideoHandler
    Stream #0:1(und): Audio: aac (LC) (mp4a / 0x6134706D), 48000 Hz,
stereo, fltp, 128 kb/s (default)
    Metadata:
      handler_name    : SoundHandler
Input #1, mov,mp4,m4a,3gp,3g2,mj2, from
'app_local_videos/new_aa8ab6af-fa88-4026-9e09-8aff1b59174b_0_5910.mp4':
  Metadata:
    major_brand     : isom
    minor_version   : 512
    compatible_brands: isomiso2avc1mp41
    encoder         : Lavf57.61.100
  Duration: 00:00:05.94, start: 0.000000, bitrate: 964 kb/s
    Stream #1:0(und): Video: h264 (High) (avc1 / 0x31637661), yuv420p,
1280x720 [SAR 1:1 DAR 16:9], 828 kb/s, 17.17 fps, 17.17 tbr, 13184
tbn, 34.33 tbc (default)
    Metadata:
      handler_name    : VideoHandler
    Stream #1:1(und): Audio: aac (LC) (mp4a / 0x6134706D), 48000 Hz,
stereo, fltp, 131 kb/s (default)
    Metadata:
      handler_name    : SoundHandler
Input #2, image2, from 'app_images/video_stamp_720.png':
  Duration: 00:00:00.04, start: 0.000000, bitrate: 478 kb/s
    Stream #2:0: Video: png, pal8(pc), 1280x720, 25 tbr, 25 tbn, 25 tbc
Input #3, lavfi, from 'color=black:s=1280x720':
  Duration: N/A, start: 0.000000, bitrate: N/A
    Stream #3:0: Video: rawvideo (I420 / 0x30323449), yuv420p,
1280x720 [SAR 1:1 DAR 16:9], 25 tbr, 25 tbn, 25 tbc
[libx264 @ 0xb7aa4c50] using SAR=1/1
[libx264 @ 0xb7aa4c50] using cpu capabilities: ARMv6 NEON
[libx264 @ 0xb7aa4c50] profile High, level 3.1
[libx264 @ 0xb7aa4c50] 264 - core 148 - H.264/MPEG-4 AVC codec -
Copyleft 2003-2016 - http://www.videolan.org/x264.html - options:
cabac=1 ref=2 deblock=1:0:0 analyse=0x3:0x113 me=hex subme=4 psy=1
psy_rd=1.00:0.00 mixed_ref=0 me_range=16 chroma_me=1 trellis=1
8x8dct=1 cqm=0 deadzone=21,11 fast_pskip=1 chroma_qp_offset=0
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=1 keyint=250
keyint_min=25 scenecut=40 intra_refresh=0 rc_lookahead=20 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 'app_movies/new_572e1912-b147-4448-b6ab-757c6027ca0c.mp4':
  Metadata:
    major_brand     : isom
    minor_version   : 512
    compatible_brands: isomiso2avc1mp41
    encoder         : Lavf57.61.100
    Stream #0:0: Video: h264 (libx264) ([33][0][0][0] / 0x0021),
yuv420p, 1280x720 [SAR 1:1 DAR 16:9], q=-1--1, 25 fps, 12800 tbn, 25
tbc (default)
    Metadata:
      encoder         : Lavc57.68.100 libx264
    Side data:
      cpb: bitrate max/min/avg: 0/0/0 buffer size: 0 vbv_delay: -1
    Stream #0:1: Audio: aac (LC) ([64][0][0][0] / 0x0040), 48000 Hz,
stereo, fltp, 128 kb/s (default)
    Metadata:
      encoder         : Lavc57.68.100 aac
Stream mapping:
  Stream #0:0 (h264) -> setpts
  Stream #0:1 (aac) -> asetpts
  Stream #1:0 (h264) -> setpts
  Stream #1:1 (aac) -> asetpts
  Stream #2:0 (png) -> overlay:overlay
  Stream #3:0 (rawvideo) -> trim
  format -> Stream #0:0 (libx264)
  volume -> Stream #0:1 (aac)
Press [q] to stop, [?] for help
frame=  354 fps=5.8 q=28.0 size=    2200kB time=00:00:14.15
bitrate=1273.4kbits/s speed=0.231x

Removing the fifo filter doesn't seem to change things.


> I wonder if the (input?) option "-re" can improve your situation...

I will try to check that today. Thanks.


More information about the ffmpeg-user mailing list