web-dev-qa-db-ja.com

YouTubeを使用して一部のYoutubeビデオを再生できないAndroid Player API

たとえば、このビデオはYoutubeプレーヤーAPIでは再生できません: https://www.youtube.com/watch?v=OLK1efdt3n8 (検索応答の他のビデオは問題なく動作します)

次のメッセージが表示されます。

09-25 17:18:50.226  24280-24280/com.mypackagename W/YouTubeAndroidPlayerAPI﹕ Cannot load modern controls UI. Upgrade to the latest version of the Android YouTube API.
09-25 17:19:05.911  24280-24280/com.mypackagename E/YoutubePlayerFragment﹕ video error : INTERNAL_ERROR

YouTubePlayer APIバージョン:1.2.1(最新)

デバイス上のYouTubeアプリは最新であり、このビデオを再生できます

ビデオパラメータ:videoEmbeddable=true videoSyndicated=true

17
Mickey Tin

私にとっての問題は、ビデオを1回しか再生できないことですが、その後YouTubePlayerはビデオを再生しません。また、YouTubeAndroidPlayerAPIで同様の問題に直面している 他の多くの人々 がいることを願っています。 最新のYouTubeアプリ(バージョン10.37.58)とYouTubeAndroidPlayerAPI 1.2.1は互換性がないと思います。

私の知る限りこの問題を解決するために現在できることは、デバイスにインストールされているYouTubeアプリを10.36.52以下にダウングレードすることだけです。apkミラー から取得できます)

YouTubeAndroidPlayerAPIの操作中に気付いたのは、YouTubeバージョン10.36.52では、警告メッセージがスローされることです。「最新のコントロールUIを読み込めません。最新バージョンのAndroid YouTube API。 "ビデオを再生しようとするたびにlogcatに表示されますが、それ以外は正常に機能します。バージョン10.35.53以下では、このような警告メッセージはスローされません。

理由:わかりませんが、これはYouTubeAndroidPlayerAPI 1.2.1のYoutubePlayerSupportフラグメントでの巨大なメモリリークの問題と関係があると思います。これは広く知られており、 google data api issue tracker で報告されています。それが報告されてから1年後の9月1日にようやく修正されました(少なくとも現在の状況はそうです)(グーグルがこんなに長くかかったのを見て驚いた)。ただし、グーグルはまだ修正を加えた新しいバージョンのYouTubeAndroidPlayerAPIを公開していません。そのため、9月にYouTubeアプリのメモリの問題が修正され、YouTubeAndroidPlayerAPI 1.2.1の機能が何らかの形で壊れた可能性があります(YouTubeAndroidPlayerAPIはYouTubeアプリに直接依存しているため)。

12
Ganesh Mohan

YouTube Player APIのバージョン1.2.2リリースされたばかり 。それはあなたが経験しているビデオ再生の問題に対処するかもしれません。

1
Sebastiano

ねえ、これは私があなたのために私のアプリに実装しているものですチューブビデオプレイ

    public class Youtubevideo  extends YouTubeBaseActivity implements YouTubePlayer.OnInitializedListener
{

    public static final String API_KEY = "Use Your API key For youtube api";

    //http://youtu.be/<VIDEO_ID>
      //sample video id
    public  String VIDEO_ID = "abcdefgh";

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        /** attaching layout xml **/
        setContentView(R.layout.youtubevideo);
       Intent dataReceived = getIntent();
        if(dataReceived != null)
        {
           VIDEO_ID = dataReceived.getStringExtra("url");

        }
        /** Initializing YouTube player view **/
        YouTubePlayerView youTubePlayerView = (YouTubePlayerView) findViewById(R.id.youtube_player);
        youTubePlayerView.initialize(API_KEY, this);
    }

    @Override
    public void onInitializationFailure(Provider provider, YouTubeInitializationResult result) {
        Toast.makeText(this, "Failured to Initialize!", Toast.LENGTH_LONG).show();
    }

    @Override
    public void onInitializationSuccess(Provider provider, YouTubePlayer player, boolean wasRestored) {
        /** add listeners to YouTubePlayer instance **/
        //player.setPlayerStateChangeListener(playerStateChangeListener);
        //player.setPlaybackEventListener(playbackEventListener);
        player.setFullscreen(true);
        player.setShowFullscreenButton(true);
        /** Start buffering **/
        if (!wasRestored) {
            player.cueVideo(VIDEO_ID);
        }
    }

    private PlaybackEventListener playbackEventListener = new PlaybackEventListener() {

        @Override
        public void onBuffering(boolean arg0) {
        }

        @Override
        public void onPaused() {
        }

        @Override
        public void onPlaying() {
        }

        @Override
        public void onSeekTo(int arg0) {
        }

        @Override
        public void onStopped() {
        }

    };

    private PlayerStateChangeListener playerStateChangeListener = new PlayerStateChangeListener() {

        @Override
        public void onAdStarted() {
        }

        @Override
        public void onError(ErrorReason arg0) {
        }

        @Override
        public void onLoaded(String arg0) {
        }

        @Override
        public void onLoading() {
        }

        @Override
        public void onVideoEnded() {
        }

        @Override
        public void onVideoStarted() {
        }
    };


}

xmlは次のようになります:

<LinearLayout xmlns:Android="http://schemas.Android.com/apk/res/Android"
    xmlns:tools="http://schemas.Android.com/tools"
    Android:layout_width="match_parent"
    Android:layout_height="match_parent"
    Android:orientation="vertical" >

    <com.google.Android.youtube.player.YouTubePlayerView
        Android:id="@+id/youtube_player"
        Android:layout_width="match_parent"
        Android:layout_height="wrap_content"
        Android:background="#fff"
        Android:padding="5dp" />

</LinearLayout>

build.gradleでは、公開されているYoutube jarlibを使用します。

compile files('libs/YouTubeAndroidPlayerApi.jar')

これがお役に立てば幸いです。 :)

0
DEEP SINGH