Bash 加密HLS作为实时流工作,不';我不能做视频点播
我发现了一些用于将视频文件编码和加密到HLS流中的粗糙bash脚本,并对其进行了轻微编辑(我不知道bash): 这会导致类似这样的结果:Bash 加密HLS作为实时流工作,不';我不能做视频点播,bash,ffmpeg,http-live-streaming,Bash,Ffmpeg,Http Live Streaming,我发现了一些用于将视频文件编码和加密到HLS流中的粗糙bash脚本,并对其进行了轻微编辑(我不知道bash): 这会导致类似这样的结果: #EXTM3U #EXT-X-VERSION:3 #EXT-X-MEDIA-SEQUENCE:0 #EXT-X-KEY:METHOD=AES-128,URI=output.key #EXT-X-TARGETDURATION:11 #EXTINF:10.176833, output-000.ts #EXTINF:8.341667, output-001.ts #
#EXTM3U
#EXT-X-VERSION:3
#EXT-X-MEDIA-SEQUENCE:0
#EXT-X-KEY:METHOD=AES-128,URI=output.key
#EXT-X-TARGETDURATION:11
#EXTINF:10.176833,
output-000.ts
#EXTINF:8.341667,
output-001.ts
#EXTINF:8.341667,
output-002.ts
#EXTINF:3.136467,
output-003.ts
#EXT-X-ENDLIST
这几乎奏效了。不过我需要的是视频点播,而不是直播。所以,我添加了一行:
#EXT-X-PLAYLIST-TYPE:VOD
现在它不适用于加密段,只适用于未加密段。我以为所有的片段都是分开加密的?此外,即使是未加密的文件,也不存在有关总长度的信息。我该如何解决这个问题呢?以下是一些基于我自己实验的建议,这些建议似乎在VLC、iOS和Android上都能奏效
- 初始化向量
当播放列表中未指定
时,每个片段的默认IV
与媒体序列相同。确保段000的IV=0,段001的IV=1,依此类推IV
- 引用
iOS似乎不喜欢播放列表中的URI
不使用引号,因此请使用URI
EXT-X-KEY:METHOD=AES-128,URI=“output.KEY”
- 播放列表类型
VOD
是可选的,只要您在末尾有EXT-X-PLAYLIST-TYPE
,播放列表将被视为静态的,并允许您查找。无论是否有此标签,VLC和iOS都会将您的播放列表视为VOD 关于媒体持续时间,VLC显示0 wile iOS显示正确的值 如果您确实指定了EXT-X-ENDLIST
,请确保它位于EXT-X-PLAYLIST-TYPE:VOD
之后,否则VLC不会喜欢它EXT-X-VERSION:3
EXT-X-PLAYLIST-TYPE
是可选的。如果添加EXT-X-ENDLIST
,则表示播放列表包含最后一段,不再刷新。如何在ios设备上测试流?此外,EXT-X-KEY
适用于片段,播放列表中可以有多个片段。我认为标签的正确位置应该正好在第一个熄灭
之前。这应该不会有什么不同,但谁知道呢……我正在通过VLCNope在windows上测试,订单似乎并没有改变任何东西。我以为多个关键点需要#EXT-X-不连续性,但它适用于多个单独的文件。按键旋转有一些不同的机制。我尝试了一个像你这样的例子(根据媒体序列使用默认的IVs),它在VLC 2.1.6、iOS 8.3和Android 4.4.4上使用或不使用EXT-X-PLAYLIST-TYPE:VOD
都可以正常工作
#EXT-X-PLAYLIST-TYPE:VOD