Flutter播放器

阿里云Flutter播放器SDK为移动端应用提供高效的音视频集成解决方案,支持移动端开发者快速实现直播、点播等核心视频场景。本文介绍阿里云Flutter播放器SDK的直播播放功能。

标准直播播放

  1. 集成SDK。

    请参考Flutter播放器集成SDK进行集成。

  2. 实现直播播放。

    1. 快速开始。

      请参考Flutter播放器快速开始实现基础播放功能。

    2. 设置直播播放源。

      Flutter播放器SDK仅支持1种直播播放方式,为UrlSource播放。

      直播视频UrlSource播放

      使用UrlSource播放方式播放直播视频,需要将播放器的setUrl属性设置为直播拉流地址。播放地址可以是第三方直播地址或阿里云直播服务中的拉流地址。

      阿里云直播拉流地址可以通过直播控制台的地址生成器生成。详情请参见阿里云直播地址生成器

      void onViewPlayerCreated(viewId) async {
        // 将渲染的View设置给播放器
        fAliplayer.setPlayerView(viewId);
        // 设置播放源
        switch (_playMode) {
          // UrlSource播放方式
          case ModeType.URL:
            this.fAliplayer.setUrl("填写资源的播放地址"); // 播放地址可以是第三方直播地址,或阿里云直播服务中的拉流地址。
            break;
          default:
        }
      }

RTS直播播放

说明
  • AndroidiOS端原生层集成

    Android端集成:在build.gradle文件中添加依赖即可,示例如下。

    dependencies{
        def player_sdk_version = "7.2.0"
        def rts_sdk_version = "7.2.0"
        
        // 播放器与RTS的桥接层(AlivcArtc),版本号需要与播放器一致,需要和 Rts低延时直播组件 一起集成
        implementation 'com.aliyun.sdk.android:AlivcArtc:$player_sdk_version'
        // Rts低延时直播组件 ,独立版本号
        implementation 'com.aliyun.rts.android:RtsSDK:$rts_sdk_version'
    }

    iOS端集成:在Podfile文件中添加依赖即可,示例如下。

    # player_sdk_version为阿里云iOS播放器SDK的版本号,例如:7.2.0
    player_sdk_version = '7.2.0'
    # rts_sdk_version为阿里云超低延时直播SDK的版本号,独立版本号 例如:7.2.0
    rts_sdk_version = '7.2.0'
    
    target 'Runner' do
      flutter_install_all_ios_pods File.dirname(File.realpath(__FILE__))
      # 播放器与RTS的桥接层(AlivcArtc),版本号需要与播放器一致,需要和 Rts低延时直播组件 一起集成
      pod 'AliPlayerSDK_iOS_ARTC', player_sdk_version 
      # Rts低延时直播组件
      pod 'RtsSDK', rts_sdk_version  
    
    end

如需播放ARTC流,除了需要在集成时引入RTS相关依赖,Android端还需在创建播放器前调用FlutterAliPlayerFactory.loadRtsLibrary();加载RtsSDK动态库,示例如下:

  1. 配置pubspec.yaml文件。

    name: your project
    description: xxxxx
    version:  1.0.0+1
    
    # The following line prevents the package from being accidentally published to
    # pub.dev using `pub publish`. This is preferred for private packages.
    publish_to: 'none' # Remove this line if you wish to publish to pub.dev
    
    environment:
      sdk: ">=2.15.0 <4.0.0"
    
    dependencies:
      flutter:
        sdk: flutter
    
      // add flutter_aliplayer
      flutter_aliplayer: "7.3.1"
    
    dev_dependencies:
      flutter_test:
        sdk: flutter
    
    # For information on the generic Dart part of this file, see the
    # following page: https://dart.dev/tools/pub/pubspec
    
    # The following section is specific to Flutter.
    flutter:
    
      # The following line ensures that the Material Icons font is
      # included with your application, so that you can use the icons in
      # the material Icons class.
      uses-material-design: true
  2. 加载RTS SDK。

    说明
    1. 使用Android播放器V7.3.1及以下版本时,需手动加载RTS SDK。

    2. useAIOFramework=true(默认false)时使用音视频终端SDK,否则使用播放器SDKRTS SDK。

    3. 建议使用最新版本SDK:

      1. 音视频终端SDK请参考Android端音视频终端SDKiOS端音视频终端SDK

      2. 播放器SDK请参考下载播放器SDK

      3. rts低延迟直播组件请参考Android端实现RTS拉流iOS端实现RTS拉流

    dependencies {
        // 定义 SDK 内核
        def useAIOFramework = false
    
        // 定义 SDK 版本
        // 音视频终端SDK
        def aio_sdk_version = "7.1.0"
        // 播放器SDK
        def player_sdk_version = "7.2.0"
        // rts低延迟直播组件
        def rts_sdk_version = "7.2.0"
    
        // 根据 useAIOFramework 的值选择相应的 SDK
        if (useAIOFramework) {
            // 音视频终端SDK(互动直播):直播推流(含超低延时直播、RTC连麦)+播放器
            implementation "com.aliyun.aio:AliVCSDK_InteractiveLive:$aio_sdk_version"
        } else {
            // 阿里云播放器独立SDK
            implementation "com.aliyun.sdk.android:AliyunPlayer:$player_sdk_version-full"
            implementation "com.aliyun.sdk.android:AlivcArtc:$player_sdk_version"
            implementation "com.aliyun.rts.android:RtsSDK:$rts_sdk_version"
        }
    
        implementation 'com.google.code.gson:gson:2.10.1'
    }
    

    手动加载RTS SDK。

    FlutterAliPlayerFactory.loadRtsLibrary(true);
  3. 播放视频。

    FlutterAliplayer player = FlutterAliPlayerFactory.createAliPlayer();
    player.setUrl("artc://xxxx");
    
    player.prepare();
    player.play();