[FFmpeg-user] Why ffmpeg cannot generate the `hls_enc_key`?

Alexey Rodionov fluorescent.hallucinogen at gmail.com
Fri Jun 23 14:55:00 EEST 2023

According to the docs:

-hls_enc enc
Enable (1) or disable (0) the AES128 encryption. When enabled every
segment generated is encrypted and the encryption key is saved as
playlist name.key.

-hls_enc_key key
16-octet key to encrypt the segments, by default it is randomly generated.

I expect that `hls_enc_key` can be omitted and ffmpeg itself by
default will generate the key instead of running:

openssl rand -hex 16

But I get the following error. What am I doing wrong?

ffmpeg -i input.mp4 -f hls -hls_enc 1 stream.m3u8

ffmpeg version 2023-06-15-git-41229ef705-full_build Copyright (c)
2000-2023 the FFmpeg developers
  built with gcc 12.2.0 (Rev10, Built by MSYS2 project)
  configuration: --enable-gpl --enable-version3 --enable-static
--disable-w32threads --disable-autodetect --enable-fontconfig
--enable-iconv --enable-gnutls --enable-libxml2 --enable-gmp
--enable-bzlib --enable-lzma --enable-libsnappy --enable-zlib
--enable-librist --enable-libsrt --enable-libssh --enable-libzmq
--enable-avisynth --enable-libbluray --enable-libcaca --enable-sdl2
--enable-libaribb24 --enable-libaribcaption --enable-libdav1d
--enable-libdavs2 --enable-libuavs3d --enable-libzvbi
--enable-librav1e --enable-libsvtav1 --enable-libwebp --enable-libx264
--enable-libx265 --enable-libxavs2 --enable-libxvid --enable-libaom
--enable-libjxl --enable-libopenjpeg --enable-libvpx
--enable-mediafoundation --enable-libass --enable-frei0r
--enable-libfreetype --enable-libfribidi --enable-liblensfun
--enable-libvidstab --enable-libvmaf --enable-libzimg --enable-amf
--enable-cuda-llvm --enable-cuvid --enable-ffnvcodec --enable-nvdec
--enable-nvenc --enable-d3d11va --enable-dxva2 --enable-libvpl
--enable-libshaderc --enable-vulkan --enable-libplacebo
--enable-opencl --enable-libcdio --enable-libgme --enable-libmodplug
--enable-libopenmpt --enable-libopencore-amrwb --enable-libmp3lame
--enable-libshine --enable-libtheora --enable-libtwolame
--enable-libvo-amrwbenc --enable-libcodec2 --enable-libilbc
--enable-libgsm --enable-libopencore-amrnb --enable-libopus
--enable-libspeex --enable-libvorbis --enable-ladspa --enable-libbs2b
--enable-libflite --enable-libmysofa --enable-librubberband
--enable-libsoxr --enable-chromaprint
  libavutil      58. 13.100 / 58. 13.100
  libavcodec     60. 18.100 / 60. 18.100
  libavformat    60.  6.100 / 60.  6.100
  libavdevice    60.  2.100 / 60.  2.100
  libavfilter     9.  8.101 /  9.  8.101
  libswscale      7.  3.100 /  7.  3.100
  libswresample   4. 11.100 /  4. 11.100
  libpostproc    57.  2.100 / 57.  2.100
Input #0, mov,mp4,m4a,3gp,3g2,mj2, from 'input.mp4':
    major_brand     : dash
    minor_version   : 0
    compatible_brands: iso6avc1mp41
    creation_time   : 2023-01-30T09:32:47.000000Z
  Duration: 00:00:39.22, start: 0.000000, bitrate: 4931 kb/s
  Stream #0:0[0x1](und): Video: h264 (High) (avc1 / 0x31637661),
yuv420p(tv, bt709, progressive), 1920x1080 [SAR 1:1 DAR 16:9], 619
kb/s, 59.94 fps, 59.94 tbr, 60k tbn (default)
      creation_time   : 2023-01-30T09:32:47.000000Z
      handler_name    : ISO Media file produced by Google Inc.
      vendor_id       : [0][0][0][0]
Stream mapping:
  Stream #0:0 -> #0:0 (h264 (native) -> h264 (libx264))
Press [q] to stop, [?] for help
[libx264 @ 000001951dfb04c0] using SAR=1/1
[libx264 @ 000001951dfb04c0] using cpu capabilities: MMX2 SSE2Fast
[libx264 @ 000001951dfb04c0] profile High, level 4.2, 4:2:0, 8-bit
[libx264 @ 000001951dfb04c0] 264 - core 164 r3107 a8b68eb -
H.264/MPEG-4 AVC codec - Copyleft 2003-2023 -
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=24
lookahead_threads=4 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
[hls @ 000001951dda67c0] Cannot generate a strong random key
[out#0/hls @ 000001951dc6bec0] Could not write header (incorrect codec
parameters ?): Function not implemented
Conversion failed!

More information about the ffmpeg-user mailing list