Google chrome FFmpeg在录制chrome活动时会占用所有内存并在一分钟内崩溃

Google chrome FFmpeg在录制chrome活动时会占用所有内存并在一分钟内崩溃,google-chrome,ffmpeg,out-of-memory,alsa,Google Chrome,Ffmpeg,Out Of Memory,Alsa,我使用ffmpeg捕获chrome的活动(感谢chrome驱动程序),并将其记录到mp4文件中。然而,ffmpeg消耗的内存正在迅速膨胀,大约一分钟后,我的8GB内存就饱和了,我必须重新启动电脑 Unbuntu 16.0 ALSA环回(由modprobe snd aloop安装) ffmpeg版本4.2.2-1ubuntu1~16.04.0 这是ffmpeg的命令行: ffmpeg -y -v info -f x11grab -draw_mouse 0 -r 30 -s 1280x720

我使用ffmpeg捕获chrome的活动(感谢chrome驱动程序),并将其记录到mp4文件中。然而,ffmpeg消耗的内存正在迅速膨胀,大约一分钟后,我的8GB内存就饱和了,我必须重新启动电脑

Unbuntu 16.0 ALSA环回(由modprobe snd aloop安装) ffmpeg版本4.2.2-1ubuntu1~16.04.0

这是ffmpeg的命令行:

    ffmpeg -y -v info -f x11grab -draw_mouse 0 -r 30 -s 1280x720 -thread_queue_size 4096 
-i :0.0+0,0 -f alsa -thread_queue_size 4096 -i plug:cloop -acodec aac -strict -2 -ar 44100 
-c:v libx264 -preset veryfast -profile:v main -level 3.1 -pix_fmt yuv420p -r 30 
-crf 25 -g 60 -tune zerolatency -f mp4 file.mp4
如果我删除所有声音输入(-I plug:cloop-acodec aac-strict-2-ar 44100),那么内存是正常的、稳定的,但是生成的文件不能用VLC或媒体播放器播放

ffmpeg的日志在我看来很正常:

root$ ffmpeg -rtbufsize 15M -y -v info -f x11grab -draw_mouse 0 -r 30 -s 1280x720 -thread_queue_size 4096 -i :0.0+0,0 -f alsa -thread_queue_size 4096 -i hw:0 -acodec ac3_fixed -strict -2 -ar 44100 -c:v libx264 -preset veryfast -profile:v main -level 3.1 -pix_fmt yuv420p -r 30 -crf 25 -g 60 -tune zerolatency -f mp4 /tmp/recordings/stuff.mp4
ffmpeg version 2.8.15-0ubuntu0.16.04.1 Copyright (c) 2000-2018 the FFmpeg developers
  built with gcc 5.4.0 (Ubuntu 5.4.0-6ubuntu1~16.04.10) 20160609
  configuration: --prefix=/usr --extra-version=0ubuntu0.16.04.1 --build-suffix=-ffmpeg --toolchain=hardened --libdir=/usr/lib/x86_64-linux-gnu --incdir=/usr/include/x86_64-linux-gnu --cc=cc --cxx=g++ --enable-gpl --enable-shared --disable-stripping --disable-decoder=libopenjpeg --disable-decoder=libschroedinger --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-libmodplug --enable-libmp3lame --enable-libopenjpeg --enable-libopus --enable-libpulse --enable-librtmp --enable-libschroedinger --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-libxvid --enable-libzvbi --enable-openal --enable-opengl --enable-x11grab --enable-libdc1394 --enable-libiec61883 --enable-libzmq --enable-frei0r --enable-libx264 --enable-libopencv
  libavutil      54. 31.100 / 54. 31.100
  libavcodec     56. 60.100 / 56. 60.100
  libavformat    56. 40.101 / 56. 40.101
  libavdevice    56.  4.100 / 56.  4.100
  libavfilter     5. 40.101 /  5. 40.101
  libavresample   2.  1.  0 /  2.  1.  0
  libswscale      3.  1.101 /  3.  1.101
  libswresample   1.  2.101 /  1.  2.101
  libpostproc    53.  3.100 / 53.  3.100
Input #0, x11grab, from ':0.0+0,0':
  Duration: N/A, start: 1587042601.295126, bitrate: N/A
    Stream #0:0: Video: rawvideo (BGR[0] / 0x524742), bgr0, 1280x720, 30 fps, 30 tbr, 1000k tbn, 30 tbc
Guessed Channel Layout for  Input Stream #1.0 : stereo
Input #1, alsa, from 'hw:0':
  Duration: N/A, start: 1587042601.304179, bitrate: 1536 kb/s
    Stream #1:0: Audio: pcm_s16le, 48000 Hz, 2 channels, s16, 1536 kb/s
[libx264 @ 0x928ee0] using cpu capabilities: MMX2 SSE Cache64
[libx264 @ 0x928ee0] profile Main, level 3.1
Output #0, mpegts, to '/tmp/recordings/stuff.ts':
  Metadata:
    encoder         : Lavf56.40.101
    Stream #0:0: Video: h264 (libx264), yuv420p, 1280x720, q=-1--1, 30 fps, 90k tbn, 30 tbc
    Metadata:
      encoder         : Lavc56.60.100 libx264
    Stream #0:1: Audio: ac3 (ac3_fixed), 44100 Hz, stereo, s16p, 192 kb/s
    Metadata:
      encoder         : Lavc56.60.100 ac3_fixed
Stream mapping:
  Stream #0:0 -> #0:0 (rawvideo (native) -> h264 (libx264))
  Stream #1:0 -> #0:1 (pcm_s16le (native) -> ac3 (ac3_fixed))
Press [q] to stop, [?] for help
frame=    7 fps=0.0 q=21.0 size=       5kB time=00:00:00.23 bitrate= 180.5kbits/s frame=   15 fps= 15 q=21.0 size=      15kB time=00:00:00.50 bitrate= 240.6kbits/s frame=   21 fps= 14 q=21.0 size=      21kB time=00:00:00.70 bitrate= 249.2kbits/s frame=   28 fps= 14 q=21.0 size=      28kB time=00:00:00.93 bitrate= 246.5kbits/s frame=   35 fps= 13 q=21.0 size=      35kB time=00:00:01.16 bitrate= 244.9kbits/s frame=   42 fps= 13 q=21.0 size=      44kB time=00:00:01.40 bitrate= 260.0kbits/s frame=   49 fps= 13 q=21.0 size=      51kB time=00:00:01.63 bitrate= 256.9kbits/s frame=   56 fps= 13 q=21.0 size=      58kB time=00:00:01.86 bitrate= 254.6kbits/s frame=   63 fps= 13 q=22.0 size=      66kB time=00:00:02.10 bitrate= 255.7kbits/s frame=   70 fps= 13 q=21.0 size=      75kB time=00:00:02.33 bitrate= 263.0kbits/s frame=   77 fps= 13 q=21.0 size=      82kB time=00:00:02.56 bitrate= 261.3kbits/s frame=   79 fps= 13 q=21.0 Lsize=      85kB time=00:00:02.63 bitrate= 264.4kbits/s
video:8kB audio:61kB subtitle:0kB other streams:0kB global headers:0kB muxing overhead: 22.604090%
[libx264 @ 0x928ee0] frame I:2     Avg QP: 5.10  size:   760
[libx264 @ 0x928ee0] frame P:77    Avg QP: 6.78  size:    88
[libx264 @ 0x928ee0] mb I  I16..4: 99.9%  0.0%  0.1%
[libx264 @ 0x928ee0] mb P  I16..4:  0.0%  0.0%  0.0%  P16..4:  0.0%  0.0%  0.0%  0.0%  0.0%    skip:100.0%
[libx264 @ 0x928ee0] coded y,uvDC,uvAC intra: 0.0% 0.1% 0.0% inter: 0.0% 0.0% 0.0%
[libx264 @ 0x928ee0] i16 v,h,dc,p: 91%  0%  9%  0%
[libx264 @ 0x928ee0] i4 v,h,dc,ddl,ddr,vr,hd,vl,hu:  0%  0% 100%  0%  0%  0%  0%  0%  0%
[libx264 @ 0x928ee0] i8c dc,h,v,p: 98%  2%  0%  0%
[libx264 @ 0x928ee0] Weighted P-Frames: Y:0.0% UV:0.0%
[libx264 @ 0x928ee0] kb/s:25.23
Exiting normally, received signal 2.
这是我的.asoundrc文件

# playback PCM device: using loopback subdevice 0,0
pcm.amix {
  type dmix
  ipc_key 219345
  slave.pcm "hw:Loopback,0,0"
}

# capture PCM device: using loopback subdevice 0,1
pcm.asnoop {
  type dsnoop
  ipc_key 219346
  slave.pcm "hw:Loopback,0,1"
}

# duplex device combining our PCM devices defined above
pcm.aduplex {
  type asym
  playback.pcm "amix"
  capture.pcm "asnoop"
}

# ------------------------------------------------------
# for jack alsa_in and alsa_out: looped-back signal at other ends
pcm.ploop {
  type plug
  slave.pcm "hw:Loopback,1,1"
}

pcm.cloop {
  type dsnoop
  ipc_key 219348
  slave.pcm "hw:Loopback,1,0"
}

# ------------------------------------------------------
# default device

pcm.!default {
  type plug
  slave.pcm "aduplex"
}

我不知道如何调试这种问题,知道内存为什么会这么快地膨胀吗?

FFmpeg 2.8很古老。从当前git主分支获取一个构建,并在执行任何其他操作之前重试。(不确定是否有ALSA支持)或遵循。谢谢。我已升级到ffmpeg 4.2.2-1ubuntu1(通过存储库ppa:jonathonf/ffmpeg-4),但仍然存在相同的内存问题。您的命令和日志不匹配。仍然导致内存问题的最小命令是什么?FFmpeg 2.8很古老。从当前git主分支获取一个构建,并在执行任何其他操作之前重试。(不确定是否有ALSA支持)或遵循。谢谢。我已升级到ffmpeg 4.2.2-1ubuntu1(通过存储库ppa:jonathonf/ffmpeg-4),但仍然存在相同的内存问题。您的命令和日志不匹配。仍然导致内存问题的最小命令是什么?