iOS Brightcove Player SDK - 设置初始时间

Die*_*dal 5 video sdk ios brightcove

我正在使用适用于iOS的Brighcove SDK播放一些视频.播放视频的基本设置是(基于Brightcove指南):

@interface VideoPlayerViewController()
@property (strong, nonatomic) id <BCOVPlaybackController> videoController;
@end

@implementation VideoPlayerViewController

-(void)viewDidLoad {

// create an array of videos
NSArray *videos = @[
                    [self videoWithURL:[NSURL URLWithString:@"http://cf9c36303a9981e3e8cc-31a5eb2af178214dc2ca6ce50f208bb5.r97.cf1.rackcdn.com/bigger_badminton_600.mp4"]],
                    [self videoWithURL:[NSURL URLWithString:@"http://devimages.apple.com/iphone/samples/bipbop/bipbopall.m3u8"]]
                    ];


// add the playback controller
self.controller = [[BCOVPlayerSDKManager sharedManager] createPlaybackControllerWithViewStrategy:[self viewStrategy]];
self.controller.view.frame = self.view.bounds;
// create a playback controller delegate
self.controller.delegate = self;

self.controller.view.autoresizingMask = UIViewAutoresizingFlexibleHeight|UIViewAutoresizingFlexibleWidth;
// add the controller view as a subview of the SVPViewController's view
[self.view addSubview:self.controller.view];

// turn on auto-advance
self.controller.autoAdvance = YES;
// turn on auto-play
self.controller.autoPlay = YES;

// add the video array to the controller's playback queue
[self.controller setVideos:videos];
// play the first video
[self.controller play];    

}

@end
Run Code Online (Sandbox Code Playgroud)

如何设置视频的初始时间?我已阅读SDK文档,但未找到任何属性或方法.

eri*_*ice 2

这是一个有趣的问题。目前还没有办法使用适用于 iOS 的 Brightcove Player SDK 来轻松完成此操作,但您可以直接进入 AVFoundation 级别来执行此操作。就是这样:

播放控制器将为您提供给它的每个视频创建一个播放会话。每个播放会话的内部都是一个 AVPlayer,其中包含一个带有您的视频(实际上是视频的 BCOVSource 之一)URL 的 AVPlayerItem。一旦 AVPlayerItem 的status属性值为AVPlayerItemStatusReadyToPlay,您就可以安全地使用 AVPlayer 的任何-seekToTime方法来查找视频到所需的视频开始时间。有一个生命周期事件被发送到您的委托(如果您实现了适当的委托方法),您可以监听该事件以获得有关此事件的通知。

此外,您可能需要进行设置self.controller.autoPlay = NO,以便在您有机会找到所需的开始时间之前,视频不会开始播放。然后您可以-play从搜索完成处理程序中手动调用。

这是基本思想(请注意此代码未经测试):

- (void)playbackController:(id<BCOVPlaybackController>)controller session:(id<BCOVPlaybackSession>)session didReceiveLifecycleEvent:(BCOVPlaybackSessionLifecycleEvent *)event
{
    if ([kBCOVPlaybackSessionLifecycleEventReady isEqualToString:event.eventType])
    {
        [session.player seekToTime:desiredStartTime completionHandler:^() {

            [session.player play];

        }];
    }
}
Run Code Online (Sandbox Code Playgroud)