TeamNewPipe / NewPipe

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

Feature Request: Expose AV1 and allow download & playback #2849

Open ich0x opened 4 years ago

ich0x commented 4 years ago

I have personally tested AV1 playback on an old 2016 Samsung J3 running LOS 14.1 and was successful in finding and playing suitable 480p AV1 videos on youtube using youtube-dl & a dev version of VLC from artifacts.videolan.org/vlc-android/

I have also tested 720p AV1 on a newer 2018 model J4.

However NewPipe completely ignores this format. I would like to see this format added to NewPipe, incorporating dav1d decoding somehow into exoplayer

Redirion commented 4 years ago

ExoPlayer 2.11 will support AV1 through libgav1. But if I recall correctly NewPipe didn't want to include native code dependencies. So it might never get included.

cool-student commented 4 years ago

Android 10 includes an AV1 decoder. This means ExoPlayer already supports AV1 videos on devices running Android 10, but until now, there was no support for devices running older Android versions.

This is kinda cool so on Android 10(+) no extra libraries are needed.

Redirion commented 4 years ago

this also requires an Extractor change @Stypox

wb9688 commented 4 years ago

@fabiorug: No, ExoPlayer doesn't support that. It does have a libgav1 extension though, but we don't want to add native code to NewPipe. That means we won't support it as long as it isn't a built-in feature of Android. We could however add downloading of AV1 videos, if you could provide a link to any video on a service that's currently supported by NewPipe that is encoded by AV1.

MD77MD commented 4 years ago

This is kinda cool so on Android 10(+) no extra libraries are needed.

Is it true that in android 10+, AV1 is built-in.

wb9688 commented 4 years ago

@MD77MD: https://developer.android.com/guide/topics/media/media-formats#video-codecs doesn't mention anything about AV1 being supported by Android in any version, however https://developer.android.com/about/versions/10/highlights#new_audio_and_video_codecs says it has indeed been added in Android 10.

opusforlife2 commented 4 years ago

The first page does show AV1 in the table. Maybe it was updated in the meanwhile.

wb9688 commented 4 years ago

@opusforlife2: Yup, seems like they finally updated it. Anyway could someone link a YouTube video that has an AV1 stream (according to youtube-dl -F)?

opusforlife2 commented 4 years ago

Dude, Youtube has entire playlists to test AV1. Give me a second.

opusforlife2 commented 4 years ago

Yup. This one. https://www.youtube.com/playlist?list=PLyqf6gJt7KuHBmeVzZteZUlNUQAVLwrZS

ghost commented 3 years ago

lol i am in for this feature

opusforlife2 commented 3 years ago

Pffft. I am in for this feature as well.

ghost commented 3 years ago

+1

ghost commented 3 years ago

AV1 can be considered out of beta and adopted in popular videos on YouTube, any plans to support AV1 in Newpipe?

opusforlife2 commented 3 years ago

@D4v1dH03 See: https://github.com/TeamNewPipe/NewPipeExtractor/pull/706.

BTW, do you have a source for that? Was there a blog post or something?

ghost commented 3 years ago

@D4v1dH03 See: https://github.com/TeamNewPipe/NewPipeExtractor/pull/706.

BTW, do you have a source for that? Was there a blog post or something?

I tested a NCS music playlist with youtube-dl -F and discovered that they mostly have AV1 encoded formats available

One of the output shows this

399          mp4        1920x1080  1080p60 3991k , mp4_dash container, av01.0.09M.08@3991k, 60fps, video only, 102.29MiB

And yes I have a blog post It will most possibly be mandatory that Android TVs support AV1

https://www.digit.in/news/tvs/google-could-require-new-android-tv-devices-to-support-av1-encoding-what-is-av1-encoding-58052.html

opusforlife2 commented 3 years ago

Oh. I've seen that. I thought you meant Google officially declared AV1 out of beta on Youtube or something.

Though just the fact that it's now being used for popular videos means it's probably considered stable.

utack commented 3 years ago

At least the offical Youtube app does stream it when supported in hardware on phones, I guess they do consider it the superior format for that use case

opusforlife2 commented 3 years ago

@utack Have you seen that on Mediatek Dimensity phones? As far as I know, those are the only chips that support AV1 hardware decoding right now.

utack commented 3 years ago

@opusforlife2 I have seen it on my Galaxy S21, the european Exynos edition has a 4k60 capable AV1 decoder

And on my Samsung Tizen "The Frame" TV as well, but I am not sure if that app is considered offical

opusforlife2 commented 3 years ago

Ah. Exynos 2100 added AV1 decode support. Good to know.

ghost commented 2 years ago

Many phones don't have hw decoder unfortunately but at least they have sw decoder

BurhanBudak commented 2 years ago

Bump

Firefox Mobile uses software decoding and it loads faster then Newpipe, official app and the delisted Vanced.

Plugdemholes-Imeanpatchdembugs commented 2 years ago

I too would be interested, just because the higher pixel density of the tablets makes it easier to see some difference in the encoding result :P

opusforlife2 commented 1 year ago

@DavidH-Tech Don't quote specific team members unless you're being asked by them for feedback. Those who are supposed to respond will respond.

And don't make duplicate comments across issues and PRs. One place is enough.

Crystal-RainSlide commented 6 months ago

Note: Starting from 2023, mid-level phones and beyond should be mostly capable of decoding (at least) 720p AV1 video, both hw and sw decoding.

opusforlife2 commented 6 months ago

Not Qualcomm ones.

n-ce commented 5 months ago

My phone is entry level so I downloaded a video player to play an AV1 video file via software decoding, to my surprise it was running on hardware decoding. Later found out Android 14 supports it natively so I hope this will be taken seriously now for the compose refactor.

robzorua commented 5 months ago

There's no need to support VLC's libdav1d anymore because Google/YouTube will force it to Android even if you're using entry level, they will change their libgav1 to libdav1d.

https://www.androidauthority.com/android-update-av1-videos-3420418/

The only problem is why they put AV1 to MP4 not with WEBM/OPUS? WEBM/OPUS/AV1 will give better compression I hope they'll re-encode all their videos to WEBM/AV1.

n-ce commented 5 months ago

The only problem is why they put AV1 to MP4 not with WEBM/OPUS? WEBM/OPUS/AV1 will give better compression I hope they'll re-encode all their videos to WEBM/AV1.

MP4 / WEBM are just containers it doesn't matter much. VP9 didn't support the MP4 container format so I'm guessing they did this to generalize the AV1 codec among people. Btw I download AV1(+Opus) videos via yt-dlp all the time and they are all contained by WEBM.

Ciancy28 commented 5 months ago

VP9 didn't support the MP4 container format

Actually it did, and Google Photos as an example, uses vp9+aac in mp4 container when downloading videos that were uploaded in storage saver mode.

Btw I download AV1(+Opus) videos via yt-dlp all the time and they are all contained by WEBM.

That's because yt-dlp automatically remuxes stuff when it makes sense, since opus audio is already webm and av1 can be contained in webm, it decides to remux av1 in the same webm container, downloading a single av1 format without audio gives you av1 in mp4 container (as expected, since av01 is listed as mp4 when looking at the formats list) yt-dlp also remuxes in .mkv when downloading opus+h264, but of course youtube doesn't offer such format natively.

are just containers it doesn't matter much

this part is correct, there's a negligeable amount of overhead using mp4 instead of webm but it is only measurable on very short low quality videos (and even there, we are talking few kilobytes).

Plugdemholes-Imeanpatchdembugs commented 4 months ago

Since the end of 2022, half year after I posted, I finally got a graphics card with AV1 decoding capability, I also added enhanced-h264ify which has the option to disable h264, VP8, VP9 or AV1. I now have always VP8 and VP9 disabled, so I'm usually limited to max. 1080p for h264 but when a AV1 video plays you notice the difference instantly even though my standard playback resolution is only 1080p. But to my regret I have to say YT basicly only seems to encode videos that get uploaded with at least 1440p as AV1 and by my own observation I'd say I'm lucky when every 25th video I'm watching got encoded as AV1. So I currently don't see a trend that YT wants to increase AV1 encoded content to sub 1440p videos... maybe we are more lucky by the end of 2027.

n-ce commented 4 months ago

But to my regret I have to say YT basicly only seems to encode videos that get uploaded with at least 1440p as AV1.

That is not true YT now encodes a variety of videos in AV1, they just don't give it to all viewers. 4/5 videos nowadays are encoded in AV1. The rest of them either don't have enough views or is not satisfying an unknown metric that I don't understand yet. To test the 4/5 claim, just switch to 240p/144p.

Plugdemholes-Imeanpatchdembugs commented 4 months ago

Can only speak to what I've personally observed since end of 2022. Didn't expect 240p/144p is still in demand anyways. If I'm wrong all the better!