Pregunta

Alguien ha tenido un poco de suerte conseguir cifrado de streaming para trabajar con HTTP Live Streaming de Apple utilizando OpenSSL? Parece que casi estoy allí pero mi vídeo no se reproduce, pero no me sale algún error en Safari o bien (como "El video no se puede reproducir" o "Usted no tiene permiso para ver éste video" cuando llegué a la tecla incorrecto).

#bash script:
keyFile="key.txt"
openssl rand 16 > $keyFile
hexKey=$(cat key.txt | hexdump -e '"%x"')
hexIV='0'
openssl aes-128-cbc -e -in $fileName -out $encryptedFileName -p -nosalt -iv ${hexIV}  -K ${hexKey}


#my playlist file:
#EXTM3U
#EXT-X-TARGETDURATION:000020
#EXT-X-MEDIA-SEQUENCE:0
#EXT-X-KEY:METHOD=AES-128,URI="key.txt"
#EXTINF:20, no desc
test.ts.enc
#EXT-X-ENDLIST

I estaba usando estos documentos como guía:

http://tools.ietf.org/html/draft -pantos-http-live-streaming a

¿Fue útil?

Solución

De acuerdo, lo he descubierto ... Mi comando hexdump estaba mal. Debe ser:?

hexKey=$(cat key.txt | hexdump -e '16/1 "%02x"')

Otros consejos

También hay que tener en cuenta lo siguiente, si tiene más de 1 TS "trozo", y que está buscando un reemplazo bit a bit de encriptación para el gasoducto de Apple. Por defecto, la herramienta de cifrado Apple actualiza el parámetro IV (vector de inicialización) para cada uno de los trozos, que "aumenta la resistencia de la cifra", de acuerdo con la especificación Pantos.

La implementación de esto sólo significa que las necesidades de número de secuencia a ser codificado en hexadecimal y pasan como el parámetro -IV a openssl:

#!/bin/bash
keyFile="key.txt"
openssl rand 16 > $keyFile
hexKey=$(cat key.txt | hexdump -e '"%x"')
# hexIV='0'
for i in {0..number_of_TS_chunks}
do
    hexIV=`printf '%032x' $i`
    openssl aes-128-cbc -e -in $fileName -out $encryptedFileName -p -nosalt -iv ${hexIV} -K ${hexKey}
done

combinando la información de tres de los anteriores (la OP, el arreglo para hexdump y la información IV) produjo una solución de trabajo para nos . A saber:

openssl rand 16 > static.key

key_as_hex=$(cat static.key | hexdump -e '16/1 "%02x"')

for i in {0..9}; do
    init_vector=`printf '%032x' $i`
    openssl aes-128-cbc -e -in video_low_$(($i+1)).ts -out video_low_enc_$(($i+1)).ts -p -nosalt -iv $init_vector -K $key_as_hex
done

Por desgracia, no tienen las herramientas para experimentar con esto. Parece que ha seguido cuidadosamente la especificación. Una cosa que me gustaría hacer es oler la red do asegúrese de que el archivo key.txt se está descargado en Safari. También me tratar explícitamente recoger la IV utilizando el atributo IV de la etiqueta EXT-X-KEY, por ejemplo

#EXT-X-KEY:METHOD=AES-128,URI="key.txt",IV=0x00000000000000000000000000000000
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top