• Christian Suloway's avatar
    avformat/hlsenc: added HLS encryption · 907ac20a
    Christian Suloway authored
    Added HLS encryption with -hls_key_info_file <key_info_file> option. The
    first line of key_info_file specifies the key URI written to the
    playlist. The key URL is used to access the encryption key during
    playback. The second line specifies the path to the key file used to
    obtain the key during the encryption process. The key file is read as a
    single packed array of 16 octets in binary format. The optional third
    line specifies the initialization vector (IV) as a hexadecimal string to
    be used instead of the segment sequence number (default) for encryption.
    Changes to key_info_file will result in segment encryption with the new
    key/IV and an entry in the playlist for the new key URI/IV.
    
    Key info file format:
    <key URI>
    <key file path>
    <IV> (optional)
    
    Example key URIs:
    http://server/file.key
    /path/to/file.key
    file.key
    
    Example key file paths:
    file.key
    /path/to/file.key
    
    Example IV:
    0123456789ABCDEF0123456789ABCDEF
    
    Example:
    ffmpeg -f lavfi -i testsrc -c:v h264 -hls_key_info_file file.keyinfo
    foo.m3u8
    
    file.keyinfo:
    http://server/file.key
    /path/to/file.key
    0123456789ABCDEF0123456789ABCDEF
    
    Example shell script:
    BASE_URL=${1:-'.'}
    openssl rand 16 > file.key
    echo $BASE_URL/file.key > file.keyinfo
    echo file.key >> file.keyinfo
    echo $(openssl rand -hex 16) >> file.keyinfo
    ffmpeg -f lavfi -re -i testsrc -c:v h264 -hls_flags delete_segments \
      -hls_key_info_file file.keyinfo out.m3u8
    --
    Signed-off-by: 's avatarChristian Suloway <csuloway@globaleagleent.com>
    Signed-off-by: 's avatarDan Dennedy <dan@dennedy.org>
    Signed-off-by: 's avatarMichael Niedermayer <michaelni@gmx.at>
    907ac20a
Name
Last commit
Last update
compat Loading commit data...
doc Loading commit data...
libavcodec Loading commit data...
libavdevice Loading commit data...
libavfilter Loading commit data...
libavformat Loading commit data...
libavresample Loading commit data...
libavutil Loading commit data...
libpostproc Loading commit data...
libswresample Loading commit data...
libswscale Loading commit data...
presets Loading commit data...
tests Loading commit data...
tools Loading commit data...
.gitattributes Loading commit data...
.gitignore Loading commit data...
COPYING.GPLv2 Loading commit data...
COPYING.GPLv3 Loading commit data...
COPYING.LGPLv2.1 Loading commit data...
COPYING.LGPLv3 Loading commit data...
CREDITS Loading commit data...
Changelog Loading commit data...
INSTALL.md Loading commit data...
LICENSE.md Loading commit data...
MAINTAINERS Loading commit data...
Makefile Loading commit data...
README.md Loading commit data...
RELEASE Loading commit data...
arch.mak Loading commit data...
cmdutils.c Loading commit data...
cmdutils.h Loading commit data...
cmdutils_common_opts.h Loading commit data...
cmdutils_opencl.c Loading commit data...
common.mak Loading commit data...
configure Loading commit data...
ffmpeg.c Loading commit data...
ffmpeg.h Loading commit data...
ffmpeg_dxva2.c Loading commit data...
ffmpeg_filter.c Loading commit data...
ffmpeg_opt.c Loading commit data...
ffmpeg_vda.c Loading commit data...
ffmpeg_vdpau.c Loading commit data...
ffplay.c Loading commit data...
ffprobe.c Loading commit data...
ffserver.c Loading commit data...
ffserver_config.c Loading commit data...
ffserver_config.h Loading commit data...
library.mak Loading commit data...
version.sh Loading commit data...