在 Android 中使用 Signed URL 从 Amazon S3 + CloudFront 播放 m3u8
Playing m3u8 from Amazon S3 + CloudFront with Signed URL in Android
我能够访问带有签名 URL 的播放列表文件 (.m3u8)。但问题是,要访问播放列表中的流文件(.ts),每个文件的 URL 也需要签名。
例如:
我可以访问带有签名的 playlist.m3u8 URL http://abcdefg.cloudfront.net/media/playlist.m3u8?Expires=xxxxxxxx&Policy=yyyyyyyyyyyyy&Signature=zzzzzzzzzzzzzz&Key-Pair-Id=kkkkkkkkkkkkkkkkk
#EXTM3U
#EXT-X-TARGETDURATION:10
#EXTINF:13
playlist-00000.ts
#EXTINF:12,
playlist-00001.ts
#EXTINF:12,
playlist-00002.ts
但是里面的每个ts文件也应该像
一样访问
我必须为播放列表中的每个 .ts 文件签名 URL。
不幸的是,我没有看到任何媒体播放器可以在 URL 获取 ts 文件之前处理附加参数。
如果可能的话,我需要这样的播放器回调:
public String onStreamFileReadyForPlaying(String pathToTsFile)
{
//I could append the parameters here
return pathToTsFile + "?Expires=xxxxxxxx&Policy=yyyyyyyyyyyyy&Signature=zzzzzzzzzzzzzz&Key-Pair-Id=kkkkkkkkkkkkkkkkk"
}
只需对播放列表中的 URL 进行签名即可。
仅此而已。
有“使用签名 URL”和“签名 Cookie”两种方式
我认为您必须使用“签名 Cookie”
我在下面找到 link 为什么要使用“签名 Cookie”
https://docs.amazonaws.cn/en_us/AmazonCloudFront/latest/DeveloperGuide/private-content-choosing-signed-urls-cookies.html
Use signed cookies in the following cases:
- You want to provide access to multiple restricted files, for example, all of the files for a video in
HLS format
or all of the
files in the subscribers' area of website.
我还没有尝试“签名 Cookie”。但我有同样的问题。
如果你已经完成了“Signed Cookies”,你能反馈一下吗?
下面link是如何使用“Sigend Cookies”的文档
https://docs.aws.amazon.com/AmazonCloudFront/latest/DeveloperGuide/private-content-signed-cookies.html
您可以使用自定义的云端签名 url,以允许访问具有单个签名的文件夹内的所有文件。
为此,您已经生成了云端密钥对。要生成,请转到顶部下拉菜单中的 my security credentials
和 select cloufront。在那里你可以看到生成密钥对的选项。
我能够访问带有签名 URL 的播放列表文件 (.m3u8)。但问题是,要访问播放列表中的流文件(.ts),每个文件的 URL 也需要签名。
例如:
我可以访问带有签名的 playlist.m3u8 URL http://abcdefg.cloudfront.net/media/playlist.m3u8?Expires=xxxxxxxx&Policy=yyyyyyyyyyyyy&Signature=zzzzzzzzzzzzzz&Key-Pair-Id=kkkkkkkkkkkkkkkkk
#EXTM3U
#EXT-X-TARGETDURATION:10
#EXTINF:13
playlist-00000.ts
#EXTINF:12,
playlist-00001.ts
#EXTINF:12,
playlist-00002.ts
但是里面的每个ts文件也应该像
一样访问我必须为播放列表中的每个 .ts 文件签名 URL。
不幸的是,我没有看到任何媒体播放器可以在 URL 获取 ts 文件之前处理附加参数。
如果可能的话,我需要这样的播放器回调:
public String onStreamFileReadyForPlaying(String pathToTsFile)
{
//I could append the parameters here
return pathToTsFile + "?Expires=xxxxxxxx&Policy=yyyyyyyyyyyyy&Signature=zzzzzzzzzzzzzz&Key-Pair-Id=kkkkkkkkkkkkkkkkk"
}
只需对播放列表中的 URL 进行签名即可。
仅此而已。
有“使用签名 URL”和“签名 Cookie”两种方式
我认为您必须使用“签名 Cookie”
我在下面找到 link 为什么要使用“签名 Cookie” https://docs.amazonaws.cn/en_us/AmazonCloudFront/latest/DeveloperGuide/private-content-choosing-signed-urls-cookies.html
Use signed cookies in the following cases:
- You want to provide access to multiple restricted files, for example, all of the files for a video in
HLS format
or all of the files in the subscribers' area of website.
我还没有尝试“签名 Cookie”。但我有同样的问题。 如果你已经完成了“Signed Cookies”,你能反馈一下吗?
下面link是如何使用“Sigend Cookies”的文档 https://docs.aws.amazon.com/AmazonCloudFront/latest/DeveloperGuide/private-content-signed-cookies.html
您可以使用自定义的云端签名 url,以允许访问具有单个签名的文件夹内的所有文件。
为此,您已经生成了云端密钥对。要生成,请转到顶部下拉菜单中的 my security credentials
和 select cloufront。在那里你可以看到生成密钥对的选项。