Veeplay 3.2.14

Veeplay 3.2.14

测试已测试
语言语言 Obj-CObjective C
许可证 NOASSERTION
发布最后发布2023年10月

Gabi DobocanOvidiu D. Nitan维护。



 
依赖项
XCDYouTubeKit~> 2.5
YTVimeoExtractor~> 1.2
KVOController~> 1.2.0
PureLayout~> 3.1
KAProgressLabel~> 3.0
Reachability>= 0
 

Veeplay 3.2.14

  • 作者
  • Veeplay

关于

Veeplay媒体播放器允许您

  • 创建同步视频和叠加层的播放列表
  • 从外部JSON文件、等效的NSDictionary结构或直接通过代码属性配置播放列表
  • 创建自定义、原生的叠加层
  • 自动配置线性插入(前、中、后广告)以及非线性插入(横幅叠加层),符合VAST 1.0、2.0、3.0和VMAP 1.0规范
  • 创建自定义播放器皮肤,用logo标记播放器,插入叠加广告,自定义播放器控件
  • 实时跟踪视频和叠加层生命周期事件,如渲染

演示

安装cocoapods,然后运行:

pod try Veeplay

安装

目前有两条集成路径:通过CocoaPods或通过标准库下载。

  1. 通过CocoaPods安装(推荐)

    • 将以下行添加到您的Podfile中

        pod 'Veeplay'
      
    • 运行pod install以安装播放器和所有依赖项。运行pod update以保持库更新。

  2. 通过库下载安装

    • MediaPlayer.frameworkAVFoundation.frameworkCoreMedia.frameworkSystemConfiguration.frameworklibz.dylib添加到您的项目中。

      • 在项目设置屏幕中选择您的目标。
      • 选择“构建阶段”标签页。
      • 展开“链接二进制与库”区域。
      • 单击“+”按钮,并将 MediaPlayer.frameworkAVFoundation.frameworkCoreMedia.frameworkSystemConfiguration.frameworklibz.dylib 添加到您的项目中。
    • 将播放器的静态库添加到您的项目中。

      • 将“libVeeplay.a”文件拖到您的项目中。
      • 被提示时,请确保选中应该链接到静态库的项目目标。
      • 在项目设置屏幕中选择您的目标。
      • 选择“构建设置”标签。
      • 搜索“其他链接器标志”,并确保存在“-ObjC”标志。如果不存在,请添加它。
      • 搜索“iOS部署目标”,并确保将值设置为iOS 5及以上(iOS < 5不受支持)。
    • 将播放器的头文件添加到您的项目中。

      • 将“headers”文件夹中的所有头文件拖到您的Xcode项目中,或者

      • 在项目设置屏幕中选择您的目标。

      • 选择“构建设置”标签。

      • 搜索“头文件搜索路径”,并确保所有头文件都在Xcode已知的位置。

    • 将播放器的资源文件添加到您的项目中。

      • 将“Assets”文件夹中的所有文件拖到您的Xcode项目中。
      • 被提示时,请确保选中应该包含资源的项目目标。

开始使用

https://panel.veeplay.com 上设置一个账户,并在“许可管理”下添加您应用的bundle标识。

导入播放器的头文件,以及VAST/VMAP或其他插件

#import "APSMediaPlayer.h" 
#import "APSVASTMediaBuilderPlugin.h"

创建一个新的APSMediaBuilder实例,并按需添加插件作为APSMediaUnit

APSMediaBuilder *builder = [[APSMediaBuilder alloc] init]; 
[builder addPlugin:[[APSVASTMediaBuilderPlugin alloc] init]]; 

可选,将APSMediaUnit的debugMode标志设置为YES以启用控制台日志记录

builder.debugMode = YES;

将媒体播放器添加到一个视图中

[APSMediaPlayer sharedInstance].view.frame = CGRectMake(5, 5, 310, 450); 
[self.view addSubview:[APSMediaPlayer sharedInstance].view];

下一步是创建一个 APSMediaUnit 的播放列表,供播放器播放。这是 builder 对象所完成的;它 acts like a configurable APSMediaUnitAPSMediaOverlay 工厂。可以通过指定一个指向JSON配置文件的URL或提供在 NSDictionary 容器中的类似配置结构来进行配置。

由于远程配置涉及网络请求的过程,因此构建器公开了一个异步配置方法

[builder configureFromURL:[NSURL URLWithString:@"http://example.com/player.json"] onComplete:^ {
    // TODO: Request and play media units here
}];

在这一点上,构建器已配置并能够生成一个准备播放的媒体单元数组。但是,在请求单元生成时,像 APSVASTMediaBuilderPlugin 这样的插件需要执行额外的网络请求才能工作。因此,还有一个异步单元检索方法

[builder configureFromURL:[NSURL URLWithString:@"http://example.com/player.json"] onComplete:^ {
    [builder requestMediaUnitsWithCompletionBlock:^(NSArray *units) {
        [[APSMediaPlayer sharedInstance] playMediaUnits:units];
    }];
}];

在最终执行块中,我们指示播放器使用通过JSON输入远程配置的最终生成的媒体单元数组开始播放。

从JSON配置

查看 此指南 以获取所有可用配置选项和示例的相关文档。

创建自定义覆盖控制器

APSMediaPlayer 允许开发者创建自己的、JSON 或字典配置的可配置覆盖。要创建一个自定义覆盖

  • 创建一个新的类,该类继承自 APSMediaPlayerOverlayController,它是自身的 UIViewController 子类。

  • 实现 [KRAdapter 类型],返回一个唯一字符串来标识覆盖。这在配置字典中也被使用。

  • 实现 [APSMediaPlayerOverlayControllerProtocol load],以执行自定义覆盖创建代码。当播放器第一次调用覆盖控制器对象时,将调用此方法。您可以使用 self.overlay.parameters 访问在 JSON 或 NSDictionary 配置中定义的配置参数。您也可以使用 self.overlay.parentUnit 访问当前运行单元的信息。

  • 根据需要实现任何其他协议定义的方法,请参阅 APSMediaPlayerOverlayControllerProtocol 以获取完整列表。

  • 将新创建的类注册到播放器

      [[APSMediaPlayer sharedInstance] registerClass:[CLASSNAME class] inGroup:kAPSMediaPlayerOverlayControllersGroup type:@"TYPE"];
    

使用 Chromecast

要连接并发送播放到 Google Chromecast,您需要安装 Veeplay Chromecast 插件。请参阅完整文档 此处

安装

  • 将以下行添加到您的 Podfile

      pod "VeeplayChromecast"
    
  • 或者,如果您不使用 CocoaPods 进行安装,请从 存储库 获取最新静态库、头文件和资源。还请安装最新版本的 Google Cast iOS Sender API 库

  • 导入 VeeplayChromecastManager 头文件

      #import "VeeplayChromecastManager.h"
    

要启动插件,设置 APSChromeCastManager 共享实例上的 Chromecast 应用程序 ID

    [APSChromecastManager sharedInstance].chromecastAppId = @"appid"

您可以通过将 chromecast 添加到 JSON 配置文件中的 controls 部分的组件数组,在控制栏中显示 Chromecast 播放控制

    {
        "content": [
            "url": "http://......",
            "autoplay": true,
            "controls": {
                "components": [
                    "playback",
                    "totalTime",
                    "slider",
                    "currentTime",
                    "chromecast"
                ]
            }
        ]
    }

另外,也可以通过将 kAPSChromecastControl 添加到 APSMediaUnitcontrolsParameters 属性来程序化地配置此功能

    unit.controlsParameters = @{kAPSControlsComponents: @(APSPlaybackControl|APSCurrentTimeControl|APSTimeSliderControl|APSTotalTimeControl|kAPSChromecastControl|APSFullScreenControl)};

使用 Google IMA SDK

可选地,Veeplay 允许使用 Google 的 IMA SDK 而不是内部 VAST 广告播放器。要执行此操作,首先添加 VeeplayIma 集成

pod "VeeplayIma", "~> 1.0"

然后,尽快启用 Veeplay 以使用 Google IMA

[[APSMediaPlayer sharedInstance] setPreferGoogleIma:YES];

使用 Marlin DRM

APSMediaPlayer 支持使用由 ExpressPlay 提供的 SDK 提供的 Marlin DRM。请参阅完整文档 此处

安装

  • 安装 ExpressPlay SDK。

  • 将以下行添加到您的 Podfile

      pod "VeeplayMarlinManager"
    
  • 如果没有使用 CocoaPods 进行安装,请从存储库 此处 获取最新静态库和头文件。

  • 导入 VeeplayMarlinManager 头文件

      #import "VeeplayMarlinManager.h"
    
  • 实例化 Marlin 管理对象并将其注册到播放器中

      VeeplayMarlinManager *marlinManager = [[VeeplayMarlinManager alloc] init];
      [[APSMediaPlayer sharedInstance] registerUnitManager:marlinManager];
    
  • 将 APSMediaUnit 对象的 managerType 属性设置为 @"marlin"

  • 可选地,为了使播放器下载并将宽带许可证添加到本地存储,可以将项的 metadata 字典中的 kAPSMetadataDrmUrl 键设置为许可证文件的字符串 URL。要从 JSON 配置,设置 drm_encoding_url 元数据键。

启用画中画支持

要启用画中画支持,请确保您已按照 Apple 的文档 中的说明配置了您的项目,然后

  • 导入 PiP 后端的头文件

      #import <APSPiPPlayer.h>
    
  • 将后端播放器的类设置为 APSPipPlayer

      [[APSMediaPlayer sharedInstance] setBackendPlayerClass:[APSPiPPlayer class]];
    
  • (可选)通过将 APSPiPControl 添加到 APSMediaUnitcontrolsParameters 属性在控制栏中显示 Picture in Picture 控制器

      unit.controlsParameters = @{kAPSControlsComponents: @(APSPlaybackControl|APSCurrentTimeControl|APSTimeSliderControl|APSTotalTimeControl|kAPSChromecastControl|APSPiPControl)};
    
    • 或者,您还可以通过将 pictureInPicture 添加到配置文件中的 JSON 配置文件中 controls 部分下的组件数组中,在控制栏中显示 Picture in Picture 播放控制器

      { "content": [ "url": "http://......", "autoplay": true, "controls": { "components": [ "playback", "totalTime", "slider", "currentTime", "pictureInPicture" ] } ] }

启用后台播放

要启用在应用程序后台运行时播放视频,首先在您的应用程序功能中 启用后台音频,然后将 APSMediaPlayer 的 enableBackgroundPlayback 属性设置为 true

[APSMediaPlayer sharedInstance].enableBackgroundPlayback = YES;

示例单元配置

  • 以编程方式配置单元

      APSMediaUnit *unit = [[APSMediaUnit alloc] init];
      unit.url = [NSURL URLWithString:@"http://url.to/your-protected-media"];
      unit.managerType = kVeeplayMarlinDRMEncoding;
      unit.metadata = [NSMutableDictionary dictionaryWithDictionary: @{ kAPSMetadataDrmUrl: @"http://url.to/marlin-broadband-key" }];
    
  • 从JSON配置单元

      {
              "url": "http://url.to/your-protected-media",
              "manager": "marlin",
              "metadata": {
                      "drm_encoding_url": "http://url.to/marlin-broadband-key"
              }
      }
    

类参考

查看完整的类参考这里.

代码示例

查看展示代码示例的项目,包含各种播放场景的代码示例这里.

如果您已安装 cocoaPods,您可以在终端输入 pod try Veeplay 立即看到 Veeplay 播放器的演示。

需求

APSMediaPlayer 依赖于以下作为依赖项安装的免费许可库

作者

Appscend Video Solutions GmbH

许可

商业许可。请联系 [email protected]