サポート問い合わせ先| システムステータス
ページコンテンツ

    iOS:メディアコンテンツの操作

    このトピックでは、Native SDK foriOSを使用してビデオを取得して再生する方法を学習します。

    概要

    Video Cloud のお客様は、Video Cloud Studio からメディアデータとメタデータにアクセスできます。Brightcoveプレーヤーのお客様は、メディアコンテンツの URL を指定します。

    ビデオクラウドのお客様

    Video Cloud のお客様は、Video Cloud Studio に保存されているメディアデータにアクセスできます。詳細については、 iOS 用ネイティブ Player SDK コードサンプルを参照してください

    メディアデータを取得しています

    再生 API を使用して、Video Cloud ライブラリからビデオとプレイリストデータを取得できます。API の詳細については、「再生 API の概要」ドキュメントを参照してください。

    1. BCOVPlaybackServiceクラスメソッドを使用して、Brightcoveの再生 API から動画と再生リストを取得します。あなたの要求は、IDビデオ/プレイリストを提供することができますReferenceID .このサービスは、URL 要求を行い、返されたデータを解析します。

    2. このリクエストには、ポリシーキーが必要です。ポリシーキーに慣れていない場合は、「ポリシー API の概要」ドキュメントを参照してください。

      BCOVPlaybackService Swiftのクラスを使用してビデオを取得する方法の例は次のとおりです。

      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")")
          }
        }
      }
      }

      完全なサンプルについては、以下を参照してください。

    3. 以下に示すように、 BCovVVideoオブジェクトは、ビデオのメタデータ情報を提供します。

      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()上記のメソッドは、次のメディア情報を返します。

      Video object
      Videoオブジェクト

    ジオフィルタリングされたビデオの操作

    iOS 用 Brightcove Player SDK は、ジオフィルタリングされた動画をサポートしています。

    動画にジオフィルターを追加して、視聴できる (またはできない国) を制御するには、次の 2 つの方法があります。

    iOS アプリで、その動画でジオフィルターが適用されている国で Brightcove BCOVPlaybackServiceのクラス(再生 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"}
    }
    )}}

    Brightcoveプレーヤーのお客様

    Brightcove Player の顧客は、動画アセットの 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 用 Brightcove Player SDK の基本を理解しました。次に、Player SDK を使用するアプリを構築する手順を説明します。


    ページの最終更新日04 Oct 2021