개요
Video Cloud 고객은 Video Cloud Studio에서 미디어 데이터와 메타데이터에 액세스할 수 있습니다. 브라이트코브 플레이어 고객은 미디어 콘텐츠에 대한 URL을 제공합니다.
비디오 클라우드 고객
Video Cloud 고객은 Video Cloud Studio에 저장된 미디어 데이터에 액세스할 수 있습니다. 자세한 내용은 iOS용네이티브 플레이어 SDK 코드 샘플을 참조하십시오 .
미디어 데이터 검색
재생 API를 사용하여 Video Cloud 라이브러리에서 비디오 및 재생목록 데이터를 검색할 수 있습니다. API에 대한 자세한 내용은재생 API 개요문서를 참조하십시오.
-
BCOVPlaybackService
클래스 메서드를 사용하여 Brightcove의 Playback API에서 비디오 및 재생목록을 검색하십시오. 요청은 비디오/재생 목록을ID
제공하거나 할 수ReferenceID
있습니다. 이 서비스는 URL 요청을하고 반환 된 데이터를 구문 분석합니다. -
이 요청에는 정책 키가 필요합니다. 정책 키에 익숙하지 않은 경우정책 API 개요문서를 참조하십시오.
다음은 Swift에서
BCOVPlaybackService
클래스를 사용하여 비디오를 검색하는 방법의 예입니다.import UIKit import BrightcovePlayerSDK let kViewControllerPlaybackServicePolicyKey = "your policy key" let kViewControllerAccountID = "your account id" let kViewControllerVideoID = "your video id" class ViewController: UIViewController, BCOVPlaybackControllerDelegate { let sharedSDKManager = BCOVPlayerSDKManager.shared() let playbackService = BCOVPlaybackService(accountId: kViewControllerAccountID, policyKey: kViewControllerPlaybackServicePolicyKey) let playbackController :BCOVPlaybackController @IBOutlet weak var videoContainerView: UIView! required init?(coder aDecoder: NSCoder) { playbackController = (sharedSDKManager?.createPlaybackController())! super.init(coder: aDecoder) playbackController.delegate = self playbackController.isAutoAdvance = true playbackController.isAutoPlay = true } override func viewDidLoad() { super.viewDidLoad() // Do any additional setup after loading the view, typically from a nib. // Set up our player view. Create with a standard VOD layout. guard let playerView = BCOVPUIPlayerView(playbackController: self.playbackController, options: nil, controlsView: BCOVPUIBasicControlView.withVODLayout()) else { return } // Install in the container view and match its size. self.videoContainerView.addSubview(playerView) playerView.translatesAutoresizingMaskIntoConstraints = false NSLayoutConstraint.activate([ playerView.topAnchor.constraint(equalTo: self.videoContainerView.topAnchor), playerView.rightAnchor.constraint(equalTo: self.videoContainerView.rightAnchor), playerView.leftAnchor.constraint(equalTo: self.videoContainerView.leftAnchor), playerView.bottomAnchor.constraint(equalTo: self.videoContainerView.bottomAnchor) ]) // Associate the playerView with the playback controller. playerView?.playbackController = playbackController requestContentFromPlaybackService() } func requestContentFromPlaybackService() { playbackService?.findVideo(withVideoID: kViewControllerVideoID, parameters: nil) { (video: BCOVVideo?, jsonResponse: [AnyHashable: Any]?, error: Error?) -> Void in if let v = video { self.playbackController.setVideos([v] as NSArray) } else { print("ViewController Debug - Error retrieving video: \(error?.localizedDescription ?? "unknown error")") } } } }
전체 샘플은 다음을 참조하십시오.
-
BCovVideo객체는 아래와 같이 비디오 메타데이터 정보를 제공합니다.
func requestContentFromPlaybackService() { playbackService?.findVideo(withVideoID: kViewControllerVideoID, parameters: nil) { (video: BCOVVideo?, jsonResponse: [AnyHashable: Any]?, error: Error?) -> Void in if let v = video { print("video name: \(v.properties["name"] as AnyObject)") print("video id: \(v.properties["id"] as AnyObject)") print("video thumbnail: \(v.properties["thumbnail"] as AnyObject)") print("video metadata: \(v.properties)") self.playbackController.setVideos([v] as NSArray) } else { print("ViewController Debug - Error retrieving video: \(error?.localizedDescription ?? "unknown error")") } } }
위의
print()
메서드는 다음과 같은 미디어 정보를 반환합니다.
지리적으로 필터링 된 비디오 작업
iOS용 브라이트코브 플레이어 SDK는 지리적 필터링된 비디오를 지원합니다.
동영상을 볼 수 있거나 볼 수없는 국가를 제어하기 위해 동영상에 지리적 필터링을 추가 할 수있는 두 가지 방법이 있습니다.
iOS 앱에서 해당 비디오에 대해 지리적 필터링이 적용된 국가에서 Brightcove의BCOVPlaybackService
클래스 (Playback API) 를 사용하여 비디오를 검색하면 다음 메시지가 표시됩니다.
Error Domain=kBCOVPlaybackServiceErrorDomain Code=3 "(null)"
UserInfo={kBCOVPlaybackServiceErrorKeyAPIHTTPStatusCode=403,
kBCOVPlaybackServiceErrorKeyAPIErrors=
{type = immutable, count = 1, values = (
0 : {type = immutable dict, count = 4,
entries =>
1 : message = {contents = "Access to this resource is forbidden by access policy."}
2 : {contents = "client_geo"} = us
4 : {contents = "error_subcode"} = {contents = "CLIENT_GEO"}
6 : {contents = "error_code"} = {contents = "ACCESS_DENIED"}
}
)}}
브라이트코브 플레이어 고객
브라이트코브 플레이어 고객은 비디오 자산에 대한 URL을 제공합니다.
다음은 재생 컨트롤러에 비디오 배열을 추가하고 재생을 시작하는 예입니다.
import UIKit
import BrightcovePlayerSDK
let kViewControllerAccountID = "your account id" // For Brightcove registration
class ViewController: UIViewController, BCOVPlaybackControllerDelegate {
let sharedSDKManager = BCOVPlayerSDKManager.shared()
let playbackController :BCOVPlaybackController
@IBOutlet weak var videoContainerView: UIView!
required init?(coder aDecoder: NSCoder) {
// Create the Brightcove playback controller
playbackController = (sharedSDKManager?.createPlaybackController())!
super.init(coder: aDecoder)
// Register your app with Brightcove
playbackController.analytics.account = kViewControllerAccountID
// Configure the player
playbackController.delegate = self
playbackController.isAutoAdvance = true
playbackController.isAutoPlay = true
}
override func viewDidLoad() {
super.viewDidLoad()
// Do any additional setup after loading the view, typically from a nib.
// Create an array of videos
var videoArray = [AnyObject]()
videoArray = [videoWithURL(url: NSURL(string: "https://solutions.brightcove.com/bcls/assets/videos/Great_Horned_Owl.mp4")!),
videoWithURL(url: NSURL(string: "https://solutions.brightcove.com/bcls/assets/videos/Great_Blue_Heron.mp4")!)]
// Set up the player view with a standard VOD layout.
guard let playerView = BCOVPUIPlayerView(playbackController: self.playbackController, options: nil, controlsView: BCOVPUIBasicControlView.withVODLayout()) else {
return
}
// Install in the container view and match its size.
self.videoContainerView.addSubview(playerView)
playerView.translatesAutoresizingMaskIntoConstraints = false
NSLayoutConstraint.activate([
playerView.topAnchor.constraint(equalTo: self.videoContainerView.topAnchor),
playerView.rightAnchor.constraint(equalTo: self.videoContainerView.rightAnchor),
playerView.leftAnchor.constraint(equalTo: self.videoContainerView.leftAnchor),
playerView.bottomAnchor.constraint(equalTo: self.videoContainerView.bottomAnchor)
])
// Associate the playerView with the playback controller.
playerView.playbackController = playbackController
// Load the video array into the player and start video playback
playbackController.setVideos(videoArray as NSArray)
playbackController.play();
}
func videoWithURL(url: NSURL) -> BCOVVideo {
// Set the delivery method for BCOVSources that belong to a video
let source:BCOVSource = BCOVSource(url: url as URL, deliveryMethod: kBCOVSourceDeliveryHLS, properties: nil)
let video = BCOVVideo.init(source: source, cuePoints: BCOVCuePointCollection.init(array: []), properties: [NSObject:AnyObject]())
return video!
}
}
전체 샘플은 다음을 참조하십시오.
이제 iOS용 브라이트코브 플레이어 SDK에 대한 기본적인 이해를 얻게 되었습니다. 다음으로 플레이어 SDK를 사용하는 앱을 빌드하는 단계를 살펴볼 수 있습니다.