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

Alexey Rodionov fluorescent.hallucinogen at gmail.com
Thu Jul 6 22:19:44 EEST 2023


I've opened https://trac.ffmpeg.org/ticket/10441.

> 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':
>   Metadata:
>     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)
>     Metadata:
>       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
> SSSE3 SSE4.2 AVX FMA3 BMI2 AVX2
> [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
> aq=1:1.00
> [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