Flutter AWS: как аутентифицировать пользователя корзины с ролью IAM и получить объект AWS S3 для видеофайла hls и воспроизвести его в видеоплеере?

Как аутентифицировать пользователя роли IAM по региону, идентификатору корзины, ключу доступа и ключу доступа, а также получить объект видеофайла и воспроизвести его в проигрывателе. Фактически мы загрузили видеофайлы в AWS S3 и предоставили право доступа одному пользователю роли IAM.

Теперь из приложения flutter мне нужно аутентифицировать пользователя 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, но как я могу передать и воспроизвести этот видеофайл в видеопроигрывателе? там в любом случае? Я попытался добавить HEADER в expo player android video_player_plugin.dart. но не повезло.

Плагин видеоплеера

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,
          ),
        ),
      ),
    );
  }

так помогите мне, как это решить?

заранее спасибо

1 ответ

для этого вам нужно выполнить несколько шагов 1: получить ответ на доступ 2: затем перенаправить или вызвать этот виджет видео, чтобы загрузить это видео

Другие вопросы по тегам