我们正在使用openssl aes-128 encryption
在HLS video streaming
上为Apple播放流媒体。
以下是用于aes-128 encryption
openssl aes-128-cbc -salt -k <HEXKey> -iv <HEXIV> -in <INFILE> -out <OUTFILE>
以下我的Playlist / Index
文件用于hls流媒体。
#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 method
还是playlist file
请帮帮我。我会感激的。
先谢谢
编辑:
我觉得,如果有任何不妥之处,可能会有所帮助。
以下是我用于创建十六进制key
和IV
openssl enc -aes-128-cbc -k String@MyKey -P -md sha1
如果有任何问题,请帮助我。
现在我的播放列表文件正在使用Media Stream Validator
进行解析,但在验证媒体时会出现以下错误。
unable to parse segment due to encryption
请帮助任何人。
答案 0 :(得分:2)
您的问题实际上是文件'key.txt'。 HLS规范说#EXT-X-KEY标记中的URI属性必须指向一个二进制格式的16个八位字节数组的文件,而不是你提供的十六进制字符串。
有关详细信息,请参阅:http://tools.ietf.org/html/draft-pantos-http-live-streaming-10#section-5
答案 1 :(得分:2)
好吧,实际问题是key.txt
文件,我刚才在几个小时之前发现了这个文件。
我的key.txt
不应包含hexkey
,但应包含16bytes
密钥。
所以我的密钥创建方法并在加密方法和playlist
文件中使用它是错误的步骤。
以下是我所做的更改及其开始工作。
创建密钥的命令
openssl rand -base64 12
现在我在key.txt文件中添加了这个键,而我的index.m3u8文件指向了这个密钥文件。
用于加密,使用在<hex-key>
openssl aes-128-cbc -e -in <infile> -out <outfile> -p -nosalt -iv <hex-iv> -K <hex-key>
答案 2 :(得分:0)
您的EXT-X-KEY语法错误:
在密钥uri之前应该 URI 而不是密钥。
#EXT-X-KEY:METHOD=AES-128,URI="http://xxx.xxxx.xxx/key.txt",IV=0x00000000000000000000000000000000
答案 3 :(得分:0)