iOS Brightcove 播放器 SDK - 设置初始时间

5

我正在使用Brighcove iOS 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

我该如何设置视频的初始时间?我已经阅读了SDK文档,但没有找到任何属性或方法。
1个回答

2
这是一个有趣的问题。目前没有一种简单的方法可以使用Brightcove Player SDK for iOS来实现这一点,但您可以直接到AVFoundation级别来完成。以下是具体步骤:
播放控制器将为每个视频创建一个播放会话。在每个播放会话内,都包含一个AVPlayer,其中包含一个AVPlayerItem和您的视频(实际上是其中一个视频的BCOVSource)的URL。一旦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];

        }];
    }
}

非常感谢你详细的答案,它的运行非常流畅! - Diego Vidal
大家好, 请帮我提供一个例子。我无法播放带有URL的视频。 - Abhishek

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接