Android 용 Native SDK로 오프라인 재생을위한 다중 오디오 트랙

이 항목에서는 Android용 브라이트코브 네이티브 플레이어 SDK를 사용하여 오프라인 재생 작업을 수행할 때 여러 오디오 및 텍스트 트랙을 반환하는 방법에 대해 알아봅니다.

여러 트랙 관리

기본적으로 캡션 파일이없고 오디오 트랙이 하나만 다운로드됩니다. 비디오와 관련된 추가 자산을 다운로드하려면 다음 단계를 따르십시오.

  1. 비디오 클라우드에 대한 참조 얻기 OfflineCatalog고객.

    private OfflineCatalog catalog;
    ...
    catalog = new OfflineCatalog(this, eventEmitter, ACCOUNT_ID, POLICY_KEY);
    ...
  2. 을 부르다 getMediaFormatTracksAvailable메서드, 전달비디오정보를 얻고 자하는 객체 및 MediaFormatListener반환 된 데이터를 수신합니다.

    OfflineCatalog.getMediaFormatTracksAvailable(
      @NonNull final Video video,
      @NonNull final MediaDownloadable.MediaFormatListener mediaFormatListener)
  3. 그만큼MediaFormatListener다음 메서드를 호출합니다.

    void onResult(MediaDownloadable mediaDownloadable, Bundle mediaFormatBundle);

    그만큼 MediaDownloadable개체는 비디오 변환, 오디오 언어 및 캡션을 포함한 정보를 포함합니다. 그만큼mediaDownloadable개체가 캐시되고 호출 할 때 사용됩니다. OfflineCatalog.downloadVideo (비디오) .

    그만큼묶음개체에는 사용 가능한 미디어 형식 트랙에 대한 정보가 포함되며 다음과 같은 속성이 있습니다.

  4. 번들에서 데이터 목록을 검색합니다. 다음은 다른 목록을 검색하는 예입니다.

    ArrayList<MediaFormat> video = bundle.getParcelableArrayList(MediaDownloadable.VIDEO_RENDITIONS);
    
    ArrayList<MediaFormat> audio = bundle.getParcelableArrayList(MediaDownloadable.AUDIO_LANGUAGES);
    
    ArrayList<String> roles = bundle.getStringArrayList(MediaDownloadable.AUDIO_LANGUAGE_ROLES);
    
    ArrayList<MediaFormat> captions = bundle.getParcelableArrayList(MediaDownloadable.CAPTIONS);
  5. 새로 만들기Bundle ( filteredBundle )을 클릭하여 다운로드에 포함 할 오디오 트랙과 자막을 선택합니다.

    Bundle filteredBundle = new Bundle();
  6. 이전에 만든 목록에서 원하는 트랙을 필터링하고 새 트랙에 추가합니다. filteredBundle .

    ArrayList<MediaFormat> captions = bundle.getParcelableArrayList(MediaDownloadable.CAPTIONS);
    if (captions != null && captions.size() > 0) {
       ArrayList<MediaFormat> newCaptions = new ArrayList<>();
       newCaptions.add(captions.get(0));
    
    filteredBundle.putParcelableArrayList(MediaDownloadable.CAPTIONS, newCaptions);
    }
  7. 설정filteredBundle ~로MediaDownloadable목적.

    mediaDownloadable.setConfigurationBundle(filteredBundle);
  8. 비디오를 다운로드하십시오.

    offlineCatalog.downloadVideo(video);

    내부적으로OfflineCatalog캐시 된MediaDownloadable제공MediaDownloadable.MediaFormatListener콜백.

코드 샘플

추가 오디오 트랙 및 캡션 파일을 다운로드하는 전체 예제는오프라인 재생 샘플 앱 .