Подтвердить что ты не робот

Невозможно воспроизвести видео Youtube с помощью API Android Player для Android

Например, это видео не может воспроизводиться с API-интерфейсом Youtube: 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

версия API YouTubePlayer: 1.2.1 (последняя версия)

Приложение YouTube на устройстве обновлено и доступно для воспроизведения этого видео

Параметры видео: videoEmbeddable=true videoSyndicated=true

4b9b3361

Ответ 1

Для меня проблема в том, что я могу воспроизводить видео только один раз, но после этого YouTubePlayer не воспроизводит видео, и я надеюсь, что есть многие другие люди которые также сталкиваются с аналогичными проблемами с YouTubeAndroidPlayerAPI. Я думаю, что последнее приложение YouTube (версия 10.37.58) и YouTubeAndroidPlayerAPI 1.2.1 несовместимы.

Насколько мне известно, единственное, что вы можете сделать в настоящее время для решения этой проблемы, - это понизить ваше приложение YouTube, установленное на устройстве, до 10.36.52 или ниже. (вы можете получить его из apk mirror)

Из того, что я заметил при работе с YouTubeAndroidPlayerAPI, является то, что с помощью версии youtube 10.36.52 она выдает предупреждающие сообщения "Невозможно загрузить современный интерфейс управления. Обновите до последней версии API YouTube для Android". на logcat каждый раз, когда я пытаюсь воспроизвести видео, но в остальном работает нормально. И с версией 10.35.53 и ниже это предупреждение не выдается.

Причина: я не уверен, но я думаю, что это связано с огромной проблемой утечки памяти с помощью фрагмента YoutubePlayerSupport в YouTubeAndroidPlayerAPI 1.2.1, который был широко известен и представлен в google data api issue tracker. Это было окончательно зафиксировано в прошлом месяце 1 сентября (по крайней мере, то, что говорит текущий статус) через год с момента его появления (удивленный, увидев, что так долго искал Google). Однако Google не обновил новую версию YouTubeAndroidPlayerAPI с исправлением. Возможно, они исправили проблему с памятью в приложении youtube в сентябре, и некоторые из них каким-то образом нарушили функциональность YouTubeAndroidPlayerAPI 1.2.1 (поскольку YouTubeAndroidPlayerAPI напрямую зависит от приложения YouTube для работы).

Ответ 2

Версия 1.2.2 API-интерфейсов проигрывателя YouTube только что выпущена. Он может решить проблему воспроизведения видео, которую вы испытываете.

Ответ 3

Эй, это то, что я внедряю в своем приложении для вас, для воспроизведения видеороликов с трубами.

    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 jar lib:

compile files('libs/YouTubeAndroidPlayerApi.jar')

надеюсь, что это поможет. :)

Ответ 4

Это странно! Я могу предложить вам только сыграть с flags и посмотреть, не устранит ли какая-либо комбинация проблемы. Начну со следующего:

youtubePlayer.addFullscreenControlFlag(YouTubePlayer.FULLSCREEN_FLAG_CONTROL_SYSTEM_UI);