You need to enable JavaScript to run this app.
企业直播

企业直播

复制全文
Flutter 点播播放器 SDK
功能实现
复制全文
功能实现

本文介绍如何使用 Flutter 点播播放器 SDK 播放视频。

前提条件

您已完成 Flutter 点播播放器 SDK 的集成。详见集成 Flutter 点播播放器 SDK

注意事项

由于模拟器下可能出现异常,建议您使用真机进行代码调试。

示例 Demo

点击此处,下载查看示例代码。

使用 SDK

引入头文件

import 'package:bdlive_vod_player/bdlive_vod_player.dart';

初始化 SDK

建议在项目的 main.dart 文件中,通过 runApp 方法初始化 SDK,以确保 SDK 正确的初始化顺序。

TTSDKConfiguration config = TTSDKConfiguration(
  appID: 'APP_ID',// 将 APP_ID 替换为在 SDK 应用创建后生成的 App ID。
  bundleID: 'BUNDLE_ID', // 将 BUNDLE_ID 替换为 iOS App 的唯一标识(Bundle Identifier)。
  appName: 'APP_NAME', // 将 APP_NAME 替换为创建 SDK 应用时填写的 App 英文名称。
  channel: 'CHANNEL_NAME', // 将 CHANNEL_NAME 替换为 App 的渠道名称,例如 App Store。
  licenseFilePath: 'VOD_LICENSE_PATH', // 将 VOD_LICENSE_PATH 替换为点播 License 文件的路径,例如 assets/vod.lic。
  appVersion: 'APP_VERSION', // 将 APP_VERSION 替换为 App 的版本号。合法版本号应包含 2 个或以上的分隔符,例如 1.3.2。
);
BdliveVodPlayer.startWithConfiguration(config);

创建播放器

// 创建 player 实例。
BdliveVodPlayer player = await BdliveVodPlayer.createPlayer();

// 在 Build 方法中创建并引用 BdliveVodPlayerView。
@override
Widget build(BuildContext context) {
  return Scaffold(
    body: Container(
      width: MediaQuery.of(context).size.width,
      height: MediaQuery.of(context).size.width * (9 / 16),
      // 创建 BdliveVodPlayerView 用于渲染视频,BdliveVodPlayerView 内部使用 NativeView 构造。
      child: BdliveVodPlayerView(onPlatformViewCreated: (int viewId) {
        //  在 NativeView 创建完成后,需要将 player 和 viewId 进行绑定。
        player.setPlayerContainerView(viewId);
      }),
    ),
  );
}

设置播放信息

通过设置 vid(视频 ID)和 vodPlayerToken(点播播放器 Token),使用指定点播播放器播放指定视频内容。您可以调用 ListActivityMediaAPI 获取视频 ID,调用 GetVodPlayerToken 获取点播播放器 Token。

Future<void> setVodPlayInfo(String vid, String vodPlayerToken);

播放控制

// 播放。
Future<void> play();

// 暂停播放,再次调用 play 可由暂停恢复到播放。
Future<void> pause();

// 停止播放。
Future<void> stop();

设置起播时间

// 设置视频开始播放的时间点。单位:秒。在调用 play 前设置,可实现从指定时间点开始播放或跳过片头等功能。
Future<void> setStartTime(double startTime);

跳转至指定时间点

// 跳转至视频的指定时间点。单位:秒。可实现拖拽进度条到指定时间开始播放的功能。
Future<bool?> seek(double playbackTime);

设置填充模式

/// 填充模式。
enum TTVideoEngineScalingMode {
  /// 按照视频宽高等比适配画面,不会变形,可能有黑边。
  aspectfit,
  /// 按照视频宽高等比填充画面,不会变形,可能有画面裁剪。
  aspectfill,
  /// 拉伸填充,视频宽高比例与画面比例不一致,可能会导致画面变形。
  fill
}

// 设置视频画面的填充模式。
Future<void> setScalingMode(TTVideoEngineScalingMode scalingMode);

循环播放

获取当前是否循环播放

Future<bool?> isLoop();

设置循环播放

Future<void> setLoop(bool loop);

倍速播放

获取播放速度

Future<double?> speed();

设置倍速播放

// 取值范围:(0,3]。默认值:1.0。
Future<void> setSpeed(double speed);

静音

获取当前是否静音

Future<bool?> isMute();

设置静音

Future<void> setMute(bool mute);

清晰度

获取支持的清晰度列表

Future<List<String>?> supportedResolutions();

获取当前清晰度

Future<String?> currentVideoResolution();

切换当前清晰度

Future<void> setCurrentVideoResolution(String currentVideoResolution);

获取播放信息

/// 播放器加载状态。
enum TTVideoEngineLoadState {
  /// 播放器加载初始状态。
  unknown,
  /// 播放器加载完成,可开始或恢复播放。
  playable,
  /// 播放器发生卡顿,正在加载数据。
  stalled,
  /// 播放器加载数据错误。
  error,
}

// 获取播放器加载状态。
Future<TTVideoEngineLoadState> loadState();

/// 播放状态。
enum TTVideoEnginePlaybackState {
  /// 播放停止。
  stopped,
  /// 播放中。
  playing,
  /// 播放暂停。
  paused,
  /// 播放错误。
  error,
}

// 获取播放状态。
Future<TTVideoEnginePlaybackState> playbackState();

// 获取视频宽度。单位:px。
Future<int?> videoWidth();

// 获取视频高度。单位:px。
Future<int?> videoHeight();

// 获取视频总时长。单位:秒。
Future<double?> duration();

// 获取当前可播放的时长,即已缓存的时长。单位:秒。
Future<double?> playableDuration();

// 获取当前播放时间。单位:秒。
Future<double?> currentPlaybackTime();

设置播放状态回调

Future<void> setDelegate(BdliveVodPlayerDelegate delegate);

播放状态回调

/// 视频播放完成回调。
/// @param error:错误信息。有值表示异常播放完成,否则为正常播放完成。
void Function(BDLiveError? error)? didFinish;
  
/// 授权结果回调。
/// @param success:授权是否成功。error:错误信息。仅在授权失败时有值。
void Function(bool success, BDLiveError? error)? onVodAuthResult;
  
/// 视频支持的清晰度变化回调。
/// @param supportedResolutions:当前视频支持的清晰度列表。defaultResolution:默认选中的清晰度。
void Function(List<String> supportedResolutions, String defaultResolution)? supportedResolutionsDidChange;
  
/// 视频大小变化回调。
/// @param videoWidth:视频宽度。单位:px。videoHeight:视频高度。单位:px。
void Function(int videoWidth, int videoHeight)? videoSizeDidChange;
  
/// 播放状态变化回调。
/// @param playbackState:当前的播放状态。详见 TTVideoEnginePlaybackState。
void Function(TTVideoEnginePlaybackState playbackState)? playbackStateDidChanged;
  
/// 播放器加载状态变化回调。
/// @param loadState:当前播放器的加载状态。详见 TTVideoEngineLoadState。   
void Function(TTVideoEngineLoadState loadState)? loadStateDidChanged;
  
/// 视频渲染开始回调。
void Function()? readyToDisPlay;
  
/// 播放器准备完成,可以播放视频回调。
void Function()? prepared;
  
/// 视频首帧渲染完成回调。
void Function()? readyToPlay;
  
/// 当前可播放时长变化回调。
/// @param playableDuration:当前可播放的时长,即已缓存的时长。单位:秒。
void Function(double playableDuration)? playableDurationDidChange;
  
/// 当前播放时间变化回调。
/// @param currentPlaybackTime:当前播放时间。单位:秒。
void Function(double currentPlaybackTime)? currentPlaybackTimeDidChange;

销毁播放器

Future<void> destroy();
最近更新时间:2024.07.30 18:26:45
这个页面对您有帮助吗?
有用
有用
无用
无用