iis服务器助手广告广告
返回顶部
首页 > 资讯 > 精选 >Flutter中视频播放器插件如何使用
  • 738
分享到

Flutter中视频播放器插件如何使用

2023-06-29 08:06:55 738人浏览 八月长安
摘要

这篇文章主要讲解了“Flutter中视频播放器插件如何使用”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“Flutter中视频播放器插件如何使用”吧!创建一个新的视频播放器在使用视频播放器插件

这篇文章主要讲解了“Flutter中视频播放器插件如何使用”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“Flutter中视频播放器插件如何使用”吧!

创建一个新的视频播放器

在使用视频播放器插件之前,你应该把它添加到你的pubspec.yaml 文件中。当你打开pubspec.yaml 文件时,你可以看到运行你的应用程序所需的一些配置和依赖性。我们的视频播放器插件应该被添加到dependencies 块下。

dependencies:  flutter:    sdk: flutter  cupertino_icons: ^1.0.2  video_player: 2.1.15  //video player

该插件的当前版本是2.1.15 ,但你可以通过查看插件页面在这里添加最新版本。如果你保存文件时是在VS Code中,它会自动下载该插件。如果不是,打开终端,写flutter pub get 来下载该插件。

进入你想添加该插件的文件,并导入video_player.dart 文件。

import 'package:video_player/video_player.dart';

现在你可以在你的项目中使用视频播放器插件了。

有几种方法来加载视频。让我们从资产中加载我们的例子。在项目的根层创建一个assets/video文件夹,在该文件夹内添加一个视频。然后在pubspec.yaml ,在assets 部分,指定文件路径,如下所示。

assets:    - assets/video/video.mp4

让我们创建一个单独的有状态的部件,称为VideoPlayerWidget ,以插入我们的视频播放器相关的实现。

你可以在initState 方法中初始化视频播放器,如下所示。另外,别忘了dispose ,让视频播放器做清理工作。

class _VideoPlayerState extends State<VideoPlayerWidget> {  late VideoPlayerController _videoPlayerController;  @override  void initState() {    super.initState();    _videoPlayerController = VideoPlayerController.asset(        'assets/video/video.mp4')      ..initialize().then((_) {        setState(() {});        _videoPlayerController.play();      });  }  @override  void dispose() {    _videoPlayerController.dispose();    super.dispose();  }  @override  Widget build(BuildContext context) {    return Center(      child: VideoPlayer(_videoPlayerController),    );  }}

VideoPlayerController 必须用late 关键字来指定,因为我们在这一行中仍然没有定义视频播放器控制器,我们将在后面做这个。在initState 里面,videoPlayerController 已经和资产的路径一起被初始化。

当初始化完成后,它改变了状态并重建了小部件。你可以在初始化后开始播放视频。

取代assets ,你可以使用视频的URL。为了访问网络,你应该给AndroidiOS添加互联网权限配置。

从根目录下,进入ios/Runner ,打开info.plist 文件。然后,在该文件中添加以下配置。

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

接下来,去android/app/src/main ,并打开AndroidManifest.xml 。然后,向其添加以下代码。

<uses-permission android:name="android.permission.INTERNET"/>

现在你可以把asset 改为network ,并在那里添加视频URL。

  @override  void initState() {    super.initState();    _videoPlayerController =        VideoPlayerController.network('video_url_here')          ..initialize().then((_) {            setState(() {});            _videoPlayerController.play();          });  }

即使初始化已经完成,也应该有办法在用户界面中显示播放器。VideoPlayer widget可以用来做到这一点。为了使它工作,你应该把控制器作为第一个参数传递给VideoPlayer widget。

在显示VideoPlayer widget之前,最好先检查初始化是否成功。

  @override  Widget build(BuildContext context) {    return Center(      child: _videoPlayerController.value.isInitialized ? VideoPlayer(_videoPlayerController) : Container(),    );  }

Flutter中视频播放器插件如何使用

现在你可以看到屏幕上的视频了。但是有一个小问题:它的长宽比不合适。这可以通过使用AspectRatio widget来解决。视频播放器提供了一个适当的视频长宽比,你可以使用这个值来设置为AspectRatio widget。

  @override  Widget build(BuildContext context) {    return Center(      child: _videoPlayerController.value.isInitialized ? AspectRatio(aspectRatio:       _videoPlayerController.value.aspectRatio,      child: VideoPlayer(_videoPlayerController)      ) : Container(),    );  }

现在你可以看到具有适当长宽比的视频。

Flutter中视频播放器插件如何使用

添加播放和暂停按钮

首先,让我们把视频播放器小部件包在一个列小部件里面,因为我们应该把播放和暂停按钮放在播放器下面。在播放器小组件之后的列内,让我们在一个Row 小组件内添加两个ElevatedButton 小组件,在这些按钮之间让我们添加一个Padding 小组件以保持一些呼吸空间。

对每个ElevatedButton ,添加相关的Icons ,作为子部件。然后在播放按钮onPressed 的回调里面,你可以参考_videoPlayerController ,并调用play 方法来开始播放视频。在暂停按钮里面,使用pause 方法而不是播放。

现在你可以删除之前在initState 方法里面添加的播放。

  @override  Widget build(BuildContext context) {    return Column(      mainAxisAlignment: MainAxisAlignment.center,      children: [        _videoPlayerController.value.isInitialized ? AspectRatio(aspectRatio:         _videoPlayerController.value.aspectRatio,        child: VideoPlayer(_videoPlayerController)        ) : Container(),        Row(          mainAxisAlignment: MainAxisAlignment.center,           children: [            ElevatedButton(onPressed: (){              _videoPlayerController.pause();            }, child: Icon(Icons.pause)),              Padding(padding: EdgeInsets.all(2)),             ElevatedButton(onPressed: (){              _videoPlayerController.play();            }, child: Icon(Icons.play_arrow))          ],        )      ],    );  }

Flutter中视频播放器插件如何使用

另外,你可以给按钮添加样式,得到一个看起来很圆的按钮,这通常是在视频播放器中。

 @override  Widget build(BuildContext context) {    return Column(      mainAxisAlignment: MainAxisAlignment.center,      children: [        _videoPlayerController.value.isInitialized            ? AspectRatio(                aspectRatio: _videoPlayerController.value.aspectRatio,                child: VideoPlayer(_videoPlayerController))            : Container(),        Padding(          padding: EdgeInsets.all(20),        ),        Row(          mainAxisAlignment: MainAxisAlignment.center,          children: [            ElevatedButton(                style: ButtonStyle(                    backgroundColor: MaterialStateProperty.all<Color>(Colors.blue),                    fixedSize: MaterialStateProperty.all(Size(70, 70)),                    shape: MaterialStateProperty.all(RoundedRectangleBorder(                        borderRadius: BorderRadius.circular(100)))),                onPressed: () {                  _videoPlayerController.pause();                },                child: Icon(Icons.pause)),            Padding(padding: EdgeInsets.all(2)),            ElevatedButton(                style: ButtonStyle(                    backgroundColor: MaterialStateProperty.all<Color>(Colors.redAccent),                    fixedSize: MaterialStateProperty.all<Size>(Size(80, 80)),                    shape: MaterialStateProperty.all(RoundedRectangleBorder(                        borderRadius: BorderRadius.circular(100)))),                onPressed: () {                  _videoPlayerController.play();                },                child: Icon(Icons.play_arrow))          ],        )      ],    );  }

Flutter中视频播放器插件如何使用

创建一个快进

在实现快进之前,让我们思考一下我们需要什么。首先,应该有一个访问当前视频位置/时间的方法和一个设置新值的方法。控制器的seekTo 方法允许我们为视频设置持续时间。

你可以通过视频播放器value 属性访问当前的视频位置,就像下面这样。

ElevatedButton(       style: ButtonStyle(          backgroundColor: MaterialStateProperty.all<Color>(Colors.blue),          fixedSize: MaterialStateProperty.all(Size(70, 70)),          shape: MaterialStateProperty.all(RoundedRectangleBorder(              borderRadius: BorderRadius.circular(100)))),                onPressed: () {                  _videoPlayerController.seekTo(Duration(                   seconds: _videoPlayerController.value.position.inSeconds + 10));                },                child: Icon(Icons.fast_forward))

像这样,当用户点击按钮时,你也可以通过减少10 秒来实现向后倒转。

添加一个视频进度指示器

视频播放器插件提供了内置的功能来添加一个进度条以及一些控件。你可以使用VideoProgressIndicator widget来实现这个功能。

作为第一个参数,你必须传递控制器并设置allowScrubbing 属性。allowScrubbing 属性将允许用户通过触摸小组件来滑动进度。通过启用这个,用户可以跳到视频的不同时间戳。此外,你还可以单独控制寻求栏的背景颜色、缓冲区颜色和播放区颜色。

VideoProgressIndicator(          _videoPlayerController,          allowScrubbing: true,          colors: VideoProgressColors(              backgroundColor: Colors.red,              bufferedColor: Colors.black,              playedColor: Colors.blueAccent),        )

Flutter中视频播放器插件如何使用

应用视频的字幕

字幕对你的应用程序来说需要两样东西。第一个是不同时期的段落/单词列表,第二个是在视频播放时显示这些标题的方法。为此,应该有一种方法来为时间变化添加一个监听器。

视频播放器包含一个addListener 方法,每秒钟执行一次。你可以使用这个监听器,根据不同的时间段为视频播放器提供字幕。

首先,让我们创建一个Map ,其中包含时间作为一个键,字幕文本作为一个值。在Map ,时间的单位将是秒。

Map<int,String> captions = {    5:"First subtitle",    20:"Second subtitle"  };

接下来,在初始化视频播放器时注册一个Listener 。在回调里面,你可以检查视频是否正在播放,如果视频正在播放,则获得当前的时间为秒。然后,如果当前值包含在captions 地图中,我们可以像下面这样将该值设置为选定的标题。

void initState() {    super.initState();    _videoPlayerController =        VideoPlayerController.asset('assets/video/video.mp4')        ..addListener(() {            if(_videoPlayerController.value.isPlaying){              setState(() {                 if(captions.containsKey(_videoPlayerController.value.position.inSeconds)){              selectedCaption = captions[_videoPlayerController.value.position.inSeconds];                                }              });            }        })          ..initialize().then((_) {            setState(() {});            _videoPlayerController.play();          });  }

现在你可以使用ClosedCaption 来设置那个选定的标题。你可以给标题文本添加一些样式,以获得更好的可见性。

 ClosedCaption(     text: selectedCaption,textStyle: TextStyle(fontSize: 15,color: Colors.white),)

Flutter中视频播放器插件如何使用

但是,每次标题改变时,建立主部件并不是好的做法。因此,我们应该把标题逻辑提取到一个单独的小部件。

要注册一个监听器,你应该把视频控制器传递给一个新创建的子部件。

从那里,你可以在子部件内注册监听器。

class VCaption extends StatefulWidget {  const VCaption(     this.videoPlayerController,  );  final VideoPlayerController videoPlayerController;  @override  _VCaptionState createState() => _VCaptionState();}class _VCaptionState extends State<VCaption> {  String? selectedCaption = "";  Map<int,String> captions = {    5:"First subtitle",    20:"Second subtitle"  };  @override  void initState() {    widget.videoPlayerController.addListener(() {      if(widget.videoPlayerController.value.isPlaying){              print("Time ${widget.videoPlayerController.value.position.inSeconds}");              setState(() {                 if(captions.containsKey(widget.videoPlayerController.value.position.inSeconds)){              selectedCaption = captions[widget.videoPlayerController.value.position.inSeconds];                                }              });            }    });    super.initState();  }  @override  Widget build(BuildContext context) {    return ClosedCaption(      text: selectedCaption,textStyle: TextStyle(fontSize: 15,color: Colors.white),);  }}

现在我们可以在之前创建的栏目内添加这个小部件,并将_videoPlayerController 作为参数传递。你可以在把小部件添加到树上之前检查视频播放器是否已经被初始化,就像下面这样。

 _videoPlayerController.value.isInitialized ? VCaption(_videoPlayerController) : Container(),

你可以使用Stack widget在视频顶部显示这些字幕,而不是在视频下面显示那些字幕。字幕以及进度指示器已经被移到了Stack widget里面,以便在视频的顶部显示。

 Stack(          children: [            _videoPlayerController.value.isInitialized                ? AspectRatio(                    aspectRatio: _videoPlayerController.value.aspectRatio,                    child: VideoPlayer(_videoPlayerController))                : Container(),            Positioned(              bottom: 2,              width: MediaQuery.of(context).size.width,              child: _videoPlayerController.value.isInitialized                  ? VCaption(_videoPlayerController)                  : Container(),            ),            Positioned(                bottom: 0,                width: MediaQuery.of(context).size.width,                child: VideoProgressIndicator(                  _videoPlayerController,                  allowScrubbing: false,                  colors: VideoProgressColors(                      backgroundColor: Colors.blueGrey,                      bufferedColor: Colors.blueGrey,                      playedColor: Colors.blueAccent),                ))          ],        )

Flutter中视频播放器插件如何使用

感谢各位的阅读,以上就是“Flutter中视频播放器插件如何使用”的内容了,经过本文的学习后,相信大家对Flutter中视频播放器插件如何使用这一问题有了更深刻的体会,具体使用情况还需要大家实践验证。这里是编程网,小编将为大家推送更多相关知识点的文章,欢迎关注!

--结束END--

本文标题: Flutter中视频播放器插件如何使用

本文链接: https://www.lsjlt.com/news/323659.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • Flutter中视频播放器插件如何使用
    这篇文章主要讲解了“Flutter中视频播放器插件如何使用”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“Flutter中视频播放器插件如何使用”吧!创建一个新的视频播放器在使用视频播放器插件...
    99+
    2023-06-29
  • 详解Flutter中视频播放器插件的使用教程
    目录创建一个新的视频播放器添加播放和暂停按钮创建一个快进添加一个视频进度指示器应用视频的字幕结论您已经看到很多包含视频内容的应用程序,比如带有视频教程的食谱应用程序、电影应用程序和体...
    99+
    2024-04-02
  • 如何在HTML5中使用video.js视频播放插件
    本篇文章给大家分享的是有关如何在HTML5中使用video.js视频播放插件,小编觉得挺实用的,因此分享给大家学习,希望大家阅读完这篇文章后可以有所收获,话不多说,跟着小编一起来看看吧。看下默认例子:controls表示控制条,prload...
    99+
    2023-06-09
  • DPlayer.js视频播放插件使用方法
    DPlayer.js视频播放插件简单的使用 主要用到了实现了:视频播放 、监听开始、结束、暂停、播放时间、切换视频 官方文档:http://dplayer.js.org 效果图: ...
    99+
    2024-04-02
  • 使用python播放视频文件
    基于python和opencv实现的 import numpy as np import cv2 cap = cv2.VideoCapture('f:/rain_of_lovesickness.mp4') while (cap.i...
    99+
    2023-01-31
    视频文件 python
  • WinForm中如何播放音频或视频文件
    在WinForm中播放音频或视频文件可以使用Windows Media Player控件,以下是一个简单的示例代码: using S...
    99+
    2024-04-08
    winform
  • 如何在html中播放视频
    本篇文章为大家展示了如何在html中播放视频,内容简明扼要并且容易理解,绝对能使你眼前一亮,通过这篇文章的详细介绍希望你能有所收获。html播放视频在 HTML 中播放视频并不容易!您需要谙熟大量技巧,以确保您的视频文件在所有浏览器中(In...
    99+
    2023-06-15
  • vue使用vue-video-player插件播放视频的步骤讲解
    目录前言官网文档步骤下载依赖和配置编写页面本人项目播放视频代码实际效果常用回调结语前言 在我的一个项目中,需要进行播放视频,于是进行研究,那么本次也是将我怎么用vue-video-p...
    99+
    2022-12-21
    vue视频播放器插件 vue-video-player播放视频 vue-video-player插件
  • windows播放器无法播放视频如何解决
    如果你在Windows播放器中遇到无法播放视频的问题,可以尝试以下解决方案:1. 确保视频文件格式支持:检查视频文件的格式是否受到W...
    99+
    2023-09-07
    windows
  • jQuery如何监听视频播放事件?
    这篇文章将为大家详细讲解有关jQuery如何监听视频播放事件?,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。jQuery监听视频播放事件 jQuery提供了一种简洁的方法来监听视频播放事件,使开发人员能够...
    99+
    2024-04-02
  • 利用MAC中的QuickTime视频播放器来播放各种媒体视频
      QuickTime 是MAC中的视频播放器,但是很多新手用户并不清楚QuickTime 的使用技巧,或者是仅仅知道一部分。不过别担心,现在小编就为大家讲解一下如何利用 QuickTime 播放程式来播放各种媒体档案。...
    99+
    2023-06-10
    MAC QuickTime 媒体视频 播放器 媒体 视频
  • Ubuntu如何播放mp4视频
    Ubuntu播放mp4视频的方法:在终端输入以下命令安装snapd。sudo apt-get install snapd再依次输入命令安装ffmpeg。sudo snap install ffmpegsudo add-apt-reposit...
    99+
    2024-04-02
  • Angular中如何自定义视频播放器
    本篇内容主要讲解“Angular中如何自定义视频播放器”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“Angular中如何自定义视频播放器”吧!实现的功能如下:播...
    99+
    2024-04-02
  • 怎么在Android中使用GSYVideoPlayer播放视频器
    怎么在Android中使用GSYVideoPlayer播放视频器?很多新手对此不是很清楚,为了帮助大家解决这个难题,下面小编将为大家详细讲解,有这方面需求的人可以来学习下,希望你能有所收获。GSYVideoPlayerGSYVideoPla...
    99+
    2023-06-14
  • 如何使用HTML5实现在线视频播放
    这篇文章主要为大家展示了“如何使用HTML5实现在线视频播放”,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下“如何使用HTML5实现在线视频播放”这篇文章吧。编码与...
    99+
    2024-04-02
  • 使用JMF实现java视频播放器
    JMF这个多媒体开发框架太牛了,简单的几句代码就能实现一个视频播放器的开发,厉害,就是支持的格式少了一些,没关系,这个视频播放器可以播放mpg,avi,fvl等等,想播放其他的请开发自己的插件,下面将代码贴上去 package c...
    99+
    2023-05-31
    jmf java 播放器
  • 利用HTML5制作音频播放器插件
    这篇文章主要讲解了“利用HTML5制作音频播放器插件”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“利用HTML5制作音频播放器插件”吧!上图便是这个音频播放...
    99+
    2024-04-02
  • Android如何实现播放视频
    这篇文章将为大家详细讲解有关Android如何实现播放视频,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。一、通过intent的方式,调用系统自带的播放器  Uri uri&n...
    99+
    2023-05-31
    android
  • html5如何实现视频播放
    这篇文章主要为大家展示了“html5如何实现视频播放”,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下“html5如何实现视频播放”这篇文章吧。一、html5技术优势...
    99+
    2024-04-02
  • Django如何实现视频播放
    这篇文章主要讲解了“Django如何实现视频播放”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“Django如何实现视频播放”吧!view视图import reimport ...
    99+
    2023-06-30
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作