TeamNewPipe / NewPipe

A libre lightweight streaming front-end for Android.
https://newpipe.net
GNU General Public License v3.0
31.01k stars 3.02k forks source link

YouTube live issues #2969

Open B0pol opened 4 years ago

B0pol commented 4 years ago

YouTube live issues

I've watched some streams lately and found out there are lots of issues around it, so I'm going to sum up the issues here.

Viewer count

~~The viewer count rounds to a thousand, and I don't think it's necessary at all. For example, if a live has about 2500 viewers, if right now it has 2510, NewPipe will show 3k, but imagine 2 minutes later the live drops to 2490 viewers, NewPipe will show 2k. Also, I think we should have viewer count in the player, and update it regularly.~~ It has been fixed in v0.18.4.

Time in player

The time in player is not what we should have.

  1. For streams which allow to view in the past

    • Expected: At the bottom left, we should have how long ago the stream started At the bottom right, we should have how many time are we away from current stream. Either LIVE (and it's translation if not english) (if time away = ~0) or time away
    • Actual: At the bottom left, we have a wrong timer if the stream started above 4hrs ago. At the bottom right, we always have LIVE (and never its translation). this specific part was fixed in #3098
  2. For streams which block going back (they let user view only live) Discussion for that case on #1634

Resolution

There is no option to change resolution, even if the stream on YouTube provides multiple resolutions. It plays at the highest resolution available. Related: #2137 #1239 #1312 #2667 #1312 (there are some duplicate issues here).

Comments

There is no way to get comments currently. Thus, we should remove comments view and only show "next videos" if it's a stream. And in the long term, we will hopefully have comments.

Other live issues:

2920 #2606 #2401 #1888

Needing info (is it still an issue?) #1745

B0pol commented 4 years ago

Another issue: live preview

B0pol commented 4 years ago

About live preview: NewPipe can't gather any stream, either audio, or video, for videos / live preview (that's what we expect as there are no streams). But then, it doesn't have a StreamType, and that's why « Content unavailable » is shown. One should create a StreamType like StreamPreview or another similar name, idk, if one wants to fix this problem.

Piloair commented 1 year ago
org.schabi.newpipe.extractor.exceptions.ContentNotAvailableException: Got error: "This live event will begin in 2 hours."
    at org.schabi.newpipe.extractor.services.youtube.extractors.YoutubeStreamExtractor.checkPlayabilityStatus(YoutubeStreamExtractor.java:966)
    at org.schabi.newpipe.extractor.services.youtube.extractors.YoutubeStreamExtractor.onFetchPage(YoutubeStreamExtractor.java:871)
    at org.schabi.newpipe.extractor.Extractor.fetchPage(Extractor.java:60)
    at org.schabi.newpipe.extractor.stream.StreamInfo.getInfo(StreamInfo.java:78)
    at org.schabi.newpipe.extractor.stream.StreamInfo.getInfo(StreamInfo.java:73)
    at org.schabi.newpipe.util.ExtractorHelper.lambda$getStreamInfo$3(ExtractorHelper.java:118)
    at org.schabi.newpipe.util.ExtractorHelper.$r8$lambda$YTHJjScxCJNO1LTCqs3IKy35iyY(Unknown Source:0)
    at org.schabi.newpipe.util.ExtractorHelper$$ExternalSyntheticLambda6.call(Unknown Source:4)
    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:266)
    at java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.run(ScheduledThreadPoolExecutor.java:301)
    at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1167)
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:641)
    at java.lang.Thread.run(Thread.java:923)