flutter rtmp 在线网络视频播放器,支持rtmp拉流,适配大部分视频格式,支持Android,和iOS
flutter_rtmp_player: ^1.0.0
const SizedBox(
width: 100,
height: 100,
child: VideoPlayerWidget(url: 'rtmp://xxxxxxxxxxx'); // 播放器组件
);
//[PlayerStateListener] 继承它,实现那些方法,会回调播放器的生命周期
class _LivePageState extends State<LivePage> implements PlayerStateListener{}
final PlayerController _controller = PlayerController();
AspectRatio(
aspectRatio: 1,
child: VideoPlayerWidget(
controller: _controller,
url:"http://devimages.apple.com.edgekey.net/streaming/examples/bipbop_4x3/gear2/prog_index.m3u8",
autoPlay: true,
onCreate: () {
_controller.addStateChangeListener(this);
},
),
)
- 组件控制器
final PlayerController? controller;
- 安卓初始化配置
final AndroidOption androidConfig; // 不传使用默认最佳配置
3.iOS初始化配置
final IosOptions? iosOptions; // 不传使用默认最佳配置
- 播放URL
/// 播放的URL,如果设置了这个参数,会提前准备资源
/// 也可以不设置,后面也可以使用[PlayerController] 来控制播放器播放
final String? url;
- 自动播放
final bool autoPlay;
- 组件初始化完毕回调
可以在这个函数调用`PlayerController` api
final VoidCallback? onCreate;
- 自动隐藏UI控制面板
final bool? autoHideUi;
状态回调方法列表 PlayerStateListener.dart
/// 播放器的状态回调
controller.addStateChangeListener(PlayerStateListener listener);
///暂停播放
controller.pause();
///恢复播放
controller.resume();
///结束播放
controller.stop();
///(Android有效)
///切换播放器内核
/// 可选的值有:
/// 1.[ManagerModel.ijkPlayerManager] - bilibili内核
/// 2.[ManagerModel.systemPlayerManager] - 系统自带内核
/// 3.[ManagerModel.exo2PlayerManager] - exo内核
///
/// 如果需要播放[rtmp]格式的源,需要切换成[ManagerModel.exo2PlayerManager] 内核,否则会无法播放
/// 如果需要播放[m3u8]格式的视频,需要切换成[ManagerModel.ijkPlayerManager] 内核
controller.setPlayManager(ManagerModel managerModel);
///切换播放的URL
controller.setPlayUrl(String url);
///是否已经初始化组件
controller.isInit;
///切换日志等级,隐藏烦人的日志滚动
controller.changeLoggerLevler({LoggerLevel? loggerLevel});
///隐藏控制器UI面板
controller.hideUi();
///禁用系统锁屏
contorller.disableScreenCapture();
///获取当前播放器的状态
controller.getCurrentState();
部分状态不止回调一次