[FFmpeg-trac] #9243(ffmpeg:new): rising memory consumption when -decryption_key is used

FFmpeg trac at avcodec.org
Sat May 15 04:23:40 EEST 2021


#9243: rising memory consumption when -decryption_key is used
-------------------------------------+-------------------------------------
             Reporter:  Ammar        |                    Owner:  (none)
                 Type:  defect       |                   Status:  new
             Priority:  normal       |                Component:  ffmpeg
              Version:  git-master   |               Resolution:
             Keywords:  cenc,        |               Blocked By:
  Widevine, HLS, DASH                |
             Blocking:               |  Reproduced by developer:  0
Analyzed by developer:  0            |
-------------------------------------+-------------------------------------
Description changed by Ammar:

Old description:

> I am trying to translate a CENC-encrypted live DASH stream to an HLS one,
> by piping dash segments one by one into ffmpeg. The result is perfect,
> but memory usage of the long-running process rises steadily forever.
>
> Command line:
> {{{
> % ffmpeg -f mp4 -decryption_key 9ab6fa563cab6ba9cb30f18fd57f1f3b -i
> /tmp/videoPipe -f mp4 -decryption_key 9ab6fa563cab6ba9cb30f18fd57f1f3b -i
> /tmp/audioPipe -y -c copy -f hls /var/www/html/index.m3u8
>

> fmpeg version N-57204-gc7c138e411-static
> https://johnvansickle.com/ffmpeg/  Copyright (c) 2000-2021 the FFmpeg
> developers
> built with gcc 8 (Debian 8.3.0-6)
> configuration: --enable-gpl --enable-version3 --enable-static --disable-
> debug --disable-ffplay --disable-indev=sndio --disable-outdev=sndio
> --cc=gcc --enable-fontconfig --enable-frei0r --enable-gnutls --enable-gmp
> --enable-libgme --enable-gray --enable-libaom --enable-libfribidi
> --enable-libass --enable-libvmaf --enable-libfreetype --enable-libmp3lame
> --enable-libopencore-amrnb --enable-libopencore-amrwb --enable-
> libopenjpeg --enable-librubberband --enable-libsoxr --enable-libspeex
> --enable-libsrt --enable-libvorbis --enable-libopus --enable-libtheora
> --enable-libvidstab --enable-libvo-amrwbenc --enable-libvpx --enable-
> libwebp --enable-libx264 --enable-libx265 --enable-libxml2 --enable-
> libdav1d --enable-libxvid --enable-libzvbi --enable-libzimg
> libavutil      57.  0.100 / 57.  0.100
> libavcodec     59.  0.100 / 59.  0.100
> libavformat    59.  0.100 / 59.  0.100
> libavdevice    59.  0.100 / 59.  0.100
> libavfilter     8.  0.101 /  8.  0.101
> libswscale      6.  0.100 /  6.  0.100
> libswresample   4.  0.100 /  4.  0.100
> libpostproc    56.  0.100 / 56.  0.100
> Input #0, mov,mp4,m4a,3gp,3g2,mj2, from '/tmp/videoPipe':
> Metadata:
> major_brand     : isom
> minor_version   : 1
> compatible_brands: isomavc1dash
> creation_time   : 2021-05-14T23:49:00.000000Z
> Duration: 32405:58:20.16, start: 116661492.240000, bitrate: N/A
> Stream #0:0(und): Video: h264 (Main) (avc1 / 0x31637661), yuvj420p(pc,
> bt470bg), 640x360 [SAR 1:1 DAR 16:9], 25 fps, 25 tbr, 25 tbn (default)
> Metadata:
> creation_time   : 2021-05-14T23:49:00.000000Z
> handler_name    : ETI ISO Video Media Handler
> vendor_id       : [0][0][0][0]
> encoder         : Elemental H.264
> Side data:
> unknown side data type 24 (67 bytes)
> Input #1, mov,mp4,m4a,3gp,3g2,mj2, from '/tmp/audioPipe':
> Metadata:
> major_brand     : isom
> minor_version   : 1
> compatible_brands: isomavc1dash
> creation_time   : 2021-05-14T21:51:25.000000Z
> Duration: 32405:58:20.21, start: 116661492.187021, bitrate: N/A
> Stream #1:0(und): Audio: aac (HE-AAC) (mp4a / 0x6134706D), 48000 Hz,
> stereo, fltp (default)
> Metadata:
> creation_time   : 2021-05-14T21:51:25.000000Z
> handler_name    : ETI ISO Audio Media Handler
> vendor_id       : [0][0][0][0]
> Side data:
> unknown side data type 24 (67 bytes)
> Output #0, hls, to '/var/www/html/index.m3u8':
> Metadata:
> major_brand     : isom
> minor_version   : 1
> compatible_brands: isomavc1dash
> encoder         : Lavf59.0.100
> Stream #0:0(und): Video: h264 (Main) (avc1 / 0x31637661), yuvj420p(pc,
> bt470bg), 640x360 [SAR 1:1 DAR 16:9], q=2-31, 25 fps, 25 tbr, 90k tbn
> (default)
> Metadata:
> creation_time   : 2021-05-14T23:49:00.000000Z
> handler_name    : ETI ISO Video Media Handler
> vendor_id       : [0][0][0][0]
> encoder         : Elemental H.264
>     Side data:
>       unknown side data type 24 (67 bytes)
>   Stream #0:1(und): Audio: aac (HE-AAC) (mp4a / 0x6134706D), 48000 Hz,
> stereo, fltp (default)
>     Metadata:
>       creation_time   : 2021-05-14T21:51:25.000000Z
>       handler_name    : ETI ISO Audio Media Handler
>       vendor_id       : [0][0][0][0]
>     Side data:
>       unknown side data type 24 (67 bytes)
> Stream mapping:
>   Stream #0:0 -> #0:0 (copy)
>   Stream #1:0 -> #0:1 (copy)
> frame=    0 fps=0.0 q=-1.0 size=N/A time=00:00:00.00 bitrate=N/A speed=
> 0x
> frame=   16 fps=0.0 q=-1.0 size=N/A time=00:00:00.56 bitrate=N/A speed=
> 1.1x
> frame=   29 fps= 28 q=-1.0 size=N/A time=00:00:01.08 bitrate=N/A
> speed=1.06x
> frame=   42 fps= 27 q=-1.0 size=N/A time=00:00:01.60 bitrate=N/A
> speed=1.05x
> frame=   55 fps= 27 q=-1.0 size=N/A time=00:00:02.12 bitrate=N/A
> speed=1.04x
> frame=   68 fps= 27 q=-1.0 size=N/A time=00:00:02.64 bitrate=N/A
> speed=1.04x
> frame=   80 fps= 26 q=-1.0 size=N/A time=00:00:03.12 bitrate=N/A
> speed=1.02x
> [mov,mp4,m4a,3gp,3g2,mj2 @ 0x65976c0] Thread message queue blocking;
> consider raising the thread_queue_size option (current value: 1024)
> frame=   93 fps= 26 q=-1.0 size=N/A time=00:00:03.64 bitrate=N/A
> speed=1.02x
> frame=  106 fps= 26 q=-1.0 size=N/A time=00:00:04.16 bitrate=N/A
> speed=1.02x
> frame=  119 fps= 26 q=-1.0 size=N/A time=00:00:04.68 bitrate=N/A
> speed=1.02x
> [mov,mp4,m4a,3gp,3g2,mj2 @ 0x654a2c0] Thread message queue blocking;
> consider raising the thread_queue_size option (current value: 1024)
> frame=  132 fps= 26 q=-1.0 size=N/A time=00:00:05.20 bitrate=N/A
> speed=1.02x
> frame=  144 fps= 26 q=-1.0 size=N/A time=00:00:05.68 bitrate=N/A
> speed=1.01x
> [hls @ 0x67c4f00] Opening '/var/www/html/segment-1.ts.tmp' for writing
> [hls @ 0x67c4f00] Opening '/var/www/html/index.m3u8.tmp' for writing
> frame=  157 fps= 26 q=-1.0 size=N/A time=00:00:06.20 bitrate=N/A
> speed=1.01x
> frame=  170 fps= 26 q=-1.0 size=N/A time=00:00:06.72 bitrate=N/A
> speed=1.02x
> frame=  182 fps= 26 q=-1.0 size=N/A time=00:00:07.20 bitrate=N/A
> speed=1.01x
> frame=  194 fps= 25 q=-1.0 size=N/A time=00:00:07.68 bitrate=N/A
> speed=1.01x
> [hls @ 0x67c4f00] Non-monotonous DTS in output stream 0:0; previous:
> 709200, current: -7200; changing to 709201. This may result in incorrect
> timestamps in the output file.
> [hls @ 0x67c4f00] Non-monotonous DTS in output stream 0:0; previous:
> 709201, current: -3600; changing to 709202. This may result in incorrect
> timestamps in the output file.
> frame=  407 fps= 50 q=-1.0 size=N/A time=00:00:08.20 bitrate=N/A
> speed=1.01x
> frame=  420 fps= 49 q=-1.0 size=N/A time=00:00:08.72 bitrate=N/A
> speed=1.01x
> ....
> }}}
>
> Input files are FIFO files into which I push the init.mp4 file first, and
> then sequentially DASH fMP4 segments as they become available, via an
> external script.
> Restarting the process every once in a while works, but I'd rather
> actually fix the problem if possible.

New description:

 I am trying to translate a CENC-encrypted live DASH stream to an HLS one,
 by piping dash segments one by one into ffmpeg. The result is perfect, but
 memory usage of the long-running process rises steadily forever.

 Command line:
 {{{
 % ffmpeg -f mp4 -decryption_key 9ab6fa563cab6ba9cb30f18fd57f1f3b -i
 /tmp/videoPipe -f mp4 -decryption_key 9ab6fa563cab6ba9cb30f18fd57f1f3b -i
 /tmp/audioPipe -y -c copy -f hls /var/www/html/index.m3u8


 fmpeg version N-57204-gc7c138e411-static https://johnvansickle.com/ffmpeg/
 Copyright (c) 2000-2021 the FFmpeg developers
 built with gcc 8 (Debian 8.3.0-6)
 configuration: --enable-gpl --enable-version3 --enable-static --disable-
 debug --disable-ffplay --disable-indev=sndio --disable-outdev=sndio
 --cc=gcc --enable-fontconfig --enable-frei0r --enable-gnutls --enable-gmp
 --enable-libgme --enable-gray --enable-libaom --enable-libfribidi
 --enable-libass --enable-libvmaf --enable-libfreetype --enable-libmp3lame
 --enable-libopencore-amrnb --enable-libopencore-amrwb --enable-libopenjpeg
 --enable-librubberband --enable-libsoxr --enable-libspeex --enable-libsrt
 --enable-libvorbis --enable-libopus --enable-libtheora --enable-libvidstab
 --enable-libvo-amrwbenc --enable-libvpx --enable-libwebp --enable-libx264
 --enable-libx265 --enable-libxml2 --enable-libdav1d --enable-libxvid
 --enable-libzvbi --enable-libzimg
 libavutil      57.  0.100 / 57.  0.100
 libavcodec     59.  0.100 / 59.  0.100
 libavformat    59.  0.100 / 59.  0.100
 libavdevice    59.  0.100 / 59.  0.100
 libavfilter     8.  0.101 /  8.  0.101
 libswscale      6.  0.100 /  6.  0.100
 libswresample   4.  0.100 /  4.  0.100
 libpostproc    56.  0.100 / 56.  0.100
 Input #0, mov,mp4,m4a,3gp,3g2,mj2, from '/tmp/videoPipe':
 Metadata:
 major_brand     : isom
 minor_version   : 1
 compatible_brands: isomavc1dash
 creation_time   : 2021-05-14T23:49:00.000000Z
 Duration: 32405:58:20.16, start: 116661492.240000, bitrate: N/A
 Stream #0:0(und): Video: h264 (Main) (avc1 / 0x31637661), yuvj420p(pc,
 bt470bg), 640x360 [SAR 1:1 DAR 16:9], 25 fps, 25 tbr, 25 tbn (default)
 Metadata:
 creation_time   : 2021-05-14T23:49:00.000000Z
 handler_name    : ETI ISO Video Media Handler
 vendor_id       : [0][0][0][0]
 encoder         : Elemental H.264
 Side data:
 unknown side data type 24 (67 bytes)
 Input #1, mov,mp4,m4a,3gp,3g2,mj2, from '/tmp/audioPipe':
 Metadata:
 major_brand     : isom
 minor_version   : 1
 compatible_brands: isomavc1dash
 creation_time   : 2021-05-14T21:51:25.000000Z
 Duration: 32405:58:20.21, start: 116661492.187021, bitrate: N/A
 Stream #1:0(und): Audio: aac (HE-AAC) (mp4a / 0x6134706D), 48000 Hz,
 stereo, fltp (default)
 Metadata:
 creation_time   : 2021-05-14T21:51:25.000000Z
 handler_name    : ETI ISO Audio Media Handler
 vendor_id       : [0][0][0][0]
 Side data:
 unknown side data type 24 (67 bytes)
 Output #0, hls, to '/var/www/html/index.m3u8':
 Metadata:
 major_brand     : isom
 minor_version   : 1
 compatible_brands: isomavc1dash
 encoder         : Lavf59.0.100
 Stream #0:0(und): Video: h264 (Main) (avc1 / 0x31637661), yuvj420p(pc,
 bt470bg), 640x360 [SAR 1:1 DAR 16:9], q=2-31, 25 fps, 25 tbr, 90k tbn
 (default)
 Metadata:
 creation_time   : 2021-05-14T23:49:00.000000Z
 handler_name    : ETI ISO Video Media Handler
 vendor_id       : [0][0][0][0]
 encoder         : Elemental H.264
     Side data:
       unknown side data type 24 (67 bytes)
   Stream #0:1(und): Audio: aac (HE-AAC) (mp4a / 0x6134706D), 48000 Hz,
 stereo, fltp (default)
     Metadata:
       creation_time   : 2021-05-14T21:51:25.000000Z
       handler_name    : ETI ISO Audio Media Handler
       vendor_id       : [0][0][0][0]
     Side data:
       unknown side data type 24 (67 bytes)
 Stream mapping:
   Stream #0:0 -> #0:0 (copy)
   Stream #1:0 -> #0:1 (copy)
 frame=    0 fps=0.0 q=-1.0 size=N/A time=00:00:00.00 bitrate=N/A speed=
 0x
 frame=   16 fps=0.0 q=-1.0 size=N/A time=00:00:00.56 bitrate=N/A speed=
 1.1x
 frame=   29 fps= 28 q=-1.0 size=N/A time=00:00:01.08 bitrate=N/A
 speed=1.06x
 frame=   42 fps= 27 q=-1.0 size=N/A time=00:00:01.60 bitrate=N/A
 speed=1.05x
 frame=   55 fps= 27 q=-1.0 size=N/A time=00:00:02.12 bitrate=N/A
 speed=1.04x
 frame=   68 fps= 27 q=-1.0 size=N/A time=00:00:02.64 bitrate=N/A
 speed=1.04x
 frame=   80 fps= 26 q=-1.0 size=N/A time=00:00:03.12 bitrate=N/A
 speed=1.02x
 [mov,mp4,m4a,3gp,3g2,mj2 @ 0x65976c0] Thread message queue blocking;
 consider raising the thread_queue_size option (current value: 1024)
 frame=   93 fps= 26 q=-1.0 size=N/A time=00:00:03.64 bitrate=N/A
 speed=1.02x
 frame=  106 fps= 26 q=-1.0 size=N/A time=00:00:04.16 bitrate=N/A
 speed=1.02x
 frame=  119 fps= 26 q=-1.0 size=N/A time=00:00:04.68 bitrate=N/A
 speed=1.02x
 [mov,mp4,m4a,3gp,3g2,mj2 @ 0x654a2c0] Thread message queue blocking;
 consider raising the thread_queue_size option (current value: 1024)
 frame=  132 fps= 26 q=-1.0 size=N/A time=00:00:05.20 bitrate=N/A
 speed=1.02x
 frame=  144 fps= 26 q=-1.0 size=N/A time=00:00:05.68 bitrate=N/A
 speed=1.01x
 [hls @ 0x67c4f00] Opening '/var/www/html/segment-1.ts.tmp' for writing
 [hls @ 0x67c4f00] Opening '/var/www/html/index.m3u8.tmp' for writing
 frame=  157 fps= 26 q=-1.0 size=N/A time=00:00:06.20 bitrate=N/A
 speed=1.01x
 frame=  170 fps= 26 q=-1.0 size=N/A time=00:00:06.72 bitrate=N/A
 speed=1.02x
 frame=  182 fps= 26 q=-1.0 size=N/A time=00:00:07.20 bitrate=N/A
 speed=1.01x
 frame=  194 fps= 25 q=-1.0 size=N/A time=00:00:07.68 bitrate=N/A
 speed=1.01x
 [hls @ 0x67c4f00] Non-monotonous DTS in output stream 0:0; previous:
 709200, current: -7200; changing to 709201. This may result in incorrect
 timestamps in the output file.
 [hls @ 0x67c4f00] Non-monotonous DTS in output stream 0:0; previous:
 709201, current: -3600; changing to 709202. This may result in incorrect
 timestamps in the output file.
 frame=  407 fps= 50 q=-1.0 size=N/A time=00:00:08.20 bitrate=N/A
 speed=1.01x
 frame=  420 fps= 49 q=-1.0 size=N/A time=00:00:08.72 bitrate=N/A
 speed=1.01x
 ....
 }}}

 Input files are FIFO pipes into which I push the init.mp4 file first, and
 then sequentially DASH fMP4 segments as they become available, via an
 external script.
 Restarting the process every once in a while works, but I'd rather
 actually fix the problem if possible.

--
-- 
Ticket URL: <https://trac.ffmpeg.org/ticket/9243#comment:1>
FFmpeg <https://ffmpeg.org>
FFmpeg issue tracker


More information about the FFmpeg-trac mailing list