Giter VIP home page Giter VIP logo

Comments (126)

nielsvanvelzen avatar nielsvanvelzen commented on May 16, 2024 6

HDR support should work in the app after #244 is merged as exoplayer 2 supports it.

from jellyfin-androidtv.

sparky8251 avatar sparky8251 commented on May 16, 2024 4

Since HDR support requires backend changes in addition to major front end changes to work, it is an enhancement and not a bug.

HDR support isn't magicaly included without us having to put in effort. It's a deliberate feature addition since currently, almost none of the JF stack is HDR capable (with 10.4.0 we have put one of a few required backend changes for HDR into place).

Given that Emby appears to still be shipping ffmpeg 4.0.*, they arent HDR capable anywhere in the stack either.

from jellyfin-androidtv.

AndreasGB avatar AndreasGB commented on May 16, 2024 4

If this wont be solved then jellyfin will be a no go for many users. In plex (shield 2019) works perfect with exo player.

We are definitely aware that HDR compatibility is an issue, but solving this is a big undertaking (read: lots and lots of developer hours) and very likely will not make it into the 0.12 release.

In general, improving playback is very high up on our list of features we (or in this case @nielsvanvelzen) would like to work on though :)

from jellyfin-androidtv.

nielsvanvelzen avatar nielsvanvelzen commented on May 16, 2024 2

I spend about 2 hours debugging this issue and it needs quite a lot of changes to get it working properly.

Currently a lot of magic happens to determine support for various codecs. In the end most of it is hardcoded and doesn't really ask the OS if it supports everything. Next up, the logic is split and duplicated in multiple locations making it very hard to fix.

My conclusion in the end is that the whole ProfileHelper class needs to be rewritten to fix this issue.

I'll remove it from 0.11.1 but won't add it to 0.12.0 because I don't know if I or someone else wants to work on this.

from jellyfin-androidtv.

nextlooper42 avatar nextlooper42 commented on May 16, 2024 1

This is not enhancement, is a bug. Basically every 4k video has HDR and this makes those videos unwatchable, eg. washed out...

from jellyfin-androidtv.

yanakis71 avatar yanakis71 commented on May 16, 2024 1

I submitted this as a feature request, but would be great to have an option to pre-select (before playback) the audio stream and subtitle. Also would be great to have a "playback info" button/option (like in plex) to show stream info (direct play/trancoding, bitrate, codecs, resolution, etc) without the need of having open a browser and check active devices.

from jellyfin-androidtv.

stale avatar stale commented on May 16, 2024 1

This issue has gone 120 days without comment. To avoid abandoned issues, it will be closed in 21 days if there are no new comments.
If you're the original submitter of this issue, please comment confirming if this issue still affects you in the latest release or master branch, or close the issue if it has been fixed. If you're another user also affected by this bug, please comment confirming so. Either action will remove the stale label.
This bot exists to prevent issues from becoming stale and forgotten. Jellyfin is always moving forward, and bugs are often fixed as side effects of other changes. We therefore ask that bug report authors remain vigilant about their issues to ensure they are closed if fixed, or re-confirmed - perhaps with fresh logs or reproduction examples - regularly. If you have any questions you can reach us on Matrix or Social Media.

from jellyfin-androidtv.

ryantiger658 avatar ryantiger658 commented on May 16, 2024 1

@ggogel, I was able to work around this in my own setup by turning off transcoding in the user settings. This seems to avoid the codec detection for me.

from jellyfin-androidtv.

ggogel avatar ggogel commented on May 16, 2024 1

Just for reference the issue I opened #128

With Exoplayer I still get no HDR. With libvlc I get HDR now but no DD pass-through.

When I disable "allow video playback that requires transcoding" for my user as @ryantiger658 suggested, both HDR and DD pass-through work with Exoplayer. So the app definetly reads out supported codecs / formats incorrectly or not at all.

from jellyfin-androidtv.

thornbill avatar thornbill commented on May 16, 2024 1

@ggogel good callout there. It looks like hevc should be supported on any device the app supports, so I opened a PR to enable it everywhere. A lot of the playback code doesn't make sense to anyone. We plan to refactor it for 0.13 hopefully.

from jellyfin-androidtv.

nextlooper42 avatar nextlooper42 commented on May 16, 2024

I get that. Just saying that JF should be developed with HDR and possible future "enhancements" in mind, that includes newer/current ffmpeg (nightly is now running on 4.0.2, which is quite old) to support features that matter in that time, not to be stuck in past.

Stop thinking about Emby (i hate that name), JF should be better than that :D

from jellyfin-androidtv.

anthonylavado avatar anthonylavado commented on May 16, 2024

@nextlooper42 The good news is - we've updated our core server code to use either 4.0.x or 4.1, and work is ongoing for 4.2. We are thinking about it - it's just a matter of time.

from jellyfin-androidtv.

sparky8251 avatar sparky8251 commented on May 16, 2024

If I'm not mistaken, the nightly docker uses ffmpeg 4.2. But yeah, we have started with HDR support at ffmpeg (the absolute bottom of the stack).

If I'm not mistaken, @vitorsemeano has been working on HDR playback support (by moving to exoplayer) in web and/or android, but it's not going to land in 10.4.z since it still needs work.

We are getting there, slowly but surely. It's just a LOT of work to add in HDR support :)

from jellyfin-androidtv.

viggy96 avatar viggy96 commented on May 16, 2024

Just wanted to check in here since Jellyfin uses ffmpeg 4.2.1 now. Hopefully this comment will stop more people from asking constantly.

from jellyfin-androidtv.

viggy96 avatar viggy96 commented on May 16, 2024

I built and installed the Android TV app yesterday, and while it plays HDR content, it does not properly display the HDR colours. This is most likely due to the server detecting that the video codec is not compatible, and the server is transcoding the file, when its not necessary. The file in question is HEVC, Main 10 profile, yuv420p10le pixel format.

from jellyfin-androidtv.

cschlesselmann avatar cschlesselmann commented on May 16, 2024

I have the same problem as @viggy96
Files are transcoded when they should be able to be direct played.

from jellyfin-androidtv.

viggy96 avatar viggy96 commented on May 16, 2024

Is this another bug? Media being transcoded when it shouldn't be?

from jellyfin-androidtv.

anthonylavado avatar anthonylavado commented on May 16, 2024

@nielsvanvelzen @thornbill
I don’t know how you’d like to organize this one. I’ve stuck it in 0.11.1 for now, but move if needed.

from jellyfin-androidtv.

brianclinkenbeard avatar brianclinkenbeard commented on May 16, 2024

Is ExoPlayer capable of tonemapping HDR for SDR displays? Could AndroidTV profiles default to HDR support and then allow ExoPlayer to tonemap the video?

from jellyfin-androidtv.

Artiume avatar Artiume commented on May 16, 2024

@nielsvanvelzen can you catch me up on what you've found? I can start digging on the backend to figure out what needs to be done

from jellyfin-androidtv.

nielsvanvelzen avatar nielsvanvelzen commented on May 16, 2024

@Artiume it's been a few days but basically while testing no matter what I did (even when changing the profiles to allow everything to direct play) the server would transcode. It used different reasons like codecs not supported etc. (I suspect these come from the app side).
When transcoding though, even when HDR profiles are specified it would always convert video to SDR. (yuv444 to yuv420)

I tested it on my Philips TV that has HDR support.

from jellyfin-androidtv.

Artiume avatar Artiume commented on May 16, 2024

IIRC, the video Transcoder is currently hard coded to force ffmpeg to do 8bit. Ffmpeg's default is to maintain the original bitrate. My thought is that maybe the original dev's couldn't get the builder to build correctly with a dynamic bitrate coming from ffmpeg.

Here's where I breakdown the state builder, I haven't flushed out the ffmpeg flags yet though
jellyfin-archive/jellyfin-docs#202 (comment)

Is that what happens when you disable the user from allowing to transcode or you mess with the client profile?

Here's the transcode and streaming logic
jellyfin-archive/jellyfin-docs#202 (comment)

from jellyfin-androidtv.

nielsvanvelzen avatar nielsvanvelzen commented on May 16, 2024

IIRC, the video Transcoder is currently hard coded to force ffmpeg to do 8bit.

So we need a backend update to get HDR working when transcoding?

Is that what happens when you disable the user from allowing to transcode or you mess with the client profile?

I changed the client code to allow the codecs used in my HDR test file.

from jellyfin-androidtv.

Artiume avatar Artiume commented on May 16, 2024

So we need a backend update to get HDR working when transcoding?

Yes, hdr transcoding is the holy grail. For now, direct play is the goal.

I changed the client code to allow the codecs used in my HDR test file.

Disable the permissions to transcode/remux and see what you get (ensure it direct plays, check to make sure no ffmpeg logs are generated). If you get a black screen, either there's libs missing in AndroidTV or the TV doesn't support the file.

Here's a good read for tone mapping control with ffmpeg.
https://web.archive.org/web/20190722004804/https://stevens.li/guides/video/converting-hdr-to-sdr-with-ffmpeg/

from jellyfin-androidtv.

yanakis71 avatar yanakis71 commented on May 16, 2024

I spend about 2 hours debugging this issue and it needs quite a lot of changes to get it working properly.

Currently a lot of magic happens to determine support for various codecs. In the end most of it is hardcoded and doesn't really ask the OS if it supports everything. Next up, the logic is split and duplicated in multiple locations making it very hard to fix.

My conclusion in the end is that the whole ProfileHelper class needs to be rewritten to fix this issue.

I'll remove it from 0.11.1 but won't add it to 0.12.0 because I don't know if I or someone else wants to work on this.

If this wont be solved then jellyfin will be a no go for many users. In plex (shield 2019) works perfect with exo player.

I tried both libvlc and exoplayer, and hdr files (mkv h265, 4k) are played correctly only if you dont use switch refresh rate. If you use refresh rate switch, they switch from 4k to 720p but with correct hdr color space (hdr mode activated on tv). I think there is hope to make this work

from jellyfin-androidtv.

yanakis71 avatar yanakis71 commented on May 16, 2024

@Artiume it's been a few days but basically while testing no matter what I did (even when changing the profiles to allow everything to direct play) the server would transcode. It used different reasons like codecs not supported etc. (I suspect these come from the app side).
When transcoding though, even when HDR profiles are specified it would always convert video to SDR. (yuv444 to yuv420)

I tested it on my Philips TV that has HDR support.

On shield pro 2019 mkv hdr 4k is working with direct play using libvlc, video stream is displayed correctly at 60hz. Refresh rate option makes it switch to 720p, but still with correct colors. So, it is partially working. I am willing to further test, just send some other scenarios. Regards

from jellyfin-androidtv.

Artiume avatar Artiume commented on May 16, 2024

AFAIK, modifying the profiles probably won't get you anywhere as of now until we make backend cognizant of hdr. Disabling backend from transcoding is what I wanted to verify that if the profiles were correct, the client would handle hdr. For your Philips TV, what client was used? Glad to see hdr was working on your shield.

from jellyfin-androidtv.

yanakis71 avatar yanakis71 commented on May 16, 2024

AFAIK, modifying the profiles probably won't get you anywhere as of now until we make backend cognizant of hdr. Disabling backend from transcoding is what I wanted to verify that if the profiles were correct, the client would handle hdr. For your Philips TV, what client was used? Glad to see hdr was working on your shield.

I forgot to mention that I also disabled transcoding.Thanks.

from jellyfin-androidtv.

Artiume avatar Artiume commented on May 16, 2024

Another issue for us as devs is hardware. I don't know if anyone even has hdr capability so a lot of us work off theory to add support

from jellyfin-androidtv.

yanakis71 avatar yanakis71 commented on May 16, 2024

I greatly respect and appreciate your work, I suppose it takes a lot of hours put in but just keep in mind we do live in hdr era, bluray rips, etc. So keep this feature close to your priorities. It does work to some extent, but it also can be perfect :). Keep up the good work guys, excelent job! If you want me to help you with hdr testing, let me know. I have a shield tv pro 2019, a Sony Android TV, oneplus 7 phone, unraid nas, omv nas, windows 10 machine.

Kind regards

from jellyfin-androidtv.

cschlesselmann avatar cschlesselmann commented on May 16, 2024

I would also be happy to help testing. I have a Shield TV 2019 and a LG C9 OLED TV.
Currently i work around this issue by creating a samba share of my media and directly watching HDR content through the vlc app over smb.

from jellyfin-androidtv.

yanakis71 avatar yanakis71 commented on May 16, 2024

I would also be happy to help testing. I have a Shield TV 2019 and a LG C9 OLED TV.
Currently i work around this issue by creating a samba share of my media and directly watching HDR content through the vlc app over smb.

You can use the Android client with libvlc player but make sure you disable transcoding on the server side

from jellyfin-androidtv.

cschlesselmann avatar cschlesselmann commented on May 16, 2024

@yanakis71 I know, but i need transcoding enabled when im not watching something on the tv. Or is there an option to disable transcoding for specific clients/ips?

from jellyfin-androidtv.

yanakis71 avatar yanakis71 commented on May 16, 2024

Not sure, I will test with transcoding also but with libvlc.

from jellyfin-androidtv.

AndreasGB avatar AndreasGB commented on May 16, 2024

Thanks for the offers of helping to test things, we will gladly come back to you on it when it is time :)

from jellyfin-androidtv.

viggy96 avatar viggy96 commented on May 16, 2024

I've confirmed that disabling transcoding on the server indeed allows for HDR playback to occur properly on my Sony Bravia TV. However, it also shows the same issue as VLC does, in that in some HDR content, the bars around the content which should be black are actually gray. I believe the fix for this that I saw on the VLC gitlab was to change the background color of the player from black to transparent. Maybe the transcoding issue can be moved to another issue, and this issue can be kept to HDR specific problems?

from jellyfin-androidtv.

viggy96 avatar viggy96 commented on May 16, 2024

I've also noticed that libVLC does not seek properly through video, but Exoplayer does not have this problem. The gray bars problem exist on both however.

from jellyfin-androidtv.

yanakis71 avatar yanakis71 commented on May 16, 2024

I've confirmed that disabling transcoding on the server indeed allows for HDR playback to occur properly on my Sony Bravia TV. However, it also shows the same issue as VLC does, in that in some HDR content, the bars around the content which should be black are actually gray. I believe the fix for this that I saw on the VLC gitlab was to change the background color of the player from black to transparent. Maybe the transcoding issue can be moved to another issue, and this issue can be kept to HDR specific problems?

Hi. Did you try to use the "refresh rate option" available in player settings?

from jellyfin-androidtv.

viggy96 avatar viggy96 commented on May 16, 2024

@yanakis71 Yup, with both the "refresh rate switching" on and off, the grey bars persist around HDR content.

from jellyfin-androidtv.

yanakis71 avatar yanakis71 commented on May 16, 2024

@yanakis71 Yup, with both the "refresh rate switching" on and off, the grey bars persist around HDR content.

For me, the refresh rate switches 4k to 720p

from jellyfin-androidtv.

Artiume avatar Artiume commented on May 16, 2024

Could you post your TV model numbers and the codec type you're testing on since there's many versions of HDR

from jellyfin-androidtv.

viggy96 avatar viggy96 commented on May 16, 2024

TV model: Sony Bravia X900F
The first screenshot is of HDR content that displays grey bars when played.
The second does not does not display grey bars, but it is also HDR.

Screenshot from 2020-02-26 21-24-17
Screenshot from 2020-02-26 21-25-00

from jellyfin-androidtv.

yanakis71 avatar yanakis71 commented on May 16, 2024

TV model: Sony Bravia X900F
The first screenshot is of HDR content that displays grey bars when played.
The second does not does not display grey bars, but it is also HDR.

Screenshot from 2020-02-26 21-24-17
Screenshot from 2020-02-26 21-25-00

What client is this?

from jellyfin-androidtv.

viggy96 avatar viggy96 commented on May 16, 2024

@yanakis71 This is the MPV shim client. Figured it would provide the most codec information.

from jellyfin-androidtv.

Artiume avatar Artiume commented on May 16, 2024

Actually, if you don't mind helping. Can you run ffmpeg -i video.mp4 against the HDR content? I'd like to get more details on HDR10, HDR10+ and DV codecs.

If you'd like to learn more, I can break down everything to show you guys how the stream engine works. You'd be able to tweak it as needed to get ffmpeg to properly transcode the files. The codec details you provide can help us know how to fix the clients.

Here's a couple notes I have for getting compatibility
https://github.com/Artiume/jellyfin-docs/blob/master/general/wiki/ffmpeg.md

Here's the stream engine notes
jellyfin-archive/jellyfin-docs#202

Happy bug huntin' 🎉

from jellyfin-androidtv.

viggy96 avatar viggy96 commented on May 16, 2024

@Artiume Here's the output. Alita has grey bars, The Witcher does not.

Alita.txt
Witcher_S01E01.txt

from jellyfin-androidtv.

Artiume avatar Artiume commented on May 16, 2024

@viggy96 thanks. Are they transcoding/remuxing or Direct Playing? If they're transcoding at all, can I get those ffmpeg logs

from jellyfin-androidtv.

viggy96 avatar viggy96 commented on May 16, 2024

@Artiume I mean they only display HDR colours properly when they are NOT transcoded, as mentioned earlier in the issue. So currently I've disabled transcoding on the server side for my user.

from jellyfin-androidtv.

Artiume avatar Artiume commented on May 16, 2024

Ok, I just wanted to make sure. If the file is direct played and Alita has the Grey bar issues, that issue would be with the player and not ffmpeg. So I didn't want to go down the wrong rabbit hole.

from jellyfin-androidtv.

viggy96 avatar viggy96 commented on May 16, 2024

Yup no problem.

from jellyfin-androidtv.

Artiume avatar Artiume commented on May 16, 2024

For now, I think the best workaround without having to constantly enable/disable transcoding on your user account is to make a secondary 4k user account and disable transcoding on that profile. IIRC, the next android tv update will allow for better user switching.

However, it also shows the same issue as VLC does, in that in some HDR content, the bars around the content which should be black are actually gray. I believe the fix for this that I saw on the VLC gitlab was to change the background color of the player from black to transparent.

@nielsvanvelzen From the sounds of it, this is an upstream issue, you have any ideas about it?
Alita's video codec that has the gray bars. From the codec side of things, the only thing I notice is the anamorphic ratio, but the player should be handling it correctly?
Stream #0:0: Video: hevc (Main 10), yuv420p10le(tv, bt2020nc/bt2020/smpte2084), 3840x1608 [SAR 1:1 DAR 160:67], 23.98 fps, 23.98 tbr, 1k tbn, 23.98 tbc (default)

Witcher was normal
Stream #0:0(eng): Video: hevc (Main 10), yuv420p10le(tv, bt2020nc/bt2020/smpte2084), 1920x1080 [SAR 1:1 DAR 16:9], 24 fps, 24 tbr, 1k tbn, 24 tbc (default)

from jellyfin-androidtv.

viggy96 avatar viggy96 commented on May 16, 2024

@Artiume @nielsvanvelzen Here is another example of content that exhibits grey bars:
MiB_International.txt

from jellyfin-androidtv.

Artiume avatar Artiume commented on May 16, 2024

Same deal with the DAR. So the witcher was in 1080p, can you find a 4k res hdr file that has a normal aspect ratio and see how it plays?

from jellyfin-androidtv.

viggy96 avatar viggy96 commented on May 16, 2024

@Artiume Here's a 16:9 4K HEVC HDR example. Of course, since the content itself fits the display perfectly, there aren't any bars at all, so the issue isn't present.
GitS_2017.txt

from jellyfin-androidtv.

Artiume avatar Artiume commented on May 16, 2024

I'm kinda jealous in your ability to watch that in 4k HDR >.>

You sure that's a 16:9 ratio? The DAR is 1920:959, that ratio comes out to .499 (2.00:1) while 16:9 ratio is .5625 (1.77:1)

from jellyfin-androidtv.

viggy96 avatar viggy96 commented on May 16, 2024

I mean that's what Jellyfin reports in the browser. Also, pretty sure my TV is 16:9 and it fits it perfectly without any bars. Or at least, if there are any bars, they're so small I can't see them, lol.
image

from jellyfin-androidtv.

viggy96 avatar viggy96 commented on May 16, 2024

The original Ghost in the Shell (1995) also exhibits grey bars above and below the content. It also has another issue of not displaying the subtitles even though I have selected them in the player.
GitS_1995.txt

from jellyfin-androidtv.

Artiume avatar Artiume commented on May 16, 2024

🤔... 😣... 🤔

So this is a wild guess. The movie was originally shot in 1.85:1 ratio which just added to my confusion, but I think I know what's going on. That you should have the normal wide-screen black bars on your TV. Better yet, they're GRAY right now 😉. I think that's the issue. I think there's a filter being applied wrong or something.

@nielsvanvelzen how does that sound to you? I'm not sure if this is an artifact of how HDR does black, or if the codec is applying a transparent color thus anything that could be behind it is being shown through. It could also be that the player is supposed to fill in the missing video gaps and isn't doing it correctly.

I'm not sure why it's reporting 16:9 though, I wonder if that could be the issue as well.

https://forum.videohelp.com/threads/308552-Resolution-vs-Aspect-Ratio

https://www.lifewire.com/black-bars-on-lcd-plasma-oled-1847838

https://ultrahd.highdefdigest.com/45755/ghostintheshell2017ultrahdbluray.html

from jellyfin-androidtv.

Artiume avatar Artiume commented on May 16, 2024

For gits 1995, I think we're having sub issues, you'd have to check our tickets for it. What ratio does this report?

from jellyfin-androidtv.

viggy96 avatar viggy96 commented on May 16, 2024

@Artiume @nielsvanvelzen Here's the VLC Android TV Gitlab issue related to this 'grey bar' behavior: https://code.videolan.org/videolan/vlc-android/issues/943

from jellyfin-androidtv.

Artiume avatar Artiume commented on May 16, 2024

Odd, the link isn't working for me right now. Do they have the same kind of TV? And you're having this issue with every app, not just libvlc right?

from jellyfin-androidtv.

viggy96 avatar viggy96 commented on May 16, 2024

@Artiume lol, I'm the one who submitted the issue originally, but it has been reported on other Sony models as well, such as the Bravia X90G, and Bravia 8AG. Yes, this occurs with any third party video app. Sony appears to have a quirk with its HDR implementation that causes the black canvas of the video player to render as grey instead of the intended pitch black. In that link it was said that the MrMC app worked around this by changing the background of the player to transparent instead of black. Here are the internal links:
CiNcH83/bravia_atv2#44
MrMC/mrmc@e686c40
https://community.sony.co.uk/t5/android-tv/amazon-prime-4k-hdr-grey-letterbox/td-p/2278204/page/4

from jellyfin-androidtv.

Artiume avatar Artiume commented on May 16, 2024

Thanks :) they're really helpful. The PR looks simple enough, just need to run some tests to make sure it doesn't cause any issues

from jellyfin-androidtv.

nielsvanvelzen avatar nielsvanvelzen commented on May 16, 2024

@viggy96 are you able to build and test this PR: #369

It might fix the grey bar issue but as I don't have a Sony television I can't test it.

from jellyfin-androidtv.

yanakis71 avatar yanakis71 commented on May 16, 2024

Could you post your TV model numbers and the codec type you're testing on since there's many versions of HDR

So, more testing, transcoding disabled. Sony 900e, nvidia shield tv pro 2019.
alita.txt
Alita, 4k HDR, true HD 7.1 (ffmpeg info attached)

  1. Player selection auto, no refresh rate switch --> direct play, TV HDR mode ON, resolution stays at 4k,
  2. Player selection auto, refresh rate switch on ---> direct play, TV HDR mode ON, resolution is set to 720p/24hz, plays few second then player crashes
  3. player selection EXO, refresh rate ON ---> direct play, TV HDR mode ON, resolution is set to 720p, no crash
  4. Player selection libvlc, refresh rate ON ---> direct play, TV HDR mode ON, resolution is set to 720p, crash after few seconds
  5. Player selection EXO, refresh rate OFF---> direct play, TV HDR mode ON, resolution stays at 4k (60hz I guess) , no crash
  6. Player selection libvlc, refresh rate OFF---> direct play, TV HDR mode ON, resolution stays at 4k (60hz I guess) , no crash

In any of above cases no grey bars displayed.
I guess there is a problem with the switcher not detecting the stream native resolution

however, disabling transcoding is just a workaround, it needs to properly detect player capabilities and direct play/transcode as needed.

I will get back with Sony 900E testing,

Thanks

from jellyfin-androidtv.

Artiume avatar Artiume commented on May 16, 2024

I thought of a better patch in the meantime until proper client detection is made. I'll add a toggle option to force direct play hdr content. Do you know if your TV supports hdr10+ and DV? And do you have any content with their types that you could run ffmpeg against?

from jellyfin-androidtv.

yanakis71 avatar yanakis71 commented on May 16, 2024

Sony 900E does not support HDR10+ or DV. I could get some DV content but no TV to play on.

Sony 900E testing: HDR10 direct play (Alita) works fine, no black bars with both players, refresh rate ON/OFF does not matter. EXO player seems to be a little bit smoother than libvlc

Edit: resume playback to last position does not work in EXO player. Also fast forward

from jellyfin-androidtv.

Artiume avatar Artiume commented on May 16, 2024

Ok, I might add three toggles then. One for each codec profile, that way end users can select it themselves. AFAIK, our only hdr capable players are vlc and exoplayer.

from jellyfin-androidtv.

Artiume avatar Artiume commented on May 16, 2024

My option will be a profile option, I'm not a coder by trade so I do what I can 😊. I believe the codec details are in the works for Android TV.

from jellyfin-androidtv.

yanakis71 avatar yanakis71 commented on May 16, 2024

yeah, I get it :). Activating back transcoding force it while previously direct play worked fine.

from jellyfin-androidtv.

Artiume avatar Artiume commented on May 16, 2024

Can you give any ffmpeg logs for the failed playback attempts?

from jellyfin-androidtv.

yanakis71 avatar yanakis71 commented on May 16, 2024

for the one that get transcoded instead of direct play?

another note: PGS subtitles does not load while direct play HDR 10 files with EXO player on Shield and Sony 900e.

from jellyfin-androidtv.

viggy96 avatar viggy96 commented on May 16, 2024

@nielsvanvelzen That build does not solve the grey bar issue.

from jellyfin-androidtv.

Artiume avatar Artiume commented on May 16, 2024

For failed playback attempts that occur when transcoding, I'd like those ffmpeg logs.

For the sub issues, submit your details here, client and codec information should be sufficient.
jellyfin/jellyfin#2435

from jellyfin-androidtv.

viggy96 avatar viggy96 commented on May 16, 2024

@Artiume @nielsvanvelzen has fixed the Sony Bravia grey bar issue. Also I noticed that the subtitle issue I had mentioned earlier is not a problem in the latest debug build of Jellyfin. So the pieces are all in place for good HDR support, the ProfileHelper needs to be redone so that users don't have to turn off transcoding.

from jellyfin-androidtv.

Artiume avatar Artiume commented on May 16, 2024

Can you provide the profile name that your tv uses as a client. If it's not generic, I'll see if I can make something now

from jellyfin-androidtv.

viggy96 avatar viggy96 commented on May 16, 2024

Profile name?

from jellyfin-androidtv.

Artiume avatar Artiume commented on May 16, 2024

@nielsvanvelzen what options would be available to have the client parse the TV Model back to the client and backend?

It might be because I don't have a smart tv, but I couldn't find anything in the backend so I think we have to work on the client first. For now, I think the solution will be to have toggles to enable HDR. It will be a bit of a hack and if you attempt watching HDR on your browser, it'll direct play so it'll break other clients while fixing a few when playing hdr content 🤕

The Profile came back as Android-VLC, but nothing else was present. We did get back a DeviceId=681051264304da39 so perhaps we could whitelist specific devices. @JustAMan or @EraYaN might have an idea on that one.

[2020-03-01 23:56:24.520 +00:00] [INF] User policy for "artiume". EnablePlaybackRemuxing: True EnableVideoPlaybackTranscoding: True EnableAudioPlaybackTranscoding: True
[2020-03-01 23:56:24.521 +00:00] [INF] Profile: "Android-VLC", Path: "/media/anime/Slayers/Season 3/Slayers - S03E03 - Where'd That Arrogant Guy Go HDTV-1080p.mkv", isEligibleForDirectPlay: True, isEligibleForDirectStream: True
[2020-03-01 23:56:24.521 +00:00] [INF] RemoteClientBitrateLimit: 1000000, RemoteIp: "192.168.1.41", IsInLocalNetwork: True
[2020-03-01 23:56:24.772 +00:00] [INF] Profile: "Android-Exo", No direct play profiles found for Path: "/media/anime/Slayers/Season 3/Slayers - S03E03 - Where'd That Arrogant Guy Go HDTV-1080p.mkv"
[2020-03-01 23:56:27.692 +00:00] [WRN] HTTP Response 206 to "192.168.1.41". Time (slow): 0:00:01.6058216. "http://192.168.1.100:8096/Videos/da581b2127e45ab06740e6282c6b8758/stream.mkv?DeviceId=681051264304da39&MediaSourceId=da581b2127e45ab06740e6282c6b8758&Static=true&Tag=2c12d9d2c2503e7472a2205075351f82"
[2020-03-01 23:56:36.435 +00:00] [INF] Playback stopped reported by app "AndroidTV" "0.11.1" playing "Where'd That Arrogant Guy Go?". Stopped at "682792" ms
[2020-03-01 23:56:37.245 +00:00] [WRN] HTTP Response 204 to "192.168.1.41". Time (slow): 0:00:00.8720379. "http://192.168.1.100:8096/Sessions/Playing/Stopped"

from jellyfin-androidtv.

JustAMan avatar JustAMan commented on May 16, 2024

The whole logic behind selecting when to transcode and when not needs to be raised to the ground and rebuilt to start making sense.
Right now it's a pile of workarounds IMHO.

I don't think it's going to happen soon, though, as no one volunteered in cleaning it up yet. :(

from jellyfin-androidtv.

nielsvanvelzen avatar nielsvanvelzen commented on May 16, 2024

All profiles are defined in the ProfileHelper.java file. It's one big mess though.

The profile names used are:

  • Android-External
  • Android-VLC
  • Android-Exo

from jellyfin-androidtv.

JustAMan avatar JustAMan commented on May 16, 2024

Oh, I was referring to server-side part. I have no clue about AndroidTV side of things on that matter :)

from jellyfin-androidtv.

yanakis71 avatar yanakis71 commented on May 16, 2024

Hi. In Android standard we have this option to select audio stream and subtitle prior to playing a file. Can you add to the Andoid TV app?

Screenshot_20200501-162324

What about that "toggle" to activate/deactivate transcoding?

Thanks

from jellyfin-androidtv.

viggy96 avatar viggy96 commented on May 16, 2024

Just keeping this issue open.

from jellyfin-androidtv.

ggogel avatar ggogel commented on May 16, 2024

I got a 65PUS8505 from Philips here and HDR content is getting transcoded both with exo and libvlc. Non HDR hevc content direct plays. Disabling refresh rate switching doesn't help.

from jellyfin-androidtv.

viggy96 avatar viggy96 commented on May 16, 2024

@ggogel This is a known issue. The app currently doesn't detect what codecs the TV supports, rather the codecs that "require transcoding" are hardcoded into the app. This will change in the future.

from jellyfin-androidtv.

Hukuma1 avatar Hukuma1 commented on May 16, 2024

+1. I also have no audio in playing using exo. If I switch to libvlc the audio works, but will stutter and try to transcode same as exo (minus no audio).

Running same files in Kodi 19 beta works just fine. Didn’t try 18.9.

Hope to use Jellyfin for the 4K HDR films in future though.

from jellyfin-androidtv.

Artiume avatar Artiume commented on May 16, 2024

10.7 will have support for HDR which should help with this issue, i dont have hdr hardware so I cant test it

from jellyfin-androidtv.

ggogel avatar ggogel commented on May 16, 2024

@Artiume I'm already running 10.7 RC2 and it did not help. This is a client issue of reporting back supported codecs incorrectly.

from jellyfin-androidtv.

Artiume avatar Artiume commented on May 16, 2024

does the mediainfo for the file show the proper metadata for HDR? I'll check out exoplayer to see whats up

from jellyfin-androidtv.

ggogel avatar ggogel commented on May 16, 2024

Yes obviously, as I get HDR if I force disable transcoding or in the Emby app. Furthermore it works with kodi. This is not only one file but all HDR content I tried so far has this exact issue.

from jellyfin-androidtv.

ggogel avatar ggogel commented on May 16, 2024

I guess this is causing the issue

if (DeviceUtils.isShield() || DeviceUtils.isNexus() || DeviceUtils.isBeyondTv()) {
videoCodecs = Arrays.asList(
CodecTypes.H264,
CodecTypes.HEVC,
CodecTypes.VP8,
CodecTypes.VP9,
ContainerTypes.MPEG,
CodecTypes.MPEG2VIDEO
);
} else {
videoCodecs = Arrays.asList(
CodecTypes.H264,
CodecTypes.VP8,
CodecTypes.VP9,
ContainerTypes.MPEG,
CodecTypes.MPEG2VIDEO
);
}

If it's not a shield, nexus or beyond tv it's simply disabling hevc in the directPlayProfiles when using exoplayer.

I don't get why those are set in the setExoOptions but not in the setVlcOptions method.

videoDirectPlayProfile.setVideoCodec(Utils.join(",", videoCodecs));

Later it is actually checking for hevc support but only for the CodecProfiles and not the DirectPlayProfiles

profile.setCodecProfiles(new CodecProfile[] { videoCodecProfile, refFramesProfile, refFramesProfile2, getHevcProfile(), videoAudioCodecProfile });

This code doesn't make any sense to me...

from jellyfin-androidtv.

ggogel avatar ggogel commented on May 16, 2024

@thornbill Thanks! Looking forward to test it. Is there a repo I can pull a nightly / dev build from?

from jellyfin-androidtv.

nielsvanvelzen avatar nielsvanvelzen commented on May 16, 2024

You can download the latest build from Azure and sideload it to your device. This one includes the HEVC change:
https://dev.azure.com/jellyfin-project/jellyfin/_build/results?buildId=22263&view=artifacts&pathAsName=false&type=publishedArtifacts

from jellyfin-androidtv.

Hukuma1 avatar Hukuma1 commented on May 16, 2024

Tried to sideload it on my Shield but it errors out on install. Is this a 64-but APK above in artifact? Trying to install on my tube Shield (32-bit).

from jellyfin-androidtv.

nielsvanvelzen avatar nielsvanvelzen commented on May 16, 2024

You need to use the .apk file that has "_debug" in the name. That one should just work, there is no architecture requirements.

from jellyfin-androidtv.

Hukuma1 avatar Hukuma1 commented on May 16, 2024

Thank you, that worked and was able to install it. However it’s giving me a

VolleyError com.android.volley.NoConnectionError:

Connecting via IP:8096. Working on other devices and server running 10.7 RC2.

from jellyfin-androidtv.

nielsvanvelzen avatar nielsvanvelzen commented on May 16, 2024

A NoConnectionError means that you're not connected to the internet of the server is inaccessible. This can also happen when you misspell the server address. Try prepending the "http://" part.

from jellyfin-androidtv.

Hukuma1 avatar Hukuma1 commented on May 16, 2024

Tried http/https to no avail. Re-installed Jellyfin from the Play Store and it works on that version. So it's something that's in the newer build possibly?

There is a reverse proxy setup on the same IP/machine, but I figure since it works just fine with the regular Jellyfin in the Play Store, then it shouldn't be interfering?

from jellyfin-androidtv.

ggogel avatar ggogel commented on May 16, 2024

I've installed this version now:
https://dev.azure.com/jellyfin-project/jellyfin/_build/results?buildId=22537&view=artifacts&pathAsName=false&type=publishedArtifacts
This version transcodes absolutely everything. Even low bitrate h264 content is transcoded. I've set the max bitrate to 120 MB/s. Didn't help either. Only when I disable "allow video playback that requires transcoding" again, it plays without transcoding. So the situation went from bad to worse...

I don't if it's just the debug version but it crashes like every three minutes.

from jellyfin-androidtv.

cschlesselmann avatar cschlesselmann commented on May 16, 2024

I don't if it's just the debug version but it crashes like every three minutes.

On my Shield HDR content plays without transcoding but always crashes after a few minutes. SDR content plays fine

Using the non dev version

from jellyfin-androidtv.

Related Issues (20)

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.