개요
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를 사용하는 앱을 빌드하는 단계를 살펴볼 수 있습니다.