Flutter 如何在expo视频播放器插件中设置云端cookie
我在使用Flatter视频播放器插件在expo player中设置DefaultHttpDataSourceFactory时遇到问题 实际上,我正在播放CDN中的HLS视频,为了确保安全播放,我为该视频文件创建了CloudFront签名密钥 我已经将cloudfront cookie键和值的属性设置为expo player,但它没有播放 存档: android/src/main/java/io/flatter/plugins/videoplayer/videoplayer.javaFlutter 如何在expo视频播放器插件中设置云端cookie,flutter,dart,video-streaming,Flutter,Dart,Video Streaming,我在使用Flatter视频播放器插件在expo player中设置DefaultHttpDataSourceFactory时遇到问题 实际上,我正在播放CDN中的HLS视频,为了确保安全播放,我为该视频文件创建了CloudFront签名密钥 我已经将cloudfront cookie键和值的属性设置为expo player,但它没有播放 存档: android/src/main/java/io/flatter/plugins/videoplayer/videoplayer.java Defaul
DefaultHttpDataSourceFactory httpDataSourceFactory = new DefaultHttpDataSourceFactory("ExoPlayer", null, DefaultHttpDataSource.DEFAULT_CONNECT_TIMEOUT_MILLIS, DefaultHttpDataSource.DEFAULT_READ_TIMEOUT_MILLIS, true);
httpDataSourceFactory.setDefaultRequestProperty("CloudFront-Policy","eyJTdGF0ZW1lbnQiOkZnJvbnQubmV0LyoiLCJDb2MjA3MDAxOTh9fX1dfQ__");
httpDataSourceFactory.setDefaultRequestProperty("CloudFront-Signature","j0c8xdJqLEeF9xCRd4C~-9-J3KLA6vsLMZf-wfvSXtKhDatr3hXDCZ4yjIedlRs-7qTFTeVzKeg9lG0D0VROjzx1aMUe3NsphOPBOZJduw7mULOwS-OeTvd3AtGeU7du0B4LFN-utVntooBwSFesthLQ__");
httpDataSourceFactory.setDefaultRequestProperty("CloudFront-Key-Pair-Id","AHJKAINYJDNGHTDX7V5BA");
dataSourceFactory = new DefaultDataSourceFactory(context, "ExoPlayer",httpDataSourceFactory);
在控制台中引发错误,如:
PlatformException(VideoError, Video player had error com.google.android.exoplayer2.ExoPlaybackException: com.google.android.exoplayer2.upstream.HttpDataSource$InvalidResponseCodeException: Response code: 403, null)
所以,请帮助我如何通过签名cookie设置和播放视频
提前谢谢您好,我很久以前就得到了解决方案,但忘了发布答案 这是我解决这个问题的方法 当我们传递多个cookie头时,cloudfront将替换每个cookie头并获取最后一个cookie头
DefaultHttpDataSourceFactory httpDataSourceFactory = new DefaultHttpDataSourceFactory("ExoPlayer", null, DefaultHttpDataSource.DEFAULT_CONNECT_TIMEOUT_MILLIS, DefaultHttpDataSource.DEFAULT_READ_TIMEOUT_MILLIS, true);
httpDataSourceFactory.setDefaultRequestProperty("CloudFront-Policy","MDAxOTh9fX1dfQ__");
httpDataSourceFactory.setDefaultRequestProperty("CloudFront-Signature","LFN-utVntooBwSFesthLQ__");
httpDataSourceFactory.setDefaultRequestProperty("CloudFront-Key-Pair-Id","V5BA");
dataSourceFactory = new DefaultDataSourceFactory(context, "ExoPlayer",httpDataSourceFactory);
解决方案是通过在cookies后面添加分号来设置为单个值
String cookieValue = "";
if(CloudFrontPolicy != null && CloudFrontSignature !=null && CloudFrontKeyPairId != null){
cookieValue +="CloudFront-Policy="+CloudFrontPolicy+";";
cookieValue +="CloudFront-Signature="+CloudFrontSignature+";";
cookieValue +="CloudFront-Key-Pair-Id="+CloudFrontKeyPairId+";";
}
DefaultHttpDataSourceFactory defaultHttpDataSourceFactory =
new DefaultHttpDataSourceFactory(
"ExoPlayer",
null,
DefaultHttpDataSource.DEFAULT_CONNECT_TIMEOUT_MILLIS,
DefaultHttpDataSource.DEFAULT_READ_TIMEOUT_MILLIS,
true);
defaultHttpDataSourceFactory.setDefaultRequestProperty("Cookie",cookieValue);
dataSourceFactory = new DefaultDataSourceFactory(context, null, defaultHttpDataSourceFactory);
defaultHttpDataSourceFactory.createDataSource();
你找到解决办法了吗?