首页 > 解决方案 > Flutter iOS 只有一些视频 URL 正在视频播放器中播放,有些无法初始化

问题描述

我一直在尝试在我的 Flutter iOS 应用中播放来自服务器的视频。但他们不会初始化。来自在线的随机视频 url 可以正常工作,但来自我服务器的视频无法播放。iOS播放视频是否需要任何特殊编码?

我已经在我的 info.plist 中添加了这个

<dict>
  <key>NSAllowsArbitraryLoads</key>
  <true/>
</dict>

有效的网址:http: //commondatastorage.googleapis.com/gtv-videos-bucket/sample/ElephantsDream.mp4 http://commondatastorage.googleapis.com/gtv-videos-bucket/sample/ElephantsDream.mp4

无效的 URL: https ://learningoxygen.com/joy_content/CB 销售视频-English-low-res.mp4 https://learningoxygen.com/joy_content/C.fruit 30 sec.mp4

所有这些视频都可以在 android 中完美运行。问题出在 iOS 请帮帮我。谢谢。

这是我的代码

//import 'package:flick_video_player/flick_video_player.dart';
import 'package:chewie/chewie.dart';
import 'package:flutter/material.dart';
import 'package:video_player/video_player.dart';

class TestVideo extends StatefulWidget {
  @override
  _TestVideoState createState() => _TestVideoState();
}

class _TestVideoState extends State<TestVideo> {
  //FlickManager flickManager;
  bool _isVideoLoading = true;
  VideoPlayerController _videoPlayerController;
  ChewieController _chewieController;

  @override
  void initState() {
    init();
    super.initState();
  }

  @override
  Widget build(BuildContext context) {
    return Scaffold(
      appBar: AppBar(),
      body: _isVideoLoading == false
          ? Container(
              height: MediaQuery.of(context).size.height / 2.5,
              child: Chewie(
                controller: _chewieController,
              ))
          : Container(
              height: MediaQuery.of(context).size.height / 2.5,
              alignment: Alignment.center,
              decoration: BoxDecoration(
                color: Colors.grey.withOpacity(0.2),
                borderRadius: BorderRadius.circular(8.0),
              ),
              child: CircularProgressIndicator(),
            ),
    );
  }

  void init() async {
    _videoPlayerController = VideoPlayerController.network(
        'https://learningoxygen.com/joy_content/CB Sales Video- English-low-res.mp4');

    await _videoPlayerController.initialize().then((value) {
      setState(() {
        print("DONEEE");
        _isVideoLoading = false;
      });
    });

    _chewieController = ChewieController(
      videoPlayerController: _videoPlayerController,
      autoPlay: true,
      looping: true,
    );
  }
}

标签: iosfluttervideo-player

解决方案


推荐阅读