NewPipe 0.23.1 released: DASH to the finish line!

post image

Yeah yeah, we get it. You don’t need to scream yourself hoarse. This release is just as late as the previous one. But we have great news! Playing videos will now be smooth again!

Why we are so late again, you ask? It’s because every team member has several Dalmations to care for. In fact, as a whole, that makes a hundred of them. You can show your appreciation by sending trucks filled with dog treats our way. Don’t send any fur coats, though. The dogs seem to hate them for some reason.

The highlight of this release is DASH support! Well, more like support for stream delivery methods other than progressive HTTP. This is technical stuff, so you can look up the terms progressive HTTP, DASH, HLS, SmoothStreaming, and Torrents if you like. The point is, there were certain types of YouTube videos that were unplayable in NewPipe, and that’s not the case anymore! Moreover, you will likely notice that YouTube videos and audios load much faster for you. It’s all thanks to a DASH of magic.

(BTW: This ‘AudricV’ username you’ll see sprinkled below is just TiA4f8R in a different costume. We at NewPipe support all people’s freedoms to live life the way they want, no matter what username they identify with.)

(BTW2: opusforlife, you won’t change your name to DASHforlife, will you?)

New

  • After two years of work, delivery methods other than progressive HTTP are finally here! Enjoy faster loading times, more reliability, more supported video formats and many nasty player issues fixed! Don’t expect this to hold for the downloader, though, where support for delivery methods other than progressive HTTP is still unimplemented; help is needed there! A very huge thank you goes to the author, @AudricV, both for writing the code and for incorporating multiple requests for changes. Many other team members helped him achieve this goal, too. Here are the per-service improvements:
    • Now DASH is used as the preferred means for YouTube playback instead of progressive HTTP, improving loading times in playback and seeking. This has made the app faster by an order of magnitude! No more waiting after tapping on a YouTube video!
    • According to some users, repeated buffering while playing YouTube videos also seems to have become an issue of the past. :-) (Though we would like confirmation from a broader set of users regarding this.)
    • Recently ended YouTube livestreams are now fully playable, right from the beginning.
    • In YouTube, some more resolutions and formats are now available for playing.
    • Fixed seeking on PeerTube videos with only HLS streams (that is, most PeerTube videos). Now PeerTube is finally usable!
    • Fixed crash on PeerTube videos with an audio-only stream.
    • Fixed playback of SoundCloud HLS-only tracks.
  • Note: even though most of the above changes were made to NewPipeExtractor, a new NewPipeExtractor version will not be released along with this NewPipe version. This is because we want to completely refactor the code through which different delivery methods are provided; in its current state, it is a somewhat complicated structure to use, and resistant to future improvements. Interested users may keep track of the effort here.

  • @petlyh made it so that you can convert a remote playlist into a local NewPipe playlist! You can do this by opening a remote playlist, going to the 3-dot menu, and tapping “Add to playlist”. The benefit is that you can edit this local playlist to your heart’s content, whereas remote playlists have to be used as-is (remember, by “remote” we mean “coming from a service”, YouTube included). Thanks, petlyh!

  • @AudricV added an image preview for URLs shared from NewPipe in the Android Share Sheet. This neat feature is only supported on Android 10+.

Improved

  • @fynngodau realised that we weren’t extracting the stream duration for Bandcamp, leading to obvious bugs like showing “0:00” as the end time, and the track restarting when trying to seek to a timestamp. That’s been fixed, and the stream duration is also shown in list items now, where it was missing earlier.

  • @litetex improved the UI of the playback parameters dialogue so that you don’t need to scroll in it anymore! The entire thing neatly fits on most screen sizes (except maybe very small ones).

  • They also moved the Import/Export options in the Subscriptions tab to the 3-dot menu. This was done because user feedback showed that the current UI was very unintuitive. And while at it, they also did some accompanying UI adjustments to make it all look better.

Fixed

  • The extraction of YouTube Music was broken for IP addresses in the EU, because Google compulsorily shows a cookie consent page for users. This has been fixed by @AudricV by prepending a URL parameter to blanket-deny consent.

  • In previous versions, if device-wide animations were disabled, the keyboard would sometimes refuse to open when tapping on the search bar… apparently because of a bug in Android itself!? Anyway, thank you @litetex for investigating this bug, and @dtcxzyw for finally fixing it!

  • @seanzzy stealthily added a nullity check, fixing a rare crash when opening NewPipe from the player notification. Thanks!

  • The previous release contained an update to ExoPlayer (the library that NewPipe uses to play media), but unfortunately a regression sneaked in, preventing the player controls from hiding automatically when using a media button to play a stream. Thank @ktprograms for the timely restoration of this behaviour.

  • Counting views in the local history has been broken since, like, ever. Why on earth would playing a video once add two views? An attempt to fix this was initially made by @Mamadou78130, and the final working solution was provided by @Stypox. Thank you to both.

  • @litetex struck again, this time solving many theming and code issues related to the RouterActivity, that is, the menu that shows up when you share something to NewPipe. Now “Add to playlist” is usable again, and the buttons are not white-on-white anymore. :-D

  • @LingYinTianMeng fixed removing only fully watched videos from a playlist, which had been somewhat broken from the beginning. Thank you, LingYinTianMeng.

  • @GGAutomaton was lucky enough to grab the 8192nd (=2¹³th) issue/PR ever opened on NewPipe’s GitHub repository! Jokes aside, they fixed a recurring crash when rotating the device on unsupported channels.

  • @iTrooz made sure that, at the beginning of the player slide gesture that would change the playback volume, the starting value would always match the system’s. Thanks for taking care of our ears!

Localisation

  • Thanks to @Saurmandal, we now have a Hindi translation of the NewPipe README!

Nerd Talk

  • dependabot updates in NewPipeExtractor (the new version, the one we’re hiding under our coats):
    • Bump jsoup from 1.14.3 to 1.15.1
    • Bump spotbugs-annotations from 4.6.0 to 4.7.0
    • Bump… nothing more, but isn’t this list boring?
  • @litetex did some code cleanup of the TimeAgoParser, YoutubeStreamExtractor, Stream and Utils NewPipeExtractor classes.

  • @Stypox used Java 8 Streams in the Bandcamp extractor, which should improve error resilience, and fixed a bunch of Android Studio warnings in several files.

  • @AudricV removed the Checkstyle suppressions file, and instead added support for encapsulating rule-violating lines within CHECKSTYLE:OFF/ON comments. Easier to keep track of, this way.

  • @gliptak fixed a couple PeertubePlaylistExtractorTest unit tests. Thanks, gliptak!

  • @litetex moved some utility methods from the extractor to the app, where they fit better.

  • The following libraries were updated by @TacoTheDank in NewPipe: ACRA (twice), Groupie, Android Gradle Plugin and Kotlin. As he asserts on his GitHub profile, he is “obsessed with keeping stuff up-to-date”, so thank him for his longstanding effort!

  • @Nickoriginal updated the User-Agent used in NewPipeExtractor’s tests and most importantly in NewPipe. Now it matches the latest Firefox ESR 91 release. Thanks, Nickoriginal!

  • @litetex cleaned up some unused strings.xml resources which kept giving warnings when trying to build the app. Thanks.

  • @Isira-Seneviratne cleaned up some places in the NewPipe codebase… thanks to him, too!
    • Replaced a manual overload of a Kotlin function, with default parameters to be used by Java, with @JvmOverloads.
    • Removed some unnecessary compatibility (so-called compat) method calls…
    • …and added some more, coming from AppCompatResources, to simplify some code.

Where to get this brand-new version

NewPipe notifies you about new versions. You can download them when you press the notification, which will take you to the GitHub Releases page.

If you use the F-Droid app, it, too, notifies you about updates for NewPipe. Please keep in mind that it can take F-Droid a while to update their repository. If you have problems installing the update, you may need to uninstall NewPipe and then install it afresh. (Make sure to backup data by exporting your database from the Settings > Content menu.)

If you already installed NewPipe from F-Droid’s repository, to get this version of NewPipe you can do one of the following:

Note: If you installed NewPipe from GitHub Releases you will not have to uninstall NewPipe to switch to our custom repo. Just let it update your current version. Make sure you back up your data as mentioned in the warning at the top of the FAQ page!

Now that you’ve (hopefully) updated, please let us know what your experience of the latest release is, especially bugs in need of fixing. As usual, you can reach out to us via IRC (#newpipe on Libera.Chat), open issues on GitHub or, ideally, use our built-in crash reporter to send us machine-readable issue reports. You can even send in fixes yourself.

If you have any other questions, feel free to post them in the comments here and someone will reply to you. Also, thanks for reading it till the end! We put quite some time into these blog posts.

See also:  pinned  release

Let us know what you think!

Please read our rules before leaving a comment!

→ Feature requests or bug reports need to be reported on GitHub! ←