如何通过区域、存储桶 id、访问密钥和秘密密钥对 IAM 角色用户进行身份验证,并获取视频文件对象并在视频播放器中播放。实际上,我们已经在 AWS S3 中上传了视频文件,并向一位 IAM 角色用户授予了访问权限。
现在从 Flutter 应用程序中,我需要通过 accesskey、secretkey 对 IAM 用户进行身份验证,并获取视频对象并在视频播放器中播放,而无需在本地保存或下载。
我试过插件,
flutter_aws_s3_client: ^0.5.0
const region = "<region>";
const bucketId = "<bucket id>";
final AwsS3Client s3client = AwsS3Client(
region: region,
host: "s3.$region.amazonaws.com",
bucketId: bucketId,
accessKey: "<accesskey>",
secretKey: "<secretkey>");
//object video name
final response = await s3client.getObject("example_test.m3u8");
在这里我得到的对象响应为 200,但是如何在视频播放器中传递和播放这个视频文件?有什么办法吗?我尝试在 expo player android video_player_plugin.dart 中添加 HEADER。但没有运气。
视频播放器插件
video_player: ^0.10.11+1
class _VideoAppState extends State<VideoApp> {
VideoPlayerController _controller;
@override
void initState() {
super.initState();
_controller = VideoPlayerController.network('//need to pass the videoUrl of AWS S3')
..initialize().then((_) {
setState(() {});
});
}
@override
Widget build(BuildContext context) {
return MaterialApp(
title: 'Video Demo',
home: Scaffold(
body: Center(
child: _controller.value.initialized
? AspectRatio(
aspectRatio: _controller.value.aspectRatio,
child: VideoPlayer(_controller),
)
: Container(),
),
floatingActionButton: FloatingActionButton(
onPressed: () {
setState(() {
_controller.value.isPlaying
? _controller.pause()
: _controller.play();
});
},
child: Icon(
_controller.value.isPlaying ? Icons.pause : Icons.play_arrow,
),
),
),
);
}
所以帮我解决这个问题?
提前致谢