TeamNewPipe / NewPipe

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

Release 0.20.0 #4332

Closed TobiGr closed 3 years ago

TobiGr commented 3 years ago

Changelogs

App

New

Improved

Fixed

Development

Extractor

Improved

APK for testing

NewPipe_v0.20.0RC7.zip Corresponding PR: #4333

Stypox commented 3 years ago

I found an issue with rotation (didn't notice it before):

To fix this I'd suggest resetting rotation when minimizing to background or to popup @avently

avently commented 3 years ago

open a video and make it fullscreen

With this step the phone will rotate to landscape (when orientation is locked) which is expected.

close the player via the notification

With this step the player will be "unfullscreened" but stays in landscape. And I think it's how it should work in this case. It's much better than to see unexpected rotation of the UI when you don't asked for it.

but the orientation is landscape instead of portrait

It shouldn't be portrait because the orientation is locked to landscape. I (and believe me, you too) don't want to see the rotation happened here and there just because the player is closed. Same action happens when you scroll down the player in fullscreen (by long pressing on arrow down button) and choose open in popup or background, or press on close button in mini player.

And it much better (like in your example) to return back from Recents, to tap on a thumbnail and to continue playing without rotation happened multiple times. Don't you agree?

opusforlife2 commented 3 years ago

the original video details are opened, but the orientation is landscape instead of portrait

I see this as expected behaviour. When you view the video in the main player in landscape mode, and close the player from the notification, the video details stay in landscape. Your steps are just the long way of getting to this same place.

Stypox commented 3 years ago

This is what happens on my phone. After I press the home button, I am automatically brought back to the original orientation, which is portrait. If I then start to navigate other apps in portait, I would not expect NewPipe to be landscape when opening it, and there also is no way to bring it back to portrait unless I enable auto-rotate or open the video. Maybe the issue here is how EMUI handles these things, since your statement "the phone will rotate to landscape" does not hold true as soon as I exit NewPipe. a

opusforlife2 commented 3 years ago

there also is no way to bring it back to portrait unless I enable auto-rotate or open the video

Yeah this is a downside I see as well. Not sure what a better flow would be.

avently commented 3 years ago

@Stypox

Maybe the issue here is how EMUI handles these things

Orientation is applied to an activity so when you change the activity (I.e. going to another app) the orientation will be global or overrided by another app. If you have a locked global portrait orientation it's expected to see it after leaving the app. It's not only for EMUI.

and there also is no way to bring it back to portrait unless I enable auto-rotate or open the video

This is true for every situation with locked orientation. I mean if you locked orientation globally you can turn on autorotation to exit from this locked mode. Same here. You have locked into landscape, you can exit from this mode, like you said, with autorotation or via button after playback is started. Don't see a problem here but a useful thing that allows to browse in landscape mode.

Stypox commented 3 years ago

@avently ok, if you say this is expected behaviour then ok. It does not feel right to me, but I didn't take part in earlier conversations, so now it surely shouldn't be changed. I'm hiding the offtopic comments ;-)

XiangRongLin commented 3 years ago

It should not be possible to select the same buttons multiple times. Also for whatever reason the notification is blue.

opusforlife2 commented 3 years ago

@XiangRongLin It takes the colour theme from the thumbnail. See the blue bar at the top of your video's thumbnail.

XiangRongLin commented 3 years ago

The option to not show the thumbnail on the lockscreen during background play is gone from the "player" section. Was it removed in purpose or what happened to it?

opusforlife2 commented 3 years ago

This was discussed somewhere very recently. I think the idea was that the option was added because showing the thumbnail was buggy with the earlier notification, but now that we've shifted to MediaStyle notification, it's not needed anymore.

terrytw commented 3 years ago

Not sure if it is intended or not: But when switching between popup player and main player, the video would reload instead of continue playing. Original youtube app or twitch would continue playing when switching to and from popup player.

opusforlife2 commented 3 years ago

Are you sure you're testing the RC? The switch happens properly for me, resuming instead of restarting.

test2a commented 3 years ago

i have had this glitch when switching to and back from fullscreen video, the screen flashes black for a second. it was happening on previous debug versions and on this current one as well. i will probably make a gif about it, unless someone else also has the same issue

opusforlife2 commented 3 years ago

That's not a glitch, just slow player code, @test2a. It will improve a lot after avently's performance PR is merged. Test the RC again after that happens.

terrytw commented 3 years ago

@opusforlife2 Sorry I didn't state it clearly enough. When I say "reload", I did not mean the video would restart, it was more like the video pauses for 2-3 seconds, with a circling animation playing, before resuming to play. It just feels laggy switching between main and popup player, whereas other apps like twitch would do it seamlessly.

I think @test2a was describing something different.

XiangRongLin commented 3 years ago

This was discussed somewhere very recently. I think the idea was that the option was added because showing the thumbnail was buggy with the earlier notification, but now that we've shifted to MediaStyle notification, it's not needed anymore.

@opusforlife2 How do i now not show the thumbnail on the lockscreen? I have the Android feature active to hide sensitive content, so it is just a blurry image. And i like my own wallpaper.

@XiangRongLin It takes the colour theme from the thumbnail. See the blue bar at the top of your video's thumbnail.

@opusforlife2 Is there an option to disable it? I really dislike having everything be darkmode and then newpipe sometimes displaying bright yellow/blue/white notifications.

opusforlife2 commented 3 years ago

Is there an option to disable it?

"Starting at Android O any notification that has a media session attached with setMediaSession(android.media.session.MediaSession.Token) will be colorized. You can opt-out of this behavior by using Notification.Builder#setColorized(boolean)."

https://developer.android.com/reference/android/app/Notification.MediaStyle

@XiangRongLin Maybe this can be added as an option in Notification settings?

How do i now not show the thumbnail on the lockscreen? I have the Android feature active to hide sensitive content, so it is just a blurry image. And i like my own wallpaper.

@XiangRongLin I suppose the option would have to be added back, or rewritten, maybe, since the related code has changed.

opusforlife2 commented 3 years ago

it was more like the video pauses for 2-3 seconds, with a circling animation playing, before resuming to play.

@terrytw That's because you have the possibility of having different default resolutions for popup and main player. The app would need to load a different stream URL and then seek to that timestamp.

terrytw commented 3 years ago

@opusforlife2 You are right, the resolution is part of the problem. After making sure main player and popup player has the same default resolution, the lag reduced to about 0.5 seconds, but it is definitely there, whenever I switched between players, the video paused for a short period of time, it is obvious because sound stopped and resumed. But switching from portrait and landscape did not invoke this behavior.

opusforlife2 commented 3 years ago

That's because there is no scope of the resolution changing there, and the player isn't changing either. The stream continues to play in the main player.

@test2a @terrytw For seamless switching (the stream doesn't pause at all) between players, follow #2863.

snappyapple632 commented 3 years ago

I wanted to comment on how the Unified Player handles video previews while playing in the background. As it is now, when a video is playing in the background, the video, when autoplay is on, takes priority over the background video. I think we should arrange this so NewPipe doesn't autoplay when clicking a video if there is already one in the background. When I exit out of the video, the background video is also closed out. I believe this is a side effect of the media notification.

For clarification, I queued a playlist in the background, and selecting a new video caused NewPipe to exit out of the playlist. I can imagine this might be troublesome for others.

opusforlife2 commented 3 years ago

@snappyapple632 You're supposed to get a warning dialogue when that happens. Under Video and Audio settings, check if "Ask before clearing queue" is toggled on.

snappyapple632 commented 3 years ago

Ah, nevermind then.

MD77MD commented 3 years ago

I have noticed two bugs so far:

  1. the buffer bar does not update buffer position unless you interact with the player such as skipping (meaning even if the video is already 20s buffered ahead, the buffer bar will not show it unless you tab one of the player buttons such as skipping backwards) edit: please see #4343 @opusforlife2

  2. open a playlist in full-screen mode. while playing, tab the top-right button to show the queue. the bug: although the queue window is on top, you can still accidentally press the player ui buttons such as the video quality menu . I think the queue window should block player buttons until dismissed.

MD77MD commented 3 years ago

hay guys ... I know this is a dumb question but if I'm playing a queue in normal mod, how am I supposed to switch to pop-up mode without losing my queue?

opusforlife2 commented 3 years ago

the buffer bar does not update buffer position unless you interact with the player such as skipping

@MD77MD That is true for the release version as well. Nothing to do with this RC. You can open a new issue if one doesn't already exist.

although the queue window is on top, you can still accidentally press the player ui buttons such as the video quality menu

Confirmed. This should be fixed before release.

but if I'm playing a queue in normal mod, how am I supposed to switch to pop-up mode without losing my queue?

Yeah, you can switch from popup or background to the others, but the 2 buttons for this in the main player are gone. What was the reason, @avently? Can they be restored?

avently commented 3 years ago

@MD77MD you have a buttons under the player named Popup and Background. After pressing on any of them you'll not lose you queue but instead open current queue in popup or in background players.

@opusforlife2

What was the reason, can they be restored?

They are useless and take space without a need. No, they will not be restored. You have the same buttons under a video

Redirion commented 3 years ago

Exception

android.app.RemoteServiceException: Context.startForegroundService() did not then call Service.startForeground()
    at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1881)
    at android.os.Handler.dispatchMessage(Handler.java:105)
    at android.os.Looper.loop(Looper.java:164)
    at android.app.ActivityThread.main(ActivityThread.java:6944)
    at java.lang.reflect.Method.invoke(Native Method)
    at com.android.internal.os.Zygote$MethodAndArgsCaller.run(Zygote.java:327)
    at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1374)


Stypox commented 3 years ago

@Redirion could you provide more details? Can it be reproduced? I found this, btw, so this is probably my fault and I will look into it

Stypox commented 3 years ago

@Redirion that's most probably not caused by NewPipe's code, but by an AOSP "intended bug". I applied a workaroud from here and there do not seem to be any side effects (i.e. adding createNotificationAndStartForeground, which in turn calls startForeground, in MainPlayer.onCreate()). Does this apk fix the issue? app-debug.zip

FireMasterK commented 3 years ago

Edit: removed, this was an issue on my end.

I have a different error now tho, this isn't rc specific as it happens on 0.19.8 too

Exception

Crash log

``` org.schabi.newpipe.local.feed.service.FeedLoadService$RequestException: 0:https://www.youtube.com/channel/UC150TvgRnAE8qtZUWS68tWw at org.schabi.newpipe.local.feed.service.FeedLoadService$RequestException$Companion.wrapList(FeedLoadService.kt:165) at org.schabi.newpipe.local.feed.service.FeedLoadService$databaseConsumer$1$1.run(FeedLoadService.kt:314) at androidx.room.RoomDatabase.runInTransaction(RoomDatabase.java:410) at org.schabi.newpipe.local.feed.service.FeedLoadService$databaseConsumer$1.accept(FeedLoadService.kt:303) at org.schabi.newpipe.local.feed.service.FeedLoadService$databaseConsumer$1.accept(FeedLoadService.kt:66) at io.reactivex.internal.operators.flowable.FlowableDoOnEach$DoOnEachSubscriber.onNext(FlowableDoOnEach.java:86) at io.reactivex.internal.operators.flowable.FlowableBuffer$PublisherBufferExactSubscriber.onComplete(FlowableBuffer.java:152) at io.reactivex.internal.operators.flowable.FlowableObserveOn$BaseObserveOnSubscriber.checkTerminated(FlowableObserveOn.java:215) at io.reactivex.internal.operators.flowable.FlowableObserveOn$ObserveOnSubscriber.runAsync(FlowableObserveOn.java:399) at io.reactivex.internal.operators.flowable.FlowableObserveOn$BaseObserveOnSubscriber.run(FlowableObserveOn.java:176) at io.reactivex.internal.schedulers.ScheduledRunnable.run(ScheduledRunnable.java:66) at io.reactivex.internal.schedulers.ScheduledRunnable.call(ScheduledRunnable.java:57) 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:919) Caused by: org.schabi.newpipe.extractor.exceptions.ParsingException: Could not get duration at org.schabi.newpipe.extractor.services.youtube.extractors.YoutubeStreamInfoItemExtractor.getDuration(YoutubeStreamInfoItemExtractor.java:117) at org.schabi.newpipe.extractor.stream.StreamInfoItemsCollector.extract(StreamInfoItemsCollector.java:54) at org.schabi.newpipe.extractor.stream.StreamInfoItemsCollector.commit(StreamInfoItemsCollector.java:94) at org.schabi.newpipe.extractor.services.youtube.extractors.YoutubeChannelExtractor.collectStreamsFrom(YoutubeChannelExtractor.java:289) at org.schabi.newpipe.extractor.services.youtube.extractors.YoutubeChannelExtractor.getInitialPage(YoutubeChannelExtractor.java:239) at org.schabi.newpipe.extractor.utils.ExtractorHelper.getItemsPageOrLogError(ExtractorHelper.java:19) at org.schabi.newpipe.extractor.channel.ChannelInfo.getInfo(ChannelInfo.java:83) at org.schabi.newpipe.extractor.channel.ChannelInfo.getInfo(ChannelInfo.java:48) at org.schabi.newpipe.util.ExtractorHelper.lambda$getChannelInfo$4(ExtractorHelper.java:124) at org.schabi.newpipe.util.-$$Lambda$ExtractorHelper$u5W7VszTe8AoEexIsFM9huQfbkM.call(Unknown Source:4) at io.reactivex.internal.operators.single.SingleFromCallable.subscribeActual(SingleFromCallable.java:44) at io.reactivex.Single.subscribe(Single.java:3666) at io.reactivex.internal.operators.single.SingleDoOnSuccess.subscribeActual(SingleDoOnSuccess.java:35) at io.reactivex.Single.subscribe(Single.java:3666) at io.reactivex.Single.blockingGet(Single.java:2869) at org.schabi.newpipe.local.feed.service.FeedLoadService$startLoading$7.apply(FeedLoadService.kt:217) at org.schabi.newpipe.local.feed.service.FeedLoadService$startLoading$7.apply(FeedLoadService.kt:66) at io.reactivex.internal.operators.parallel.ParallelMap$ParallelMapSubscriber.onNext(ParallelMap.java:113) at io.reactivex.internal.operators.parallel.ParallelFilter$ParallelFilterSubscriber.tryOnNext(ParallelFilter.java:130) at io.reactivex.internal.operators.parallel.ParallelRunOn$RunOnConditionalSubscriber.run(ParallelRunOn.java:397) ... 7 more ```


opusforlife2 commented 3 years ago

You have the same buttons under a video

@avently Oh. I didn't know that. That is cool that they retain the queue! Thanks!

opusforlife2 commented 3 years ago

this isn't rc specific as it happens on 0.19.8 too

@FireMasterK Then you should check for duplicates and create a new issue. No need to do that here, though. It is a known issue with Youtube adding old abandoned livestreams to the channel page or something.

TobiGr commented 3 years ago

Release candidate 2 contains performance improvements (#4288) NewPipe_v0.20.0RC2.zip

MD77MD commented 3 years ago

@avently thank you for your help.. your implementation is very neat..

@opusforlife2 i don't think we need restore those buttons because we already have a better alternative. however they can not be accessed in landscape mode unless we have the auto rotation off, which is a bummer.. in my opinion the swipe up feature for video description should be universal and enabled, regardless of auto rotation states.

MD77MD commented 3 years ago

another two potential bugs (a 2 in 1 😁):

  1. I'm not sure if this is bug or by design. a. open a playlist b. tap the play all but in background mode button c. it would start playing but without the mini player. the bug: inconsistency

  2. this is a direct result of bug (1) above... but the "ask for confirmation before clearing queue" most be enabled: a. do all the steps above (a, b, and c) b. now open any video (called video B) but do not clear queue (click cancel) c. now minimize to mini player the bug: the mini player would display info of video (B) and not the actual video playing... this only happens with playlist started in background mode. however this does not happen if you start a single video in background mode...

extract clarification: that is to say if you open video (A) in background mode and minimized you can still view the info of other videos but if you minimize them it will always display info if video (A).

MD77MD commented 3 years ago

another potential bug: while video is paused, enqueueing a another video will unintentionally cause the player to resume playback.

  1. open any video in pop-up mode and pause it.
  2. then go to the info page of any video.
  3. now hold pop-up button to enqueue that video. the bug: the video will be enqueued however it will unintentionally cause the pop-up video to resume playback. this applies to other modes.

I guess this was fixed in 19.8... now its back again.

ghost commented 3 years ago

Mhh... I have tried RC2, and I think that background button should be removed. For 2 reasons:

1) Is redundant. When NewPipe is minimized, audio playback still keep active.

2) Breaks UI unification. After tapping on minimize button, and after tapping also on notification, old audio player appear again.

But if you want to keep it to have more choice, point 2 must be fixed.

MD77MD commented 3 years ago

newPipe 0.20 Rc2 keeps crashing but don't now why?

Exception

org.schabi.newpipe.local.feed.service.FeedLoadService$RequestException: 0:https://www.youtube.com/channel/UCkZC9CNC1E5YVpbH03ejMqA
    at org.schabi.newpipe.local.feed.service.FeedLoadService$RequestException$Companion.wrapList(FeedLoadService.kt:165)
    at org.schabi.newpipe.local.feed.service.FeedLoadService$databaseConsumer$1$1.run(FeedLoadService.kt:314)
    at androidx.room.RoomDatabase.runInTransaction(RoomDatabase.java:410)
    at org.schabi.newpipe.local.feed.service.FeedLoadService$databaseConsumer$1.accept(FeedLoadService.kt:303)
    at org.schabi.newpipe.local.feed.service.FeedLoadService$databaseConsumer$1.accept(FeedLoadService.kt:66)
    at io.reactivex.internal.operators.flowable.FlowableDoOnEach$DoOnEachSubscriber.onNext(FlowableDoOnEach.java:86)
    at io.reactivex.internal.operators.flowable.FlowableBuffer$PublisherBufferExactSubscriber.onNext(FlowableBuffer.java:126)
    at io.reactivex.internal.operators.flowable.FlowableObserveOn$ObserveOnSubscriber.runAsync(FlowableObserveOn.java:407)
    at io.reactivex.internal.operators.flowable.FlowableObserveOn$BaseObserveOnSubscriber.run(FlowableObserveOn.java:176)
    at io.reactivex.internal.schedulers.ScheduledRunnable.run(ScheduledRunnable.java:66)
    at io.reactivex.internal.schedulers.ScheduledRunnable.call(ScheduledRunnable.java:57)
    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:762)
Caused by: org.schabi.newpipe.extractor.exceptions.ParsingException: Could not get duration
    at org.schabi.newpipe.extractor.services.youtube.extractors.YoutubeStreamInfoItemExtractor.getDuration(YoutubeStreamInfoItemExtractor.java:117)
    at org.schabi.newpipe.extractor.stream.StreamInfoItemsCollector.extract(StreamInfoItemsCollector.java:54)
    at org.schabi.newpipe.extractor.stream.StreamInfoItemsCollector.commit(StreamInfoItemsCollector.java:94)
    at org.schabi.newpipe.extractor.services.youtube.extractors.YoutubeChannelExtractor.collectStreamsFrom(YoutubeChannelExtractor.java:289)
    at org.schabi.newpipe.extractor.services.youtube.extractors.YoutubeChannelExtractor.getInitialPage(YoutubeChannelExtractor.java:239)
    at org.schabi.newpipe.extractor.utils.ExtractorHelper.getItemsPageOrLogError(ExtractorHelper.java:19)
    at org.schabi.newpipe.extractor.channel.ChannelInfo.getInfo(ChannelInfo.java:83)
    at org.schabi.newpipe.extractor.channel.ChannelInfo.getInfo(ChannelInfo.java:48)
    at org.schabi.newpipe.util.ExtractorHelper.lambda$getChannelInfo$4(ExtractorHelper.java:124)
    at org.schabi.newpipe.util.-$$Lambda$ExtractorHelper$u5W7VszTe8AoEexIsFM9huQfbkM.call(lambda)
    at io.reactivex.internal.operators.single.SingleFromCallable.subscribeActual(SingleFromCallable.java:44)
    at io.reactivex.Single.subscribe(Single.java:3666)
    at io.reactivex.internal.operators.single.SingleDoOnSuccess.subscribeActual(SingleDoOnSuccess.java:35)
    at io.reactivex.Single.subscribe(Single.java:3666)
    at io.reactivex.Single.blockingGet(Single.java:2869)
    at org.schabi.newpipe.local.feed.service.FeedLoadService$startLoading$7.apply(FeedLoadService.kt:217)
    at org.schabi.newpipe.local.feed.service.FeedLoadService$startLoading$7.apply(FeedLoadService.kt:66)
    at io.reactivex.internal.operators.parallel.ParallelMap$ParallelMapSubscriber.onNext(ParallelMap.java:113)
    at io.reactivex.internal.operators.parallel.ParallelFilter$ParallelFilterSubscriber.tryOnNext(ParallelFilter.java:130)
    at io.reactivex.internal.operators.parallel.ParallelRunOn$RunOnConditionalSubscriber.run(ParallelRunOn.java:397)
    ... 7 more

Crash log 2

``` org.schabi.newpipe.local.feed.service.FeedLoadService$RequestException: 0:https://www.youtube.com/channel/UCZDA1kA3y3EIg25BpcHSpwQ at org.schabi.newpipe.local.feed.service.FeedLoadService$RequestException$Companion.wrapList(FeedLoadService.kt:165) at org.schabi.newpipe.local.feed.service.FeedLoadService$databaseConsumer$1$1.run(FeedLoadService.kt:314) at androidx.room.RoomDatabase.runInTransaction(RoomDatabase.java:410) at org.schabi.newpipe.local.feed.service.FeedLoadService$databaseConsumer$1.accept(FeedLoadService.kt:303) at org.schabi.newpipe.local.feed.service.FeedLoadService$databaseConsumer$1.accept(FeedLoadService.kt:66) at io.reactivex.internal.operators.flowable.FlowableDoOnEach$DoOnEachSubscriber.onNext(FlowableDoOnEach.java:86) at io.reactivex.internal.operators.flowable.FlowableBuffer$PublisherBufferExactSubscriber.onNext(FlowableBuffer.java:126) at io.reactivex.internal.operators.flowable.FlowableObserveOn$ObserveOnSubscriber.runAsync(FlowableObserveOn.java:407) at io.reactivex.internal.operators.flowable.FlowableObserveOn$BaseObserveOnSubscriber.run(FlowableObserveOn.java:176) at io.reactivex.internal.schedulers.ScheduledRunnable.run(ScheduledRunnable.java:66) at io.reactivex.internal.schedulers.ScheduledRunnable.call(ScheduledRunnable.java:57) 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:762) Caused by: org.schabi.newpipe.extractor.exceptions.ParsingException: Could not get duration at org.schabi.newpipe.extractor.services.youtube.extractors.YoutubeStreamInfoItemExtractor.getDuration(YoutubeStreamInfoItemExtractor.java:117) at org.schabi.newpipe.extractor.stream.StreamInfoItemsCollector.extract(StreamInfoItemsCollector.java:54) at org.schabi.newpipe.extractor.stream.StreamInfoItemsCollector.commit(StreamInfoItemsCollector.java:94) at org.schabi.newpipe.extractor.services.youtube.extractors.YoutubeChannelExtractor.collectStreamsFrom(YoutubeChannelExtractor.java:289) at org.schabi.newpipe.extractor.services.youtube.extractors.YoutubeChannelExtractor.getInitialPage(YoutubeChannelExtractor.java:239) at org.schabi.newpipe.extractor.utils.ExtractorHelper.getItemsPageOrLogError(ExtractorHelper.java:19) at org.schabi.newpipe.extractor.channel.ChannelInfo.getInfo(ChannelInfo.java:83) at org.schabi.newpipe.extractor.channel.ChannelInfo.getInfo(ChannelInfo.java:48) at org.schabi.newpipe.util.ExtractorHelper.lambda$getChannelInfo$4(ExtractorHelper.java:124) at org.schabi.newpipe.util.-$$Lambda$ExtractorHelper$u5W7VszTe8AoEexIsFM9huQfbkM.call(lambda) at io.reactivex.internal.operators.single.SingleFromCallable.subscribeActual(SingleFromCallable.java:44) at io.reactivex.Single.subscribe(Single.java:3666) at io.reactivex.internal.operators.single.SingleDoOnSuccess.subscribeActual(SingleDoOnSuccess.java:35) at io.reactivex.Single.subscribe(Single.java:3666) at io.reactivex.Single.blockingGet(Single.java:2869) at org.schabi.newpipe.local.feed.service.FeedLoadService$startLoading$7.apply(FeedLoadService.kt:217) at org.schabi.newpipe.local.feed.service.FeedLoadService$startLoading$7.apply(FeedLoadService.kt:66) at io.reactivex.internal.operators.parallel.ParallelMap$ParallelMapSubscriber.onNext(ParallelMap.java:113) at io.reactivex.internal.operators.parallel.ParallelFilter$ParallelFilterSubscriber.tryOnNext(ParallelFilter.java:130) at io.reactivex.internal.operators.parallel.ParallelRunOn$RunOnConditionalSubscriber.run(ParallelRunOn.java:397) ... 7 more ```

Crash log 3

``` org.schabi.newpipe.local.feed.service.FeedLoadService$RequestException: 0:https://www.youtube.com/channel/UCnRK2VxaCN41SJJg0P6N34w at org.schabi.newpipe.local.feed.service.FeedLoadService$RequestException$Companion.wrapList(FeedLoadService.kt:165) at org.schabi.newpipe.local.feed.service.FeedLoadService$databaseConsumer$1$1.run(FeedLoadService.kt:314) at androidx.room.RoomDatabase.runInTransaction(RoomDatabase.java:410) at org.schabi.newpipe.local.feed.service.FeedLoadService$databaseConsumer$1.accept(FeedLoadService.kt:303) at org.schabi.newpipe.local.feed.service.FeedLoadService$databaseConsumer$1.accept(FeedLoadService.kt:66) at io.reactivex.internal.operators.flowable.FlowableDoOnEach$DoOnEachSubscriber.onNext(FlowableDoOnEach.java:86) at io.reactivex.internal.operators.flowable.FlowableBuffer$PublisherBufferExactSubscriber.onComplete(FlowableBuffer.java:152) at io.reactivex.internal.operators.flowable.FlowableObserveOn$BaseObserveOnSubscriber.checkTerminated(FlowableObserveOn.java:215) at io.reactivex.internal.operators.flowable.FlowableObserveOn$ObserveOnSubscriber.runAsync(FlowableObserveOn.java:399) at io.reactivex.internal.operators.flowable.FlowableObserveOn$BaseObserveOnSubscriber.run(FlowableObserveOn.java:176) at io.reactivex.internal.schedulers.ScheduledRunnable.run(ScheduledRunnable.java:66) at io.reactivex.internal.schedulers.ScheduledRunnable.call(ScheduledRunnable.java:57) 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:762) Caused by: org.schabi.newpipe.extractor.exceptions.ParsingException: Could not get duration at org.schabi.newpipe.extractor.services.youtube.extractors.YoutubeStreamInfoItemExtractor.getDuration(YoutubeStreamInfoItemExtractor.java:117) at org.schabi.newpipe.extractor.stream.StreamInfoItemsCollector.extract(StreamInfoItemsCollector.java:54) at org.schabi.newpipe.extractor.stream.StreamInfoItemsCollector.commit(StreamInfoItemsCollector.java:94) at org.schabi.newpipe.extractor.services.youtube.extractors.YoutubeChannelExtractor.collectStreamsFrom(YoutubeChannelExtractor.java:289) at org.schabi.newpipe.extractor.services.youtube.extractors.YoutubeChannelExtractor.getInitialPage(YoutubeChannelExtractor.java:239) at org.schabi.newpipe.extractor.utils.ExtractorHelper.getItemsPageOrLogError(ExtractorHelper.java:19) at org.schabi.newpipe.extractor.channel.ChannelInfo.getInfo(ChannelInfo.java:83) at org.schabi.newpipe.extractor.channel.ChannelInfo.getInfo(ChannelInfo.java:48) at org.schabi.newpipe.util.ExtractorHelper.lambda$getChannelInfo$4(ExtractorHelper.java:124) at org.schabi.newpipe.util.-$$Lambda$ExtractorHelper$u5W7VszTe8AoEexIsFM9huQfbkM.call(lambda) at io.reactivex.internal.operators.single.SingleFromCallable.subscribeActual(SingleFromCallable.java:44) at io.reactivex.Single.subscribe(Single.java:3666) at io.reactivex.internal.operators.single.SingleDoOnSuccess.subscribeActual(SingleDoOnSuccess.java:35) at io.reactivex.Single.subscribe(Single.java:3666) at io.reactivex.Single.blockingGet(Single.java:2869) at org.schabi.newpipe.local.feed.service.FeedLoadService$startLoading$7.apply(FeedLoadService.kt:217) at org.schabi.newpipe.local.feed.service.FeedLoadService$startLoading$7.apply(FeedLoadService.kt:66) at io.reactivex.internal.operators.parallel.ParallelMap$ParallelMapSubscriber.onNext(ParallelMap.java:113) at io.reactivex.internal.operators.parallel.ParallelFilter$ParallelFilterSubscriber.tryOnNext(ParallelFilter.java:130) at io.reactivex.internal.operators.parallel.ParallelRunOn$RunOnConditionalSubscriber.run(ParallelRunOn.java:397) ... 7 more ```


RickyM7 commented 3 years ago

Backup import bug on NewPipe_v0.20.0RC2! Tested on: Xiomi Redmi Note 4(SD625 - Android 7.0 - Miui11)

The bug happens when importing a backup from v0.19.8 (and earlier versions too, I imagine). This bug causes the app to close when trying to watch a video, either in the foreground or background (this after importing the backup, as it works very well before). To fix this I had to delete the "newpipe.settings" file in the backup zip file.

avently commented 3 years ago

@MD77MD

I'm not sure if this is bug or by design this is a direct result of bug (1) above... but the "ask for confirmation before clearing queue" most be enabled another potential bug: while video is paused, enqueueing a another video will unintentionally cause the player to resume playback

4347

@Oizaro

and I think that background button should be removed

Not everyone has background playback enabled (it's not required), without going to background player you'll be unable to see playing queue after tap on notification, without manually going to background player you'll not be able to listen audio without video while browsing inside NewPipe. So, no, the button can't be removed

opusforlife2 commented 3 years ago

newPipe 0.20 Rc2 keeps crashing but don't now why?

@MD77MD Same issue as this https://github.com/TeamNewPipe/NewPipe/issues/4332#issuecomment-700191834.

opusforlife2 commented 3 years ago

another two potential bugs (a 2 in 1 😁):

Good find!

blackbox87 commented 3 years ago

Mhh... I have tried RC2, and I think that background button should be removed. For 2 reasons:

We're planning to remove "enqueue in the background" and "enqueue in a popup" and change it to just "enqueue", which acts as a temporary video queue that syncs between all of the players (within the app, in a popup or in the background). So the background and popup buttons will be required.

Here's where it was discussed and as you can see TobiGr, Stypox, opusforlife2 and myself would really like the change. One of us just needs to submit a PR for it.

XiangRongLin commented 3 years ago

@opusforlife2 Having options for both disabling the colored notification and the thumbnail on the lockscreen would be nice. I really dislike both features and would like to turn them both off.

opusforlife2 commented 3 years ago

Sure. Please open an issue for each.

jehutyy commented 3 years ago

I'm on a pixel 3a phone with android 11 and newpipe 0.20.0 installed.

When playing a video in background, swiping current playing notification get rid of it definitely resulting in being unable to stop, resume or skip video neither from notification tray nor from lockscreen.

opusforlife2 commented 3 years ago

@jehutyy This is a known issue, but it won't be fixed in this release.

jehutyy commented 3 years ago

ok my bad I thought this RC was about that. Thanks for the heads-up.