Skip to content

[Bug] [YouTube] Could not get audio streams & video quality stuck at 360p #998

@ToddIndry37

Description

@ToddIndry37

Checklist (Your issue will be automatically closed if you delete this part)

  • [ ✓ ] I make sure that there are no existing issues - open or closed - which I could contribute my information to.
  • [ ✓ ] I understand that issues with limited impact, such as those occurring on specific devices or under specific network conditions, will not be fixed.
  • [ ✓ ] I am able to reproduce the bug with the latest version given here: CLICK THIS LINK.
  • [ ✓ ] I have attached the error report in the issue.

Describe the bug
Whenever I watching video, sometimes it'll get the error that the audio streams can't be obtained from YouTube servers (likely they changed again, perhaps?) Also, when it couldn't get that audio streams, the video quality is limited to 360p.

Frequency
Sometimes, but not all videos likely got this error, yet

Steps to reproduce the bug

  • Open PipePipe as usual
  • Find the random videos on YouTube side
  • Wait until the video loaded
  • If you got "sorry, something went wrong" error on the bottom on some videos, you'll likely get that possibly new audio streams implementation from Google or something idk (but prove me wrong)

Device (e.g. Pixel 9 Pro)
Xiaomi Redmi Note 4 running MIUI 11.0.2 (stock ROM), Android 7.0

Error report

org.schabi.newpipe.extractor.exceptions.ExtractionException: Couldn't get audio streams
	at org.schabi.newpipe.extractor.stream.StreamInfo.extractStreams(StreamInfo.java:195)
	at org.schabi.newpipe.extractor.stream.StreamInfo.getInfo(StreamInfo.java:109)
	at org.schabi.newpipe.extractor.stream.StreamInfo.getInfo(StreamInfo.java:88)
	at org.schabi.newpipe.util.ExtractorHelper.getNewStreamInfo(ExtractorHelper.java:132)
	at org.schabi.newpipe.util.ExtractorHelper.lambda$getStreamInfo$3(ExtractorHelper.java:127)
	at org.schabi.newpipe.util.ExtractorHelper.$r8$lambda$YTHJjScxCJNO1LTCqs3IKy35iyY(ExtractorHelper.java)
	at org.schabi.newpipe.util.ExtractorHelper$$ExternalSyntheticLambda5.call(R8$$SyntheticClass)
	at io.reactivex.rxjava3.internal.operators.single.SingleFromCallable.subscribeActual(SingleFromCallable.java:43)
	at io.reactivex.rxjava3.core.Single.subscribe(Single.java:4813)
	at io.reactivex.rxjava3.internal.operators.single.SingleDoOnSuccess.subscribeActual(SingleDoOnSuccess.java:35)
	at io.reactivex.rxjava3.core.Single.subscribe(Single.java:4813)
	at io.reactivex.rxjava3.internal.operators.maybe.MaybeFromSingle.subscribeActual(MaybeFromSingle.java:41)
	at io.reactivex.rxjava3.core.Maybe.subscribe(Maybe.java:5330)
	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:15868)
	at io.reactivex.rxjava3.internal.operators.flowable.FlowableElementAtMaybe.subscribeActual(FlowableElementAtMaybe.java:36)
	at io.reactivex.rxjava3.core.Maybe.subscribe(Maybe.java:5330)
	at io.reactivex.rxjava3.internal.operators.maybe.MaybeToSingle.subscribeActual(MaybeToSingle.java:46)
	at io.reactivex.rxjava3.core.Single.subscribe(Single.java:4813)
	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:237)
	at java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.run(ScheduledThreadPoolExecutor.java:272)
	at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1133)
	at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:607)
	at java.lang.Thread.run(Thread.java:760)
Caused by: org.schabi.newpipe.extractor.exceptions.ParsingException: Could not get audio streams
	at org.schabi.newpipe.extractor.services.youtube.extractors.YoutubeStreamExtractor.getItags(YoutubeStreamExtractor.java:1340)
	at org.schabi.newpipe.extractor.services.youtube.extractors.YoutubeStreamExtractor.getAudioStreams(YoutubeStreamExtractor.java:657)
	at org.schabi.newpipe.extractor.stream.StreamInfo.extractStreams(StreamInfo.java:191)
	... 30 more
Caused by: java.lang.NullPointerException: Attempt to invoke virtual method 'java.lang.String[] java.lang.String.split(java.lang.String)' on a null object reference
	at org.schabi.newpipe.extractor.utils.Parser.compatParseMap(Parser.java:140)
	at org.schabi.newpipe.extractor.services.youtube.extractors.YoutubeStreamExtractor.buildAndAddItagInfoToList(YoutubeStreamExtractor.java:1533)
	at org.schabi.newpipe.extractor.services.youtube.extractors.YoutubeStreamExtractor.lambda$getStreamsFromStreamingDataKey$28(YoutubeStreamExtractor.java:1507)
	at org.schabi.newpipe.extractor.services.youtube.extractors.YoutubeStreamExtractor.$r8$lambda$UzQHXY7teet_MSd3x5z6Uj_H6mc(YoutubeStreamExtractor.java)
	at org.schabi.newpipe.extractor.services.youtube.extractors.YoutubeStreamExtractor$$ExternalSyntheticLambda29.apply(R8$$SyntheticClass)
	at j$.util.stream.T1.accept(SourceFile:0)
	at j$.util.stream.T1.accept(SourceFile:0)
	at j$.util.stream.T1.accept(SourceFile:0)
	at j$.util.stream.T1.accept(SourceFile:0)
	at j$.util.Iterator$-CC.$default$forEachRemaining(SourceFile:0)
	at j$.util.Iterator$-EL.forEachRemaining(SourceFile)
	at j$.util.X.forEachRemaining(SourceFile)
	at j$.util.stream.c.G0(SourceFile:0)
	at j$.util.stream.c.Y0(SourceFile:0)
	at j$.util.stream.T.b0(SourceFile:0)
	at j$.util.stream.c.b1(SourceFile:0)
	at j$.util.stream.Z1.forEach(SourceFile:0)
	at j$.util.stream.T1.accept(SourceFile:0)
	at j$.util.P.forEachRemaining(SourceFile)
	at j$.util.stream.c.G0(SourceFile:0)
	at j$.util.stream.c.Y0(SourceFile:0)
	at j$.util.stream.T.b0(SourceFile:0)
	at j$.util.stream.c.b1(SourceFile:0)
	at j$.util.stream.Z1.forEachOrdered(SourceFile:0)
	at org.schabi.newpipe.extractor.services.youtube.extractors.YoutubeStreamExtractor.getItags(YoutubeStreamExtractor.java:1332)
	... 32 more
-------------------------------------
org.schabi.newpipe.extractor.exceptions.ExtractionException: Couldn't get video only streams
	at org.schabi.newpipe.extractor.stream.StreamInfo.extractStreams(StreamInfo.java:209)
	at org.schabi.newpipe.extractor.stream.StreamInfo.getInfo(StreamInfo.java:109)
	at org.schabi.newpipe.extractor.stream.StreamInfo.getInfo(StreamInfo.java:88)
	at org.schabi.newpipe.util.ExtractorHelper.getNewStreamInfo(ExtractorHelper.java:132)
	at org.schabi.newpipe.util.ExtractorHelper.lambda$getStreamInfo$3(ExtractorHelper.java:127)
	at org.schabi.newpipe.util.ExtractorHelper.$r8$lambda$YTHJjScxCJNO1LTCqs3IKy35iyY(ExtractorHelper.java)
	at org.schabi.newpipe.util.ExtractorHelper$$ExternalSyntheticLambda5.call(R8$$SyntheticClass)
	at io.reactivex.rxjava3.internal.operators.single.SingleFromCallable.subscribeActual(SingleFromCallable.java:43)
	at io.reactivex.rxjava3.core.Single.subscribe(Single.java:4813)
	at io.reactivex.rxjava3.internal.operators.single.SingleDoOnSuccess.subscribeActual(SingleDoOnSuccess.java:35)
	at io.reactivex.rxjava3.core.Single.subscribe(Single.java:4813)
	at io.reactivex.rxjava3.internal.operators.maybe.MaybeFromSingle.subscribeActual(MaybeFromSingle.java:41)
	at io.reactivex.rxjava3.core.Maybe.subscribe(Maybe.java:5330)
	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:15868)
	at io.reactivex.rxjava3.internal.operators.flowable.FlowableElementAtMaybe.subscribeActual(FlowableElementAtMaybe.java:36)
	at io.reactivex.rxjava3.core.Maybe.subscribe(Maybe.java:5330)
	at io.reactivex.rxjava3.internal.operators.maybe.MaybeToSingle.subscribeActual(MaybeToSingle.java:46)
	at io.reactivex.rxjava3.core.Single.subscribe(Single.java:4813)
	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:237)
	at java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.run(ScheduledThreadPoolExecutor.java:272)
	at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1133)
	at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:607)
	at java.lang.Thread.run(Thread.java:760)
Caused by: org.schabi.newpipe.extractor.exceptions.ParsingException: Could not get video-only streams
	at org.schabi.newpipe.extractor.services.youtube.extractors.YoutubeStreamExtractor.getItags(YoutubeStreamExtractor.java:1340)
	at org.schabi.newpipe.extractor.services.youtube.extractors.YoutubeStreamExtractor.getVideoOnlyStreams(YoutubeStreamExtractor.java:673)
	at org.schabi.newpipe.extractor.stream.StreamInfo.extractStreams(StreamInfo.java:207)
	... 30 more
Caused by: java.lang.NullPointerException: Attempt to invoke virtual method 'java.lang.String[] java.lang.String.split(java.lang.String)' on a null object reference
	at org.schabi.newpipe.extractor.utils.Parser.compatParseMap(Parser.java:140)
	at org.schabi.newpipe.extractor.services.youtube.extractors.YoutubeStreamExtractor.buildAndAddItagInfoToList(YoutubeStreamExtractor.java:1533)
	at org.schabi.newpipe.extractor.services.youtube.extractors.YoutubeStreamExtractor.lambda$getStreamsFromStreamingDataKey$28(YoutubeStreamExtractor.java:1507)
	at org.schabi.newpipe.extractor.services.youtube.extractors.YoutubeStreamExtractor.$r8$lambda$UzQHXY7teet_MSd3x5z6Uj_H6mc(YoutubeStreamExtractor.java)
	at org.schabi.newpipe.extractor.services.youtube.extractors.YoutubeStreamExtractor$$ExternalSyntheticLambda29.apply(R8$$SyntheticClass)
	at j$.util.stream.T1.accept(SourceFile:0)
	at j$.util.stream.T1.accept(SourceFile:0)
	at j$.util.stream.T1.accept(SourceFile:0)
	at j$.util.stream.T1.accept(SourceFile:0)
	at j$.util.Iterator$-CC.$default$forEachRemaining(SourceFile:0)
	at j$.util.Iterator$-EL.forEachRemaining(SourceFile)
	at j$.util.X.forEachRemaining(SourceFile)
	at j$.util.stream.c.G0(SourceFile:0)
	at j$.util.stream.c.Y0(SourceFile:0)
	at j$.util.stream.T.b0(SourceFile:0)
	at j$.util.stream.c.b1(SourceFile:0)
	at j$.util.stream.Z1.forEach(SourceFile:0)
	at j$.util.stream.T1.accept(SourceFile:0)
	at j$.util.P.forEachRemaining(SourceFile)
	at j$.util.stream.c.G0(SourceFile:0)
	at j$.util.stream.c.Y0(SourceFile:0)
	at j$.util.stream.T.b0(SourceFile:0)
	at j$.util.stream.c.b1(SourceFile:0)
	at j$.util.stream.Z1.forEachOrdered(SourceFile:0)
	at org.schabi.newpipe.extractor.services.youtube.extractors.YoutubeStreamExtractor.getItags(YoutubeStreamExtractor.java:1332)
	... 32 more

Additional context
I don't know if this yet another new YouTube implementation that they testing on all users (even signed in), but hopefully it can be fixed anytime soon.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions