2012-10-24 37 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> 
相关问题