[YouTube] Stream loading error IOS player response is not valid
Checklist
- [X] I am able to reproduce the bug with the latest version given here: CLICK THIS LINK.
- [X] I made sure that there are no existing issues - open or closed - which I could contribute my information to.
- [X] I have read the FAQ and my problem isn't listed.
- [X] I have taken the time to fill in all the required details. I understand that the bug report will be dismissed otherwise.
- [X] This issue contains only one bug.
- [X] I have read and understood the contribution guidelines.
Affected version
0.27.2
Steps to reproduce the bug
- Went to playlist
- Played playlist in the background player
- Shuffled playlist
- Loaded each song in succession until error occurred
Expected behavior
Load and play each song in the background player upon request
Actual behavior
Newpipe background player will fail to load song and skip to to the next one in the playlist it can successfully load
Screenshots/Screen recordings
https://files.catbox.moe/fyztd1.mp4
Logs
Exception
- User Action: play stream
- Request: Loading failed for [Call Of Duty WaW Soundtrack - The Final Push]: https://www.youtube.com/watch?v=1nyAThrjdkw
- Content Country: US
- Content Language: en-US
- App Language: en_US
- Service: YouTube
- Version: 0.27.2
- OS: Linux samsung/dm2qsqw/dm2q:14/UP1A.231005.007/S916USQU2CXCG:user/release-keys 14 - 34
Crash log
org.schabi.newpipe.player.mediasource.FailedMediaSource$StreamInfoLoadException: org.schabi.newpipe.extractor.exceptions.ExtractionException: IOS player response is not valid
at org.schabi.newpipe.player.playback.MediaSourceManager.lambda$getLoadedMediaSource$7(MediaSourceManager.java:448)
at org.schabi.newpipe.player.playback.MediaSourceManager.$r8$lambda$7wkrzYpwfZdms79okpk8_MCaW4U(MediaSourceManager.java:0)
at org.schabi.newpipe.player.playback.MediaSourceManager$$ExternalSyntheticLambda5.apply(R8$$SyntheticClass:0)
at io.reactivex.rxjava3.internal.operators.single.SingleOnErrorReturn$OnErrorReturn.onError(SingleOnErrorReturn.java:55)
at io.reactivex.rxjava3.internal.operators.single.SingleMap$MapSingleObserver.onError(SingleMap.java:70)
at io.reactivex.rxjava3.internal.operators.single.SingleDoOnError$DoOnError.onError(SingleDoOnError.java:63)
at io.reactivex.rxjava3.internal.operators.single.SingleSubscribeOn$SubscribeOnObserver.onError(SingleSubscribeOn.java:73)
at io.reactivex.rxjava3.internal.operators.maybe.MaybeToSingle$ToSingleMaybeSubscriber.onError(MaybeToSingle.java:89)
at io.reactivex.rxjava3.internal.operators.flowable.FlowableElementAtMaybe$ElementAtSubscriber.onError(FlowableElementAtMaybe.java:94)
at io.reactivex.rxjava3.internal.operators.maybe.MaybeConcatArray$ConcatMaybeObserver.onError(MaybeConcatArray.java:100)
at io.reactivex.rxjava3.internal.operators.maybe.MaybeFromSingle$FromSingleObserver.onError(MaybeFromSingle.java:82)
at io.reactivex.rxjava3.internal.operators.single.SingleDoOnSuccess$DoOnSuccess.onError(SingleDoOnSuccess.java:65)
at io.reactivex.rxjava3.internal.operators.single.SingleFromCallable.subscribeActual(SingleFromCallable.java:47)
at io.reactivex.rxjava3.core.Single.subscribe(Single.java:4855)
at io.reactivex.rxjava3.internal.operators.single.SingleDoOnSuccess.subscribeActual(SingleDoOnSuccess.java:35)
at io.reactivex.rxjava3.core.Single.subscribe(Single.java:4855)
at io.reactivex.rxjava3.internal.operators.maybe.MaybeFromSingle.subscribeActual(MaybeFromSingle.java:41)
at io.reactivex.rxjava3.core.Maybe.subscribe(Maybe.java:5377)
at io.reactivex.rxjava3.internal.operators.maybe.MaybeConcatArray$ConcatMaybeObserver.drain(MaybeConcatArray.java:153)
at io.reactivex.rxjava3.internal.operators.maybe.MaybeConcatArray$ConcatMaybeObserver.request(MaybeConcatArray.java:78)
at io.reactivex.rxjava3.internal.operators.flowable.FlowableElementAtMaybe$ElementAtSubscriber.onSubscribe(FlowableElementAtMaybe.java:66)
at io.reactivex.rxjava3.internal.operators.maybe.MaybeConcatArray.subscribeActual(MaybeConcatArray.java:42)
at io.reactivex.rxjava3.core.Flowable.subscribe(Flowable.java:16144)
at io.reactivex.rxjava3.internal.operators.flowable.FlowableElementAtMaybe.subscribeActual(FlowableElementAtMaybe.java:36)
at io.reactivex.rxjava3.core.Maybe.subscribe(Maybe.java:5377)
at io.reactivex.rxjava3.internal.operators.maybe.MaybeToSingle.subscribeActual(MaybeToSingle.java:46)
at io.reactivex.rxjava3.core.Single.subscribe(Single.java:4855)
at io.reactivex.rxjava3.internal.operators.single.SingleSubscribeOn$SubscribeOnObserver.run(SingleSubscribeOn.java:89)
at io.reactivex.rxjava3.core.Scheduler$DisposeTask.run(Scheduler.java:644)
at io.reactivex.rxjava3.internal.schedulers.ScheduledRunnable.run(ScheduledRunnable.java:65)
at io.reactivex.rxjava3.internal.schedulers.ScheduledRunnable.call(ScheduledRunnable.java:56)
at java.util.concurrent.FutureTask.run(FutureTask.java:264)
at java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.run(ScheduledThreadPoolExecutor.java:307)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:644)
at java.lang.Thread.run(Thread.java:1012)
Caused by: org.schabi.newpipe.extractor.exceptions.ExtractionException: IOS player response is not valid
at org.schabi.newpipe.extractor.services.youtube.extractors.YoutubeStreamExtractor.fetchIosMobileJsonPlayer(YoutubeStreamExtractor.java:967)
at org.schabi.newpipe.extractor.services.youtube.extractors.YoutubeStreamExtractor.onFetchPage(YoutubeStreamExtractor.java:823)
at org.schabi.newpipe.extractor.Extractor.fetchPage(Extractor.java:60)
at org.schabi.newpipe.extractor.stream.StreamInfo.getInfo(StreamInfo.java:77)
at org.schabi.newpipe.extractor.stream.StreamInfo.getInfo(StreamInfo.java:72)
at org.schabi.newpipe.util.ExtractorHelper.lambda$getStreamInfo$3(ExtractorHelper.java:118)
at org.schabi.newpipe.util.ExtractorHelper.$r8$lambda$YTHJjScxCJNO1LTCqs3IKy35iyY(ExtractorHelper.java:0)
at org.schabi.newpipe.util.ExtractorHelper$$ExternalSyntheticLambda3.call(R8$$SyntheticClass:0)
at io.reactivex.rxjava3.internal.operators.single.SingleFromCallable.subscribeActual(SingleFromCallable.java:43)
... 23 more
Affected Android/Custom ROM version
Android 14
Affected device model
Samsung Galaxy s23+
Additional information
It can happen to multiple videos/songs in a row or only one It happens at random to any playlist and there is no specific order in the playlist for it to happen, it can be the second video or the 30th
my case is that I have to reboot this app after each successful play under mobile data( that is what I feel, maybe wrong)
The same thing happens to me as well on a Pixel 8. Does it happen to the same videos or does it randomly choose which ones it can't play?
Due to bot bug, sometimes this is seen. Open that video (playlist etc) again, then the bot bug appears. https://github.com/TeamNewPipe/NewPipe/issues/11139
It's happenning on yesterday, when i'll attempting to watch it's seems happen and also suddenly showing "Video Unavailable" in other video to watch.
I'll guess, YouTube is still doing test A/B and some even worse they do secret plan to kills iOS Player client...
Having the same problem outside of playlists and on non-background mode. Force stopping and clearing the cache doesn't work. It seems like it's based on popularity, as everything on the trending tab is effected for me.
Closing in favor of #11934