단계별: 안드로이드용 네이티브 SDK를 사용하는 간단한 비디오 앱

이 항목에서는 Android Studio와 Android용 브라이트코브 플레이어 SDK를 사용하여 브라이트코브 비디오 클라우드 계정에서 비디오를 재생하는 앱과 브라이트코브 비디오 클라우드 재생 목록의 비디오를 재생하는 앱을 만듭니다.

개요

빠른 시작을 완료하면 다음 기능을 사용할 수 있습니다.

  • 프로젝트를 생성하고 Gradle을 사용하여 Android 용 Brightcove Player SDK를 추가합니다.
  • 다음을 포함하도록 레이아웃 변경BrightcoveExoPlayerVideoView .
  • 에 추가onCreate()동영상 재생 방법 .다른 출처에서.

고객

개발을 위해 Android Studio를 사용하고 Android 앱에서 Android 용 Brightcove Player SDK를 사용하는 데 관심이있는 개발자.

전제 조건

Java 및 Android 앱 개발에 대한 최소한의 지식.

준비해

Android Studio를 설치하여 개발 준비

  1. 다운로드안드로이드 스튜디오신청.
  2. Android Studio 지침에 따라 애플리케이션을 설치합니다.

프로젝트 생성

Android Studio에서 프로젝트를 만든 다음 Gradle을 사용하여 플레이어 SDK에 연결합니다.

Android Studio에서 프로젝트 만들기

  1. Android Studio를 엽니 다.
  2. Welcome to Android Studio 대화 상자에서 New Project 를 선택합니다.
    새 프로젝트 선택
    새 프로젝트 선택
  3. 새 프로젝트 대화 상자에서 빈 활동을 선택하고 다음을 클릭하십시오.
    빈 활동 선택
    빈 활동 선택
  4. Name , Package name , Save location , LanguageMinimum SDK 값을 제공합니다. 이 빠른 시작에서는 아래 표시된 값이 사용됩니다.

    새 프로젝트
    새 프로젝트
  5. 마침을클릭합니다.
  6. Android Studio는 잠시 동안 작동하고 결국 프로젝트의 초기 상태를 표시합니다.

    스튜디오 프로젝트
    스튜디오 프로젝트

Gradle을 사용하여 Android 용 Brightcove Player SDK에 연결

Gradle은 Android Studio와 통합되어 있으므로이를 사용하여 Android 용 Native SDK를 프로젝트에 추가합니다.

  1. Android 보기에서 프로젝트 파일을 찾을 수 있습니다.
  2. Gradle 스크립트그룹을 확장하고settings.gradle파일을 엽니다.
    빌드 gradle 파일
    빌드 gradle 파일
  3. repositories섹션에서 브라이트코브 Maven 리포지토리에 대한 항목을 추가하십시오.
    dependencyResolutionManagement {
      repositoriesMode.set(RepositoriesMode.FAIL_ON_PROJECT_REPOS)
      repositories {
          google()
          mavenCentral()
          maven {
                url 'https://repo.brightcove.com/releases'
          }
      }
    }
    rootProject.name = "PlayVideos"
    include ':app'
  4. Gradle Scripts그룹에서 PlayVideos 프로젝트의 현재 모듈과 연결된build.gradle파일을 엽니다.

    빌드 gradle 파일
    빌드 gradle 파일
  5. build.gradle파일에서 해당dependencies섹션을 찾습니다. 최신 버전의 Android용 Native SDK를 포함합니다. 값 바꾸기8.0.0아래에서 찾을 수있는 최신 SDK 버전으로개요 : Android 용 Brightcove 기본 SDK문서.
    dependencies {
      implementation 'androidx.appcompat:appcompat:1.4.1'
      implementation 'com.google.android.material:material:1.5.8'
      implementation 'androidx.constraintlayout:constraintlayout:2.1.3'
      testImplementation 'junit:junit:4.13.2'
      androidTestImplementation 'androidx.test.ext:junit:1.1.3'
      androidTestImplementation 'androidx.test.espresso:espresso-core:3.4.8'
      implementation "com.brightcove.player:exoplayer2:8.0.0"
    }
     

    Gradle 커뮤니티에서는 '+'문자로 동적 종속성 버전을 사용하는 것이 바람직하지 않습니다. 동적 버전 관리를 사용하면 새 API가 앱의 소스 코드와 예기치 않게 호환되지 않을 수 있으므로 빌드 프로세스에 심각한 위험이 있습니다.

  6. Gradle 스크립트그룹에서gradle.properties파일을 엽니다.

    그레이들 속성
    그레이들 속성
    에서gradle.properties아래 코드를properties사용하여 수정합니다. 샘플 코드는 android-player-samples 저장소에서 찾을 수 있습니다.
    android.enableJetifier=true
    android.useAndroidX=true
    anpVersion=8.0.0
    org.gradle.jvmargs=-XX\:MaxPermSize\=512m
     
  7. 프로젝트를 동기화하여 Gradle 파일 변경 사항을 선택하십시오.

애플리케이션 코딩

다음으로 앱을 레이아웃하고 동영상 목록을 만들고 동영상을 재생하는 코드를 작성합니다.

앱의 레이아웃 정의

빈 활동이 있어도 간단한TextView형세. 이것을BrightcoveExoPlayerVideoView , 플레이어의보기를 정의합니다.

  1. 파일을app/res/layout/activity_main.xml열고코드를 클릭합니다 .

    레이아웃 XML 파일
    레이아웃 XML 파일
  2. 기존 제거TextView요소를 추가하고BrightcoveExoPlayerVideoView섹션에서 결과 XML은 다음과 같이 나타납니다. 나중에 사용할 수 있도록id뷰의 이름이 지정된다는 점에brightcove_video_view유의하세요.

    <?xml version="1.0" encoding="utf-8"?>
    <androidx.constraintlayout.widget.ConstraintLayout 
      xmlns:android="http://schemas.android.com/apk/res/android"
        xmlns:app="http://schemas.android.com/apk/res-auto"
        xmlns:tools="http://schemas.android.com/tools"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        tools:context=".MainActivity">
    
      <com.brightcove.player.view.BrightcoveExoPlayerVideoView
          android:id="@+id/brightcove_video_view"
          android:layout_width="match_parent"
          android:layout_height="280dp"
          android:layout_gravity="center_horizontal|top"/>
    </androidx.constraintlayout.widget.ConstraintLayout>

인터넷을 사용하도록 앱 활성화

  1. 열기app/manifests/AndroidManifest.xml파일.
  2. 직후<application>코드 블록이지만 결말 위에</manifest>태그에 다음을 삽입하여 인터넷 액세스를 활성화하십시오.

    <uses-permission android:name="android.permission.INTERNET"/>
  3. 프로젝트를 동기화하여 다시 빌드하고 이러한 변경 사항을 선택하십시오.

보기 만들기 및 비디오 재생

  1. 돌아 가기MainActivity.java파일.

    MainActivity 파일
    MainActivity 파일
  2. 에 대한MainActivity클래스, 확장BrightcovePlayer수업. 이는 앱에 대한 기본 수명주기 관리를 제공합니다.

    public class MainActivity extends BrightcovePlayer {
  3. 입력을BrightcovePlayer시작하면 선택할 수 있는 옵션이 표시됩니다. BrightcovePlayer옵션을 두 번 클릭하면import명령문이 추가됩니다.

    BrightcovePlayer 클래스
    BrightcovePlayer 클래스
  4. 찾기onCreate()함수. 슈퍼클래스에 들어가기 전에 다음과brightcoveVideoView같이 지정하십시오.

    • 인스턴스 만들기BrightcoveExoPlayerVideoView레이아웃과 연결합니다. 대부분의 경우 exoplayer보기를 사용합니다. 자세한 내용은비디오보기 선택문서.

    • BrightcovePlayer확장할 때는 슈퍼클래스에 들어가기brightcoveVideoView전에 를 할당해야 합니다. 이를 통해 일부 스톡 비디오 플레이어 수명 주기 관리가 가능합니다.
    public class MainActivity extends BrightcovePlayer {
      @Override
      protected void onCreate(Bundle savedInstanceState) {
        setContentView(R.layout.activity_main);
        brightcoveVideoView = (BrightcoveExoPlayerVideoView) findViewById(R.id.brightcove_video_view);
        super.onCreate(savedInstanceState);

    위의 강조 표시된 코드를 붙여넣을 때옵션 + 리턴추가할 키import에 대한 진술BrightcoveExoPlayerVideoView수업.

  5. 다음으로 분석을 사용하여 Brightcove 플레이어 계정 ID를 Brightcove에 보내야합니다. setAccount()방법.

    Analytics analytics = brightcoveVideoView.getAnalytics();
    analytics.setAccount("your account Id");
  6. 선택 사항: 재정의하면BrightcoveExoPlayerVideoView클래스 또는 Brightcove 플레이어 및 카탈로그를 사용하지 않는 경우 Video Cloud 게시자 ID를 Video Cloud Analytics로 보내야합니다. 분석을 사용하여이를 수행 할 수 있습니다. setAccount()방법. 이를 통해 비디오 클라우드 분석에서 이 앱에 대한 데이터를 볼 수 있습니다.

    Analytics analytics = brightcoveVideoView.getAnalytics();
    analytics.setAccount("your account Id");

  7. 원격 서버에서 호스팅되는 비디오에서 비디오 개체를 만듭니다. 가지고 있는 비디오 유형과DeliveryType일치하도록 를 설정합니다.

    Video video = Video.createVideo("https://sdks.support.brightcove.com/assets/videos/hls/greatblueheron/greatblueheron.m3u8",
      DeliveryType.HLS);
  8. 비디오 재생이 시작되기 전에 포스터 이미지로 사용할 원격 이미지를 로드합니다.

    try {
      java.net.URI myposterImage = new java.net.URI("https://sdks.support.brightcove.com/assets/images/general/Great-Blue-Heron.png");
      video.getProperties().put(Video.Fields.STILL_IMAGE_URI, myposterImage);
    } catch (URISyntaxException e) {
      e.printStackTrace();
    }
  9. 보기에 비디오를 추가하고 비디오 재생을 시작합니다.

    brightcoveVideoView.add(video);
    brightcoveVideoView.start();
  10. 코드는 다음과 비슷해야합니다.

    package com.brightcove.playvideos;
    
      import android.os.Bundle;
      
      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 java.net.URISyntaxException;
      
      public class MainActivity extends BrightcovePlayer {
      
          @Override
          protected void onCreate(Bundle savedInstanceState) {
            setContentView(R.layout.activity_main);
            // Create the video view
            brightcoveVideoView = (BrightcoveExoPlayerVideoView) findViewById(R.id.brightcove_video_view);
    
            super.onCreate(savedInstanceState);
    
            // Optional: For Brightcove Player customers to register their apps
            Analytics analytics = brightcoveVideoView.getAnalytics();
            analytics.setAccount("your account Id");
      
            // Define a video from a remote server
            Video video = Video.createVideo("https://sdks.support.brightcove.com/assets/videos/hls/greatblueheron/greatblueheron.m3u8",
              DeliveryType.HLS);
      
            // Load a remote poster image
            try {
              java.net.URI myposterImage = new java.net.URI("https://sdks.support.brightcove.com/assets/images/general/Great-Blue-Heron.png");
              video.getProperties().put(Video.Fields.STILL_IMAGE_URI, myposterImage);
            } catch (URISyntaxException e) {
              e.printStackTrace();
            }
      
            // Add video to the view
            brightcoveVideoView.add(video);
            // Start video playback
            brightcoveVideoView.start();
      
          }
      }
  11. 애플리케이션을 실행하거나 디버그하여 비디오 재생을 확인하십시오.

비디오 가져 오기 및 재생

이 섹션에서는Catalog클래스를 사용하여 Video Cloud 서버에서 단일 비디오를 검색 한 다음 재생합니다.

com.brightcove.player.edge.Catalog클래스는브라이트코브 재생 API에서 비디오 및 재생목록을 검색하기 위한 비동기 메서드를 제공합니다. 이 API는 Video Cloud 라이브러리에서 콘텐츠를 검색하는 데 권장되는 최신 API입니다.

불필요한 코드 제거

  1. 이전 앱의 일부 코드는 더 이상 필요하지 않습니다. onCreate()메서드에서 슈퍼클래스를 입력한 후 모든 코드를 제거합니다.
  2. 확인onCreate()방법은 다음과 같이 나타납니다.

    public class MainActivity extends BrightcovePlayer {
    
      @Override
      protected void onCreate(Bundle savedInstanceState) {
        setContentView(R.layout.activity_main);
        // Create the video view
        brightcoveVideoView = (BrightcoveExoPlayerVideoView) findViewById(R.id.brightcove_video_view);
    
        super.onCreate(savedInstanceState);
    
      }
    }

카탈로그에서 비디오 검색

  1. Video Cloud Studio 계정에서 다음 정보를 수집합니다.
    • 계정 ID
    • 비디오 ID
    • 정책 키
     
  2. 프로젝트에서 사용자 정의 값을 정의하십시오. res/values/strings.xml파일을 열고 값을 업데이트합니다.

    <?xml version="1.0" encoding="utf-8"?>
      <resources>
    
          <!-- Application name -->
          <string name="app_name">PlayVideos</string>
    
          <!-- A sample Brightcove Edge Account ID -->
          <string name="account">your account id</string>
    
          <!-- A sample Brightcove Edge Policy Key -->
          <string name="policy">your policy key</string>
    
          <!-- A sample Brightcove Video ID -->
          <string name="videoId">your video id</string>
    
      </resources>
  3. MainActivity.java파일로 돌아가서 SDK에서 이벤트 이미터를 가져옵니다.
    // Get the event emitter from the SDK
    EventEmitter eventEmitter = brightcoveVideoView.getEventEmitter();
  4. 이전 단계에서 정의한 계정 ID 및 정책 키 값을 사용하여 Brightcove Edge 서비스에서 비디오를 가져오는 카탈로그 요청을 생성합니다.

    // Create a catalog request to fetch a video
    String account = getString(R.string.account);
    Catalog catalog = new Catalog.Builder(eventEmitter, account)
      .setBaseURL(Catalog.DEFAULT_EDGE_BASE_URL)
      .setPolicy(getString(R.string.policy))
      .build();
  5. 카탈로그 사용findVideoByID()비디오 ID와VideoListener콜백.

    에서onVideo()방법, 비디오를 추가brightcoveVideoView을 클릭 한 다음 비디오를 시작하십시오.

    // Get the video by ID
    catalog.findVideoByID(getString(R.string.videoId), new VideoListener() {
    
      @Override
      public void onVideo(Video video) {
        // Add video to the view
        brightcoveVideoView.add(video);
        // Start video playback
        brightcoveVideoView.start();
      }
    });
  6. MainActivity클래스의 전체 코드는 다음과 유사해야합니다.

    public class MainActivity extends BrightcovePlayer {
    
      @Override
      protected void onCreate(Bundle savedInstanceState) {
        setContentView(R.layout.activity_main);
        // Create the video view
        brightcoveVideoView = (BrightcoveExoPlayerVideoView) findViewById(R.id.brightcove_video_view);
    
        super.onCreate(savedInstanceState);
    
        // Get the event emitter from the SDK
        EventEmitter eventEmitter = brightcoveVideoView.getEventEmitter();
    
        // Create a catalog request to fetch a video
        String account = getString(R.string.account);
        Catalog catalog = new Catalog.Builder(eventEmitter, account)
          .setBaseURL(Catalog.DEFAULT_EDGE_BASE_URL)
          .setPolicy(getString(R.string.policy))
          .build();
    
        // Get the video by ID
        catalog.findVideoByID(getString(R.string.videoId), new VideoListener() {
    
          @Override
          public void onVideo(Video video) {
            // Add video to the view
            brightcoveVideoView.add(video);
            // Start video playback
            brightcoveVideoView.start();
          }
        });
      }
    }
  7. 앱을 실행하여 비디오 재생을 확인하십시오.

재생 목록 가져 오기 및 재생

이 섹션에서는Catalog클래스를 사용하여 Video Cloud 서버에서 재생 목록을 검색 한 다음 재생 목록의 비디오를 재생합니다.

com.brightcove.player.edge.Catalog클래스는브라이트코브 재생 API에서 비디오 및 재생목록을 검색하기 위한 비동기 메서드를 제공합니다. 이 API는 Video Cloud 라이브러리에서 콘텐츠를 검색하는 데 권장되는 최신 API입니다.

불필요한 코드 제거

  1. 이전 앱의 일부 코드는 더 이상 필요하지 않습니다. 카탈로그의 호출을 제거하십시오. findVideoByID()방법 및 관련VideoListener익명 콜백 기능.

    // Get the video by ID
    catalog.findVideoByID(getString(R.string.videoId), new VideoListener() {
    
      @Override
      public void onVideo(Video video) {
        // Add video to the view
        brightcoveVideoView.add(video);
        // Start video playback
        brightcoveVideoView.start();
      }
    });

카탈로그에서 재생 목록 검색

  1. 기존 카탈로그 인스턴스는 재생 목록을 검색하는 데 작동하므로변경할 필요가 없습니다다음 코드 줄에 :

    // Get the event emitter from the SDK
    EventEmitter eventEmitter = brightcoveVideoView.getEventEmitter();
    
    // Create a catalog request to fetch a video
    String account = getString(R.string.account);
    Catalog catalog = new Catalog.Builder(eventEmitter, account)
      .setBaseURL(Catalog.DEFAULT_EDGE_BASE_URL)
      .setPolicy(getString(R.string.policy))
      .build();
  2. Video Cloud Studio에서미디어모듈에서 재생 목록을 선택하고재생 목록 ID .
  3. res/values/strings.xml파일을 열고 플레이리스트 ID에 대한 항목을 추가합니다.

      <?xml version="1.0" encoding="utf-8"?>
        <resources>
      
            <!-- Application name -->
            <string name="app_name">PlayVideos</string>
      
            <!-- A sample Brightcove Edge Account ID -->
            <string name="account">your account id</string>
      
            <!-- A sample Brightcove Edge Policy Key -->
            <string name="policy">your policy key</string>
      
            <!-- A sample Brightcove Playlist ID -->
            <string name="playlistId">your playlist id</string>
      
        </resources>
  4. 카탈로그 사용findPlaylistByID()재생 목록 ID와PlaylistListener콜백.

    에서onPlaylist()메서드, 재생 목록에서 비디오를 검색하고 모든 비디오를brightcoveVideoView을 클릭 한 다음 첫 번째 비디오를 시작하십시오.

    // Get the playlist by ID
    String playlist = getString(R.string.playlistId);
    catalog.findPlaylistByID(playlist, new PlaylistListener() {
      @Override
      public void onPlaylist(Playlist playlist) {
        // Add playlist to the view
        brightcoveVideoView.addAll(playlist.getVideos());
        // Start playback
        brightcoveVideoView.start();
      }
    });
  5. MainActivity클래스의 전체 코드는 다음과 유사해야합니다.

    public class MainActivity extends BrightcovePlayer {
    
      @Override
      protected void onCreate(Bundle savedInstanceState) {
        setContentView(R.layout.activity_main);
        // Create the video view
        brightcoveVideoView = (BrightcoveExoPlayerVideoView) findViewById(R.id.brightcove_video_view);
    
        super.onCreate(savedInstanceState);
    
        // Get the event emitter from the SDK
        EventEmitter eventEmitter = brightcoveVideoView.getEventEmitter();
    
        // Create a catalog request to fetch a video
        String account = getString(R.string.account);
        Catalog catalog = new Catalog.Builder(eventEmitter, account)
          .setBaseURL(Catalog.DEFAULT_EDGE_BASE_URL)
          .setPolicy(getString(R.string.policy))
          .build();
    
        // Get the playlist by ID
        String playlist = getString(R.string.playlistId);
        catalog.findPlaylistByID(playlist, new PlaylistListener() {
          @Override
          public void onPlaylist(Playlist playlist) {
            // Add playlist to the view
            brightcoveVideoView.addAll(playlist.getVideos());
            // Start playback
            brightcoveVideoView.start();
          }
        });
      }
    }
  6. 앱을 실행하여 재생 목록에서 여러 동영상을 확인합니다.

끝났습니다! Android SDK 빠른 시작을 사용해 주셔서 감사합니다.

전체 프로젝트 예제는 Android 플레이어 샘플을 참조하세요.