web-dev-qa-db-fra.com

Impossible de lire certaines vidéos Youtube avec l'API du lecteur Android YouTube

Par exemple, cette vidéo ne peut pas être lue avec l’API du lecteur Youtube: https://www.youtube.com/watch?v=OLK1efdt3n8 (d’autres vidéos de la recherche répondent correctement)

Je reçois les messages suivants:

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

Version de l'API YouTubePlayer: 1.2.1 (dernière)

L'application YouTube sur l'appareil est à jour et capable de lire cette vidéo

Paramètres vidéo: videoEmbeddable=true videoSyndicated=true

17
Mickey Tin

Pour moi, le problème est que je ne peux lire la vidéo qu’une seule fois, mais après cela, YouTubePlayer ne lit plus aucune vidéo et j’espère qu’il en existe de nombreuses autres personnes qui sont également confrontées à des problèmes similaires avec YouTubeAndroidPlayerAPI. Je pense La dernière application youtube (version 10.37.58) et YouTubeAndroidPlayerAPI 1.2.1 ne sont pas compatibles.  

Autant que je sache la seule chose que vous puissiez faire actuellement pour résoudre ce problème est de rétrograder votre application youtube installée sur l'appareil à la version 10.36.52 ou inférieure. (vous pouvez l'obtenir de apk mirror )

D'après ce que j'ai remarqué en travaillant avec YouTubeAndroidPlayerAPI, la version 10.36.52 de youtube génère des messages d'avertissement "Impossible de charger l'interface utilisateur des commandes modernes. Mettez à niveau vers la dernière version de l'API Android YouTube." Sur le logcat. chaque fois que j'essaie de lire une vidéo mais que ça fonctionne bien. Et avec la version 10.35.53 et inférieure, aucun message d’avertissement de ce type n’est lancé.

Raison: je ne suis pas sûr, mais je pense que cela a quelque chose à voir avec l'énorme problème de fuite de mémoire avec le fragment YoutubePlayerSupport dans YouTubeAndroidPlayerAPI 1.2.1, qui était largement connu et rapporté dans traqueur de problème d'api de google data . Il a finalement été résolu Le mois dernier, le 1er septembre (du moins, c'est ce que dit l'état actuel), un an après son signalement (surpris de voir ce qui a pris si longtemps à Google), bien que Google n'ait pas encore déployé la nouvelle version de YouTubeAndroidPlayerAPI avec le correctif. Donc, ils ont peut-être corrigé ce problème de mémoire dans l’application youtube en septembre, ce qui a en quelque sorte brisé les fonctionnalités de YouTubeAndroidPlayerAPI 1.2.1 (car YouTubeAndroidPlayerAPI dépend directement de l’application youtube). 

11
Ganesh Mohan

La version 1.2.2 des API de lecteur YouTube vient de paraître . Cela pourrait résoudre le problème de lecture vidéo que vous rencontrez.

1
Sebastiano

Hé c'est ce que je suis en train de mettre en œuvre dans mon application pour la lecture de votre tube vidéo

    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() {
        }
    };


}

et xml sera comme:

<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>

et dans build.gradle, utilisez la librairie jar Youtube librement disponible:

compile files('libs/YouTubeAndroidPlayerApi.jar')

espérons que cela aidera. :)

0
DEEP SINGH