Welcome to OGeek Q&A Community for programmer and developer-Open, Learning and Share
Welcome To Ask or Share your Answers For Others

Categories

0 votes
139 views
in Technique[技术] by (71.8m points)

java - IllegalSeekPositionException while trying to play video from arraylist in exoplayer

Am trying to play video from playlist in exoplayer and i ended up with this error saying com.google.android.exoplayer2.IllegalSeekPositionException

Here below i added list of video Uri to exoplayer MediaItemBuilder and played the video with arraylist like id player.seekTo(playListId, 0);

Adding video Uri and creating playlist:

private void loadPlayList() {
        File file = new File(String.valueOf(videoURI));
        Log.d("TAG", "loadPlayList: " + file.getParent());
        for (FileStore fs : db.getFilesByPath(file.getParent())) {
            PlayListModel plm = new PlayListModel();
            plm.setPlayListFilePath(fs.getFilePath());
            playListArray.add(plm);
        }
        for (int i = 0; i < playListArray.size(); i++) {
            if (playListArray.get(i).getPlayListFilePath().contains(videoURI.toString())) {
                playListId = i;
                Log.d("TAG", "loadPlayList Position: " + i);
            }
        }
    }


private void initializePlayer() {
        playerName.setText(videoName);

        if (player == null) {
            trackSelector = new DefaultTrackSelector(this);
            RenderersFactory renderersFactory = new DefaultRenderersFactory(this)
                    .setExtensionRendererMode(DefaultRenderersFactory.EXTENSION_RENDERER_MODE_ON);
            player = new SimpleExoPlayer.Builder(this, renderersFactory)
                    .setTrackSelector(trackSelector).build();
        }

        playerView.setPlayer(player);
        mediaSession = new MediaSessionCompat(this, getString(R.string.app_name));
        mediaSessionConnector = new MediaSessionConnector(mediaSession);
        mediaSessionConnector.setPlayer(player);

        playerView.setControllerShowTimeoutMs(CONTROLLER_TIMEOUT);
        //playerView.setResizeMode(mPrefs.resizeMode);

        for (int j = 0; j<playListArray.size(); j++) {
            final String mimeType = Function.getMimeType(this, Uri.parse(playListArray.get(j).getPlayListFilePath()));
            mediaItemBuilder = new MediaItem.Builder()
                    .setUri(playListArray.get(j).getPlayListFilePath())
                    .setMimeType(mimeType);

            // Subtitle if statement.
            if (subtitleUri != null && Function.fileExists(this, subtitleUri)) {
                final String subtitleMime = Function.getSubtitleMime(subtitleUri);
                final String subtitleLanguage = Function.getSubtitleLanguage(subtitleUri);
                final String subtitleName = Function.getFileName(this, subtitleUri);

                MediaItem.Subtitle subtitle = new MediaItem.Subtitle(subtitleUri, subtitleMime, subtitleLanguage, 0, C.ROLE_FLAG_SUBTITLE, subtitleName);
                mediaItemBuilder.setSubtitles(Collections.singletonList(subtitle));
            }
        }

        player.setMediaItem(mediaItemBuilder.build());
        setTracks = true;
       
        play = true;
        player.setHandleAudioBecomingNoisy(true);
        mediaSession.setActive(true);
        player.addListener(playbackStateListener);
        player.prepare();
        player.seekTo(playListId, 0);
        player.setPlayWhenReady(true);
    }

What am i doing wrong while creating playlist in exoplayer.

question from:https://stackoverflow.com/questions/65921747/illegalseekpositionexception-while-trying-to-play-video-from-arraylist-in-exopla

与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
Welcome To Ask or Share your Answers For Others

1 Reply

0 votes
by (71.8m points)
Waitting for answers

与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
OGeek|极客中国-欢迎来到极客的世界,一个免费开放的程序员编程交流平台!开放,进步,分享!让技术改变生活,让极客改变未来! Welcome to OGeek Q&A Community for programmer and developer-Open, Learning and Share
Click Here to Ask a Question

...