Android 기기에서 YouTube 실시간 스트림 시작

YouTube 모바일 라이브 딥 링크를 사용하면 Android 애플리케이션에서 휴대기기로 직접 YouTube 라이브 스트림을 시작할 수 있습니다. 앱은 Android 인텐트 메커니즘을 사용하여 모바일 라이브 스트림 흐름을 시작하는 진입점(예: 사용자가 클릭할 수 있는 버튼)만 제공하면 됩니다.

예

이 흐름은 YouTube 애플리케이션으로 딥 링크되는 앱의 사용자 환경을 보여줍니다. 여기서 사용자는 모바일 라이브 스트림 설정 화면으로 이동합니다.

  1. 먼저 사용자가 스트림을 구성하여 제목, 개인 정보 보호 모드, 기타 스트림 옵션을 설정합니다.
  2. 그런 다음 사용자는 썸네일 사진 화면으로 이동하여 스트림의 썸네일 이미지를 설정합니다.
  3. 마지막으로 사용자는 라이브 스트림을 시작하고 전면 또는 후면 카메라의 뷰를 방송합니다.

모바일 라이브 스트림 설정 화면 썸네일 사진 화면 모바일 라이브 스트림 방송 화면

기기 요구사항

Android 기기는 YouTube 라이브 스트리밍과 모바일 라이브 딥 링크를 제대로 지원하기 위해 다음 요구사항을 충족해야 합니다.

  • Android 출시: Marshmallow(API 23) 이상
  • 카메라: 30Hz 이상에서 720p를 녹화할 수 있는 카메라 1개 이상
  • 마이크: 온보드 마이크
  • 오디오 인코더: 8비트 PCM 모노 오디오를 44.1KHz 이상의 AAC로 인코딩할 수 있는 하드웨어 가속 오디오 인코더
  • 동영상 인코더: 720P 원시 동영상을 30Hz 이상에서 H.264/AVC로 인코딩할 수 있는 하드웨어 가속 동영상 인코더
  • YouTube 앱 설치: 버전 13.02 이상

모바일 라이브 인텐트 사양

YouTube 모바일 라이브 스트리밍 흐름에 연결하기 위해 Android 앱은 인텐트를 실행합니다. 인텐트는 YouTube 애플리케이션에서 활동을 시작하여 라이브 스트리밍 프로세스를 시작합니다.

인텐트 형식

모바일 라이브 인텐트는 맞춤 Action 문자열을 사용하여 YouTube 앱 내의 라이브 제작 Activity로 이동합니다. 또한 YouTube 모바일 앱의 패키지 이름도 지정합니다.

  • 작업: "com.google.android.youtube.intent.action.CREATE_LIVE_STREAM"
  • 패키지: "com.google.android.youtube"

인텐트 추가 항목

YouTube 애플리케이션 설정 흐름에서 스트림 구성을 처리합니다. 다음 인텐트 추가 항목은 라이브 스트림과 연결된 매개변수를 설정합니다.

Params
Intent.EXTRA_REFERRER 필수사항: 이 파라미터는 라이브 스트리밍 Activity를 실행하는 애플리케이션을 나타내는 URI를 지정합니다. 이 값은 패키지 이름과 함께 android-app: scheme 형식을 따라야 합니다. 이 값을 통해 정확한 기여 분석과 회계가 가능합니다.
Intent.EXTRA_SUBJECT 선택사항. 이 매개변수는 라이브 스트림에 대한 텍스트 설명을 제공합니다. 인텐트 추가 번들에 String으로 배치됩니다. 이 값은 'DEVICE에서 실시간 스트리밍됨'과 같은 브랜드 메시지로 스트림에 주석을 추가하는 데 사용할 수 있습니다.

라이브 스트리밍 과정 시작

다음 두 단계를 완료하여 기기 호환성을 확인하고 Android 앱에서 모바일 실시간 활동을 시작합니다.

1단계: 지원 여부 확인하기

클라이언트는 먼저 기기에 YouTube 앱이 설치되어 있고 YouTube 앱 버전이 라이브 스트리밍을 지원하는지 확인하여 모바일 라이브 인텐트를 실행할 수 있는지 확인해야 합니다. 다음 코드 샘플은 이를 수행하는 두 가지 메서드를 정의합니다.

  • canResolveMobileLiveIntent 메서드는 기기가 모바일 라이브 인텐트를 지원하는지 확인합니다.

  • validateMobileLiveIntent는 if-else 문 컨텍스트에서 canResolveMobileLiveIntent 메서드를 호출합니다.

    • 기기가 인텐트를 지원하는 경우 기기에서 라이브 스트림 흐름을 실행할 수 있습니다.
    • 기기가 인텐트를 지원하지 않는 경우 기기에서 사용자에게 YouTube 앱을 설치하거나 업그레이드하라는 메시지를 표시할 수 있습니다.
private boolean canResolveMobileLiveIntent(Context context) {
  Intent intent = new Intent("com.google.android.youtube.intent.action.CREATE_LIVE_STREAM")
    .setPackage("com.google.android.youtube");
  PackageManager pm = context.getPackageManager();
  List<ResolveInfo> resolveInfo =
    pm.queryIntentActivities(intent, PackageManager.MATCH_DEFAULT_ONLY);
  return resolveInfo != null && !resolveInfo.isEmpty();
}


private void validateMobileLiveIntent(Context context) {
  if (canResolveMobileLiveIntent(context)) {
    // Launch the livestream Activity
  } else {
    // Prompt user to install or upgrade the YouTube app
  }
}

Android 11(API 수준 30) 이상을 타겟팅하는 앱은 PackageManager가 YouTube 애플리케이션을 쿼리할 수 있도록 AndroidManifest.xml 파일에서 패키지 공개 상태 요구사항을 선언해야 합니다.

<queries>
  <package android:name="com.google.android.youtube" />
  <intent>
    <action android:name="com.google.android.youtube.intent.action.CREATE_LIVE_STREAM" />
  </intent>
</queries>

2단계: 라이브 스트림 활동 시작하기

라이브 스트리밍 흐름을 시작하려면 클라이언트 앱에서 다음 코드 샘플과 같이 인텐트를 만들고 실행합니다.

private Intent createMobileLiveIntent(Context context, String description) {
  Intent intent = new Intent("com.google.android.youtube.intent.action.CREATE_LIVE_STREAM")
      .setPackage("com.google.android.youtube");
  Uri referrer = new Uri.Builder()
      .scheme("android-app")
      .appendPath(context.getPackageName())
      .build();

  intent.putExtra(Intent.EXTRA_REFERRER, referrer);
  if (!TextUtils.isEmpty(description)) {
    intent.putExtra(Intent.EXTRA_SUBJECT, description);
  }
  return intent;
}


private void startMobileLive(Context context) {
  Intent mobileLiveIntent = createMobileLiveIntent(context, "Streaming via ...");
  startActivity(mobileLiveIntent);
}