"Play all" fails on a channel that has an upcoming video (i.e. future premiere)
Checklist
- [x] I am using the latest version - x.xx.x
- [x] I checked, but didn't find any duplicates (open OR closed) of this issue in the repo.
- [x] I have read the contribution guidelines given at https://github.com/TeamNewPipe/NewPipe/blob/HEAD/.github/CONTRIBUTING.md.
- [x] This issue contains only one bug. I will open one issue for every bug report I want to file.
Steps to reproduce the bug
- Find a YouTube channel that has any upcoming video (i.e. video premiere in the future).
- Open that channel in NewPipe. It will show a list of all videos (the first one will be the unreleased one), with buttons
Background,Play AllandPopup. - Try "Play All".
Actual behavior
The "Content unavailable" view shows up, with a button to report the error. I cannot skip this video to the next one. In fact, it is impossible to reach the playlist/queue at all from this state.
Expected behavior
The video should have been skipped, and the rest of the videos should have been played.
In fact, Background and Popup do work. They both skip the unavailable video and move to the second from the list. So, a workaround would be to start as a popup, and then move back to full screen. (But this workaround is not possible on devices without popup support, such as Android TV.)
Screenshots/Screen recordings
None needed.
Logs
None needed.
Device info
- Android version/Custom ROM version: 11
- Device model: Reproduced both on a tablet and on Android TV. Probably reproducible anywhere.
Hi, this same issue happened to me as well, but instead of upcoming video, the song I was listening to was blocked due to copyright reasons (might have been country locked, can't exactly remember) resulting in "Content unavailable" message.
Two videos in this playlist caused the issue: https://www.youtube.com/watch?v=UD7CgUL_RKQ&list=PLJsbOZ5vMmJiDR_Kq9ayC0ddF5PGJ6AQH&index=1
Device Info
Android version: 11 Device model: Motorola g9 Plus
Background and Popup crashes. It doesn't skip over. At least not if it's the first item.
Example: https://www.youtube.com/channel/UC0WP5P-ufpRfjbNrmOWwLBQ
Exception
- User Action: ui error
- Request: ACRA report
- Content Country: DE
- Content Language: en-DE
- App Language: en_DE
- Service: none
- Version: 0.21.15
- OS: Linux Android 11 - 30
Crash log
java.lang.NullPointerException: Attempt to invoke virtual method 'org.schabi.newpipe.extractor.stream.StreamInfo org.schabi.newpipe.player.resolver.MediaSourceTag.getMetadata()' on a null object reference
at org.schabi.newpipe.player.Player.onPlayerError(Player.java:2526)
at com.google.android.exoplayer2.ExoPlayerImpl.lambda$updatePlaybackInfo$10(ExoPlayerImpl.java:1269)
at com.google.android.exoplayer2.ExoPlayerImpl.$r8$lambda$-K5msfvAakBrxKAsG9AjoK30L1g(Unknown Source:0)
at com.google.android.exoplayer2.ExoPlayerImpl$$ExternalSyntheticLambda7.invoke(Unknown Source:4)
at com.google.android.exoplayer2.util.ListenerSet$ListenerHolder.invoke(ListenerSet.java:283)
at com.google.android.exoplayer2.util.ListenerSet.lambda$queueEvent$0(ListenerSet.java:170)
at com.google.android.exoplayer2.util.ListenerSet.$r8$lambda$NbKDn9xtItiyMgYZmjIx_Sv1FFQ(Unknown Source:0)
at com.google.android.exoplayer2.util.ListenerSet$$ExternalSyntheticLambda1.run(Unknown Source:6)
at com.google.android.exoplayer2.util.ListenerSet.flushEvents(ListenerSet.java:191)
at com.google.android.exoplayer2.ExoPlayerImpl.updatePlaybackInfo(ExoPlayerImpl.java:1340)
at com.google.android.exoplayer2.ExoPlayerImpl.handlePlaybackInfo(ExoPlayerImpl.java:1175)
at com.google.android.exoplayer2.ExoPlayerImpl.lambda$new$1(ExoPlayerImpl.java:216)
at com.google.android.exoplayer2.ExoPlayerImpl.$r8$lambda$nOBJYkeEQ2uz3sBKLToLWmzrgZk(Unknown Source:0)
at com.google.android.exoplayer2.ExoPlayerImpl$$ExternalSyntheticLambda22.run(Unknown Source:4)
at android.os.Handler.handleCallback(Handler.java:938)
at android.os.Handler.dispatchMessage(Handler.java:99)
at android.os.Looper.loop(Looper.java:223)
at android.app.ActivityThread.main(ActivityThread.java:7664)
at java.lang.reflect.Method.invoke(Native Method)
at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:592)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:947)
More info in this comment