안드로이드 : 미디어 컨텐츠 작업

이 항목에서는 Android용 네이티브 SDK를 사용하여 비디오를 검색하고 재생하는 방법을 배우게됩니다.

개요

Video Cloud 고객은 Video Cloud Studio에서 미디어 데이터와 메타데이터에 액세스할 수 있습니다. 브라이트코브 플레이어 고객은 미디어 콘텐츠에 대한 URL을 제공합니다.

비디오 클라우드 고객

Video Cloud 고객은 Video Cloud Studio에 저장된 미디어 데이터에 액세스할 수 있습니다. 자세한 내용은 Android 코드 샘플 용 플레이어 SDK .

미디어 데이터 검색

재생 API를 사용하여 Video Cloud 라이브러리에서 비디오 및 재생목록 데이터를 검색할 수 있습니다. API에 대한 자세한 내용은재생 API 개요문서를 참조하십시오.

  1. 사용 com.brightcove.player.edge.Catalog Brightcove의 Playback API에서 비디오 및 재생 목록을 검색하는 클래스 메서드. 귀하의 요청은 비디오를 제공 할 수 있습니다/재생 목록ID또는ReferenceID . 이 서비스는 URL 요청을하고 반환 된 데이터를 구문 분석합니다.

  2. 이 요청에는 정책 키가 필요합니다. 정책 키에 익숙하지 않은 경우정책 API 개요문서를 참조하십시오.

    다음은 다음을 사용하여 비디오를 검색하는 방법의 예입니다. com.brightcove.player.edge.Catalog수업:

    package com.brightcove.player.samples.exoplayer.basic;
    import android.os.Bundle;
    import android.util.Log;
    import com.brightcove.player.edge.Catalog;
    import com.brightcove.player.edge.VideoListener;
    import com.brightcove.player.event.EventEmitter;
    import com.brightcove.player.model.Video;
    import com.brightcove.player.view.BrightcoveExoPlayerVideoView;
    import com.brightcove.player.view.BrightcovePlayer;
    /**
    * This app illustrates how to use the ExoPlayer with the Brightcove
    * Native Player SDK for Android.
    */
    public class MainActivity extends BrightcovePlayer {
    	private final String TAG = this.getClass().getSimpleName();
    	@Override
    
    	protected void onCreate(Bundle savedInstanceState) {
    		setContentView(R.layout.activity_main);
    		brightcoveVideoView = (BrightcoveExoPlayerVideoView) findViewById(R.id.brightcove_video_view);
    		super.onCreate(savedInstanceState);
    
    		// Get the event emitter from the SDK and create a catalog request to fetch a video from the
    		// Brightcove Edge service, given a video id, an account id and a policy key.
    		EventEmitter eventEmitter = brightcoveVideoView.getEventEmitter();
    		Catalog catalog = new Catalog(eventEmitter, getString(R.string.account), getString(R.string.policy));
    
    		catalog.findVideoByID(getString(R.string.videoId), new VideoListener() {
    		  // Add the video found to the queue with add().
    		  // Start playback of the video with start().
    		  @Override
    		  public void onVideo(Video video) {
    		    Log.v(TAG, "onVideo: video = " + video);
    		    brightcoveVideoView.add(video);
    		    brightcoveVideoView.start();
    		  }
    		});
    	}
    }
  1. 그만큼비디오 개체아래와 같이 미디어 정보를 검색하는 방법을 제공합니다.
    catalog.findVideoByID(getString(R.string.videoId), new VideoListener() {
      // Add the video found to the queue with add().
      // Start playback of the video with start().
      @
      Override
      public void onVideo(Video video) {
        Log.v(TAG, "onVideo: video = " + video);
        Log.v(TAG, "onVideo: videoID = " + video.getId());
        Log.v(TAG, "onVideo: videoName = " + video.getName());
        Log.v(TAG, "onVideo: videoDescription = " + video.getDescription());
        Log.v(TAG, "onVideo: videoImage = " + video.getStillImageUri());
        Log.v(TAG, "onVideo: sourceCollections = " + video.getSourceCollections());
        SourceCollection dashCollection = video.getSourceCollections().get(DeliveryType.DASH);
        if (dashCollection != null) {
          Set < Source > sources = dashCollection.getSources();
          for (Source source: sources) {
            if (!TextUtils.isEmpty(source.getUrl())) {
              Log.v(TAG, "onVideo: DASH source = " + source.getUrl());
            }
          }
        }
    
        brightcoveVideoView.add(video);
        brightcoveVideoView.start();
      }
    });

    Log()메소드는 다음 미디어 정보를 반환합니다.

    비디오 객체
    비디오 객체
  2. 사용자 정의 필드 (있는 경우)를 볼 수 있습니다. Video목적. 다음 코드를onVideo콜백 메서드를 사용하여customField지도.

    catalog.findVideoByID(getString(R.string.videoId), new VideoListener() {
       @
       Override
       public void onVideo(Video video) {
          Map<String, String> customFieldMap = (HashMap<String, String>) video.getProperties().get(Video.Fields.CUSTOM_FIELDS);
         if (customFieldMap != null && customFieldMap.size() > 0) {
           for (Map.Entry<String, String> entry : customFieldMap.entrySet()) {
             Log.v(TAG, "onVideo: Custom fields: Key: " + entry.getKey() + " Value: " + entry.getValue());
           }
         }
         brightcoveVideoView.add(video);
         brightcoveVideoView.start();
      }
    });

    다음은 위 코드에서 볼 수있는 기록 된 출력의 예입니다.

    MainActivity: onVideo: Custom fields: Key: genre Value: Action
    MainActivity: onVideo: Custom fields: Key: customlist Value: customListValue1

    사용자 정의 필드는 다음과 같이 나타낼 수 있습니다. Strings또는Lists . 사용자 정의 필드는List유형, 목록입니다String필드의 값을 설정하기 위해 하나의 값이 선택되는 값.

지리적으로 필터링 된 동영상

Android 용 Brightcove Player SDK는 지리적 필터링 된 비디오를 지원합니다.

동영상에 지역 필터링을 추가하여 동영상을 볼 수 있거나 볼 수없는 국가를 제어 할 수있는 두 가지 방법이 있습니다.

Android 앱에서 Brightcove 's edge를 사용하여 비디오를 검색 할 때목록해당 동영상에 대해 지리적으로 필터링 된 국가의 개체 (Playback API)에 다음 메시지가 표시됩니다.

error { message: Access to this resource is forbidden by access policy.
client_geo: us
error_subcode: CLIENT_GEO
error_code: ACCESS_DENIED }

브라이트코브 플레이어 고객

브라이트코브 플레이어 고객은 비디오 자산에 대한 URL을 제공합니다.

다음은 비디오보기에 비디오를 추가하고 재생을 시작하는 예입니다.

import com.brightcove.player.model.DeliveryType;
import com.brightcove.player.model.Video;
import com.brightcove.player.view.BrightcoveExoPlayerVideoView;
import com.brightcove.player.view.BrightcovePlayer;
import com.brightcove.player.analytics.Analytics;
@Override
protected void onCreate(Bundle savedInstanceState) {
	super.onCreate(savedInstanceState);
	setContentView(R.layout.activity_main);
	BrightcoveVideoView brightcoveVideoView = (BrightcoveVideoView) findViewById(R.id.brightcove_video_view);

	Analytics analytics = brightcoveVideoView.getAnalytics();
	analytics.setAccount("123456789");

	MediaController controller = new MediaController(this);
	brightcoveVideoView.setMediaController(controller);
	brightcoveVideoView.add(Video.createVideo("http://solutions.brightcove.com/bcls/assets/videos/Bird_Titmouse.mp4", DeliveryType.MP4));
	brightcoveVideoView.start();
}
 

다음으로 SDK 아키텍처 내에서 이벤트가 작동하는 방식을 살펴 보겠습니다.