Frage

Hat jemand hatte kein Glück Streaming zur Arbeit mit openssl HTTP Live Streaming mit Apple verschlüsselt zu werden? Es scheint, ich bin fast da, aber mein Video nicht spielen, aber ich bekomme keine Fehler in Safari entweder (wie „Video ist unspielbar“ oder „Sie haben keine Berechtigung dieses Video zu spielen“, wenn ich den Schlüssel bekam falsch).

#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 wurde unter Verwendung dieser Dokumente als Leitfaden:

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

War es hilfreich?

Lösung

Okay, ich es herausgefunden ... Mein hexdump Befehl falsch war. Es sollte sein:

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

Andere Tipps

Beachten Sie außerdem die folgenden, wenn Sie mehr als 1 TS „chunk“ haben, und Sie sind für eine bitgenauen Ersatz für die Apple-Verschlüsselung Pipeline suchen. Standardmäßig aktualisiert das Apple-Verschlüsselungstool die IV (Initialisierungsvektor) Parameter für jedes der Stücke, die „die Stärke des Chiffre erhöht“, entsprechend der Pantos spec.

Die Implementierung dieses nur bedeutet, dass die Sequenznummer Bedürfnisse in hex und als -IV-Parameter auf OpenSSL weitergegeben codiert werden:

#!/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

Informationen von drei der oben genannten Kombination (OP, das Update für hexdump und die Informationen IV) ergaben eine Arbeitslösung wir . Nämlich:

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

Leider habe ich nicht die Werkzeuge, damit zu experimentieren. Es sieht aus wie Sie sorgfältig die Spezifikation gefolgt. Eine Sache, die ich tun würde, ist schnüffelt das Netzwerk do sicherstellen, dass die key.txt-Datei wird auf Safari heruntergeladen zu werden. Ich würde versuchen, auch explizit die IV Kommissionierung des IV-Attribut des EXT-X-KEY-Tages, z.B.

#EXT-X-KEY:METHOD=AES-128,URI="key.txt",IV=0x00000000000000000000000000000000
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top