Flutter视频播放插件flutter_lykluk_vlc_player的使用
Flutter视频播放插件flutter_lykluk_vlc_player的使用
安装
iOS
如果您无法从外部源加载媒体,还应添加以下内容:
<key>NSAppTransportSecurity</key>
<dict>
<key>NSAllowsArbitraryLoads</key>
<true/>
</dict>
更多详细信息或更细粒度的控制,请参阅Apple的文档。
确保在<project root>/ios/Podfile
文件中的以下行未被注释:
platform :ios, '9.0'
注意:虽然Flutter的video_player
在iOS模拟器上不工作,但本插件(flutter_vlc_player
)在iOS模拟器上完全可用。
要启用vlc投射功能以支持外部显示(如Chromecast),还需要添加以下内容:
<key>NSLocalNetworkUsageDescription</key>
<string>用于搜索Chromecast设备</string>
<key>NSBonjourServices</key>
<array>
<string>_googlecast._tcp</string>
</array>
Android
为了从互联网加载媒体/字幕,您的应用需要INTERNET
权限。这可以通过确保<project root>/android/app/src/main/AndroidManifest.xml
文件包含android.permission.INTERNET
的uses-permission
声明来实现:
<uses-permission android:name="android.permission.INTERNET" />
注意:如果出现“Cleartext HTTP流量到*不受允许”的错误,您需要在AndroidManifest.xml
文件中添加android:usesClearTextTraffic="true"
标志,或者定义一个新的“网络安全配置”文件。更多信息可查看Android安全配置文档。
为了从内部设备存储加载媒体/字幕,您应该添加以下权限:
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE"/>
在某些情况下,您还需要在AndroidManifest.xml
文件的应用程序标签中添加android:requestLegacyExternalStorage="true"
标志。
之后,您可以访问媒体/字幕文件:
"/storage/emulated/0/{FilePath}"
"/sdcard/{FilePath}"
Android构建配置
- 在
android/app/build.gradle
文件中:
android {
packagingOptions {
// 解决重复库构建问题,
// 当您的项目使用依赖于C++库的多个插件时。
pickFirst 'lib/**/libc++_shared.so'
}
buildTypes {
release {
minifyEnabled true
useProguard true
proguardFiles getDefaultProguardFile(
'proguard-android-optimize.txt'),
'proguard-rules.pro'
}
}
}
- 创建
android/app/proguard-rules.pro
文件,并添加以下行:
-keep class org.videolan.libvlc.** { *; }
Android多窗口支持
要在Android应用程序中启用多窗口支持,您需要对AndroidManifest.xml
进行更改,在主活动中添加android:resizeableActivity
键,以及在应用程序中添加android.allow_multiple_resumed_activities
元数据:
<manifest ...>
<application ...>
<activity ...
android:resizeableActivity="true">
...
</activity>
...
<meta-data
android:name="android.allow_multiple_resumed_activities"
android:value="true" />
</application>
</manifest>
快速开始
要开始使用该插件,请复制以下代码或遵循示例项目中的flutter_vlc_player/example
目录:
import 'package:flutter/material.dart';
import 'package:flutter_vlc_player/vlc_player_flutter.dart';
void main() {
runApp(MyApp());
}
class MyApp extends StatelessWidget {
// 这个小部件是你的应用的根组件。
@override
Widget build(BuildContext context) {
return MaterialApp(
title: 'Flutter Demo',
theme: ThemeData(
visualDensity: VisualDensity.adaptivePlatformDensity,
),
home: MyHomePage(),
);
}
}
class MyHomePage extends StatefulWidget {
MyHomePage({Key key}) : super(key: key);
@override
_MyHomePageState createState() => _MyHomePageState();
}
class _MyHomePageState extends State<MyHomePage> {
VlcPlayerController _videoPlayerController;
Future<void> initializePlayer() async {}
@override
void initState() {
super.initState();
_videoPlayerController = VlcPlayerController.network(
'https://media.w3.org/2010/05/sintel/trailer.mp4',
hwAcc: HwAcc.FULL,
autoPlay: false,
options: VlcPlayerOptions(),
);
}
@override
void dispose() async {
super.dispose();
await _videoPlayerController.stopRendererScanning();
await _videoPlayerController.dispose();
}
@override
Widget build(BuildContext context) {
return Scaffold(
appBar: AppBar(),
body: Center(
child: VlcPlayer(
controller: _videoPlayerController,
aspectRatio: 16 / 9,
placeholder: Center(child: CircularProgressIndicator()),
),
));
}
}
录制功能
要开始/停止视频录制,您需要调用startRecording(String saveDirectory)
和stopRecording()
方法。通过调用停止方法,您可以从vlcPlayerController.value.recordPath
获取录制文件的路径。
升级说明
版本5.0升级
要升级到版本5.0,首先您需要将现有项目迁移到Swift。
- 清理仓库:
git clean -xdf
- 删除现有iOS文件夹。如果有自定义更改,请将其重命名或复制到项目外。
- 重新创建iOS应用:此命令仅创建具有Swift支持的iOS目录。具体可参考如何为现有项目启用Swift支持。
flutter create -i swift .
更多关于Flutter视频播放插件flutter_lykluk_vlc_player的使用的实战教程也可以访问 https://www.itying.com/category-92-b0.html
更多关于Flutter视频播放插件flutter_lykluk_vlc_player的使用的实战系列教程也可以访问 https://www.itying.com/category-92-b0.html
flutter_lykluk_vlc_player
是一个基于 VLC 播放器的 Flutter 插件,用于在 Flutter 应用中播放视频。它支持多种视频格式和流媒体协议,提供了丰富的播放控制功能。以下是使用 flutter_lykluk_vlc_player
的基本步骤:
1. 添加依赖
首先,在你的 pubspec.yaml
文件中添加 flutter_lykluk_vlc_player
依赖:
dependencies:
flutter:
sdk: flutter
flutter_lykluk_vlc_player: ^0.0.1 # 请使用最新版本
然后运行 flutter pub get
来安装依赖。
2. 导入包
在你的 Dart 文件中导入 flutter_lykluk_vlc_player
包:
import 'package:flutter_lykluk_vlc_player/flutter_lykluk_vlc_player.dart';
3. 创建播放器实例
你可以通过 VlcPlayerController
来控制视频播放。首先,创建一个 VlcPlayerController
实例:
VlcPlayerController _controller;
@override
void initState() {
super.initState();
_controller = VlcPlayerController(
// 你可以在这里指定视频的URL或文件路径
url: 'https://www.example.com/video.mp4',
// 其他可选参数
autoPlay: true,
looping: false,
);
}
4. 显示视频播放器
使用 VlcPlayer
widget 来显示视频播放器:
@override
Widget build(BuildContext context) {
return Scaffold(
appBar: AppBar(
title: Text('Video Player'),
),
body: Center(
child: VlcPlayer(
controller: _controller,
aspectRatio: 16 / 9, // 设置视频的宽高比
),
),
);
}
5. 控制视频播放
你可以通过 VlcPlayerController
来控制视频的播放、暂停、停止等操作。例如:
FlatButton(
onPressed: () {
_controller.play();
},
child: Text('Play'),
),
FlatButton(
onPressed: () {
_controller.pause();
},
child: Text('Pause'),
),
FlatButton(
onPressed: () {
_controller.stop();
},
child: Text('Stop'),
),
6. 释放资源
在页面销毁时,记得释放播放器资源:
@override
void dispose() {
_controller.dispose();
super.dispose();
}
7. 处理播放事件
你可以监听播放器的事件,例如播放完成、错误等:
_controller.addListener(() {
if (_controller.value.isCompleted) {
// 视频播放完成
print('Video playback completed');
}
});