Home 유튜브 영상 재생하기
Post
Cancel

유튜브 영상 재생하기

Youtube 영상 재생하기

유튜브에 있는 동영상을 어떻게 하면 재생할 수 있을까?

구글에서는 유튜브의 동영상을 재생할 수 있는 API를 제공한다.

이 API를 이용하면 동영상 재생 및 녹화를 진행할 수 있다.


예제

API를 사용할 수 있도록 도와주는 jar 파일을 추가해야 하므로 [Project Files]로 변경한다.

프로젝트 폴더 안에 있는 폴더와 파일이 파일 탐색기의 경로처럼 나타난다.

jar 파일은 YouTube API를 제공하고 아래 사이트에서 다운로드 받을 수 있다.

https://developers.google.com/youtube/android/player/downloads/

압축을 풀면 libs 폴더 안에 jar 파일이 하나 들어 있는데 아래와 같이 복사해서 넣습니다.

1

라이브러리 파일을 추가 했으니 의존성을 추가 해준다.

build.gradle(Module: name)

1
2
dependencies {  
  implementation fileTree(dir: 'libs', include: ['*.jar'])

인제 YouTubePlayerVIew를 추가 해주기 위해 activity_main.xml 파일을 수정 해준다.

activity_main.xml

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
<?xml version="1.0" encoding="utf-8"?>  
<LinearLayout 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"  
  android:orientation="vertical"  
  tools:context=".MainActivity">  
  
 <Button  
  android:id="@+id/button"  
  android:layout_width="match_parent"  
  android:layout_height="wrap_content"  
  android:text="시작" />  
  
 <com.google.android.youtube.player.YouTubePlayerView  
  android:id ="@+id/playerView"  
  android:layout_width="match_parent"  
  android:layout_height="match_parent" />  
  
</LinearLayout>


YouTubePlayerVIew 초기화하고 버튼을 눌렀을 때 동작하게 해주기 위해 MainActivity.java 파일을 작성하자.

MainActivity.java

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
package org.techtown.youtube;

import androidx.appcompat.app.AppCompatActivity;

import android.os.Bundle;
import android.util.Log;
import android.view.View;
import android.widget.Button;

import com.google.android.youtube.player.YouTubeInitializationResult;
import com.google.android.youtube.player.YouTubePlayer;
import com.google.android.youtube.player.YouTubePlayerView;

public class MainActivity extends YouTubeBaseActivity{
    YouTubePlayerView playerView;
    YouTubePlayer player;

    private static String API_KEY = "Input Your API KEY";
    private static String videoId =  "qVxTd_8jfNY";

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        initPlayer();

        Button button = findViewById(R.id.button);
        button.setOnClickListener(new View.OnClickListener(){
            @Override
            public void onClick(View view){
                playVideo();
            }
        });
    }

    public void initPlayer(){
        playerView = findViewById(R.id.playerView);

        /* YouTubePlayerView 초기화 하기 */
        playerView.initialize(API_KEY, new YouTubePlayer.OnInitializedListener(){
            @Override
            public void onInitializationSuccess(YouTubePlayer.Provider provider,
                                                YouTubePlayer youTubePlayer, boolean b){
                player = youTubePlayer;

                player.setPlayerStateChangeListener(new YouTubePlayer.PlayerStateChangeListener() {
                    @Override
                    public void onLoading() {}

                    @Override
                    public void onLoaded(String id) {
                        Log.d("PlayerView", "onLoaded 호출됨: " + id );
                        player.play();  // 동영상이 로딩되었으면 재생하기
                    }

                    @Override
                    public void onAdStarted() {}

                    @Override
                    public void onVideoStarted() {}

                    @Override
                    public void onVideoEnded() {}

                    @Override
                    public void onError(YouTubePlayer.ErrorReason errorReason) {}
                });
            }
            @Override
            public void onInitializationFailure(YouTubePlayer.Provider provider,
                                               YouTubeInitializationResult youTubeInitializationResult){}
        });
    }

    public void playVideo(){
        if(player != null){
            if(player.isPlaying())
                player.pause();
        }

        player.cueVideo(videoId);
    }
}


액티비티는 YouTubeBaseActivity를 상속 받도록 한다.

API_KEY는 https://console.developers.google.com/apis 에서 받을 수 있다.

videold 변수에는 재생할 동영상의 id 값을 할당한다.

동영상 id는 재생하고 싶은 동영상을 유튜브에서 찾아 사이트 주소에 포함되어 있는 id 값을 확인할 수 있다.

1

initialize 메서드를 호출할때 첫 번째 매개 변수로 API 키값, 두 번째는 OnInitializationListener 객체를 전달한다.

이 객체는 초기화가 성공적으로 수행되었을 때 onInitializationSuccess 메서드를 호출해준다.

이 메서드가 호출되면 YouTubePlayer 객체가 전달되므로 객체를 변수에 할당해 준다.

그리고 YouTubePlayer 객체의 setPlayerStateChangeListener 메서드를 호출하여 리스너 객체를 등록하면 Player 상태가 어떻게 바뀌는지 확인할 수 있다.

onLoaded 메서드는 동영상이 로딩되었을 때 자동으로 호출되므로 그 안에서 Player 객체의 play 메서드를 호출한다.

유튜브 동영상을 재생하기 위해서는 인터넷 권한이 필요하므로 아래와 같이 권한을 추가한다.

AndroidManifeset.xml

1
2
3
4
5
6
7
8
<uses-permission android:name="android.permission.INTERNET"/>  
  
<queries>  
 <intent>  
 <action android:name="com.google.android.youtube.api.service.START" />  
 </intent>  
</queries>

<quries> 태그는 유튜브 라이브러리를 초기화하는데 필요하므로 추가 해주자.


결과

ezgif com-gif-maker

This post is licensed under CC BY 4.0 by the author.

동영상 녹화하기

자바 런타임 에러(IllegalArgumentException)