2012-10-24 75 views
0

我們使用openssl aes-128 encryption作爲針對Apple的HLS video streaming流媒體。針對Apple HTTP實時流式傳輸的openssl aes-128加密問題

下面是被用於HLS流用於aes-128 encryption

openssl aes-128-cbc -salt -k <HEXKey> -iv <HEXIV> -in <INFILE> -out <OUTFILE> 
Playlist/Index文件

和下面的命令。

#EXTM3U 
#EXT-X-MEDIA-SEQUENCE:0 
#EXT-X-ALLOW-CACHE:NO 
#EXT-X-VERSION:2 
#EXT-X-KEY:METHOD=AES-128,URI="http://xxx.xxxx.xxx/key.txt",IV=0x00000000000000000000000000000000 
#EXT-X-TARGETDURATION:10 
#EXTINF:10, 
http://xxx.xxxx.xxx/encry.ts 
#EXT-X-ENDLIST 

其中,key.txt包含六角鍵形式0x00000000000000000000000000000000的。

但是這不起作用,並且沒有在IOS設備上播放媒體。作爲This movie could not be played提供錯誤

我不確定,它有什麼問題。是這個問題的encryption methodplaylist file

請幫助我。我會欣賞。

由於提前

編輯:

我覺得,以下幾個信息,可以幫助,如果任何錯誤在。

下面是命令我使用的創建六角keyIV

openssl enc -aes-128-cbc -k [email protected] -P -md sha1 

請幫我如果有什麼不妥的地方。

現在我的播放列表文件與Media Stream Validator一起解析正常,但在驗證媒體時會給出以下錯誤。

unable to parse segment due to encryption 

請幫助任何人。

回答

2

你的問題實際上是與文件'key.txt'。 HLS規範指出#EXT-X-KEY標記內的URI屬性必須指向一個文件,其中包含二進制格式的16個八位字節的數組,而不是您提供的十六進制字符串。

欲瞭解更多信息,請參閱:http://tools.ietf.org/html/draft-pantos-http-live-streaming-10#section-5

+0

是@ oscahie,我已經解決了問題。:),當我來這裏更新我的帖子時,如果其他人完成相同的錯誤,它可能會很有用。我得到了正確的答案......我從一週以來就在等待:)。並再次感謝您的確認。 – meghana

0

你的EXT-X-KEY語法是錯誤的:

之前的關鍵URI應該是URI,而不是重點

#EXT-X-KEY:METHOD=AES-128,URI="http://xxx.xxxx.xxx/key.txt",IV=0x00000000000000000000000000000000 
+0

感謝@vipw,您的回覆。但它也不適用於'URI'。 :(你認爲,有沒有其他的流程,比如'加密方法',或'索引文件'? – meghana

+0

或者是否還有其他方面我們應該注意,這可能會失敗 – meghana

2

那麼,實際的問題是key.txt文件,我幾個小時前剛剛發現。 我的key.txt,不應該包含hexkey,但應該包含16bytes的關鍵。

所以我的密鑰創建方法和使用它在加密方法和playlist文件,是錯誤的一步。

以下是我所做的更改,並開始工作。創造的關鍵

openssl rand -base64 12 

命令現在我加在-key.txt文件中此鍵,和我的index.m3u8文件,指向此密鑰文件。

comnand進行加密,使用使用上述關鍵的C#hexdump都在<hex-key>

openssl aes-128-cbc -e -in <infile> -out <outfile> -p -nosalt -iv <hex-iv> -K <hex-key> 
相關問題