![]() |
WebOS with hls.js - Printable Version +- Jellyfin Forum (https://forum.jellyfin.org) +-- Forum: Development (https://forum.jellyfin.org/f-development) +--- Forum: Web Development (https://forum.jellyfin.org/f-web-development) +--- Thread: WebOS with hls.js (/t-webos-with-hls-js) Pages:
1
2
|
WebOS with hls.js - timitt - 2025-03-09 I cloned the repository and made modifications to jellyfin-web to use modified hls.js and this version seems to completely fix issues that native HLS implementation of WebOS has. Native HLS had main issue that it simply only plays stereo sound. But using hls.js plays multi channel audio fine as long as it is coded as AAC. Other issue was with fast forwarding and quick test seems to show that using hls.js does fix that too (at least with one video I had the problem using native HLS). Here it is: https://github.com/timitt/jellyfin-web/tree/release-10.10.z-mod And here is my modfied hls.js: https://github.com/timitt/hls.js/releases/tag/v1.5.20-dovi (although it is automatically used if you compile my modified jellyfin-web). Main problem when you just start using hls.js is that WebOS is not able to play ac-3 and eac-3 audio when it is part of the video. So it is needed to tell jellyfin-web to transcode those. Other problem is that jellyfin-server uses dvh1 tag with all DoVi videos and that causes Profile 8 videos to break completely when using hls.js. This is not the case with my modified hls.js, but I think it is still wrong to use dvh1 tag with Profile 8 videos. I also noticed that it would be possible to use ac-3 and eac-3 with hls.js, but it would require that audio and video needs to be put to different hls stream. That is fairly easy as ffmpeg supports it: Example: Code: c:\programs\ffmpeg-jellyfin\ffmpeg -i ..\DoViProfile5_Atmos51.mkv \ With that we would need proper master.m3u8: Code: #EXTM3U I tested this with hls.js demo and it played correctly. I also tried it with native HLS, but it still played everything in stereo. Now question remains. Would it be possible to change official Jellyfin to do that just because it would allow to not need to transcode audio to AAC? I have not tried to offer my changes to official repository as it needs customized hls.js for now. RE: WebOS with hls.js - GDX - 2025-03-24 Super. It works! Thank you! RE: WebOS with hls.js - timitt - 2025-03-26 Official hls.js 1.6.0-rc.2 is now available from npm repository and it works as well as my custom patch. My Jellyfin-web repository uses that now. I would like to make a pull request to change official Jellyfin to start using hls.js with WebOS when 1.6.0 is released, but I don't have place to test live streams and it seems that using native players is used because of that (according to comments in code). To me that is by far less important than having correctly working audio, but those that have only stereo speakers and need to live streaming might have different opinion. This change would close more than one ticket so I would really love to hear opinions from developers. RE: WebOS with hls.js - nyanmisaka - 2025-03-27 It's best to discuss this on Github or Matrix. The relevant maintainers may not read the forums often. RE: WebOS with hls.js - Ereb_Zx - 2025-03-27 How does this custom hls compare to disabling hls and using mpegts? RE: WebOS with hls.js - timitt - 2025-03-27 (2025-03-27, 05:49 AM)nyanmisaka Wrote: It's best to discuss this on Github or Matrix. The relevant maintainers may not read the forums often. I am not sure if you mean Github Discussions. There seems to be even more unanswered messages than here. Not that anyone is required to answer as these projects are generally just hobbies for people who develop these. Matrix is live chat and developers are often on completely different timezone. I did mention this message in two different issues, but it did not bring anyone to comment here (except for one appreciated "thank you"). (2025-03-27, 08:38 AM)Ereb_Zx Wrote: How does this custom hls compare to disabling hls and using mpegts? I am not sure what this means. Not using fMP4 and using mpegts is still using hls. It's just that WebOS native hls works bit better with mpegts than fMP4 (but in neither cases it works well). And with hls.js you should really use fMP4 as it works well in about all cases and mpegts does not handle Dolby Vision at all with hls.js. RE: WebOS with hls.js - Ereb_Zx - 2025-03-27 Sorry, I got confused. You got what I meant, disabling fMP4 and using MPEGTS fixes all the issues you are having in the first post. Here is the remuxing log of a DV Profile 8 Atmos eac-3 mkv file on LG C2 with native HLS and fMP4 disabled. https://pastebin.com/gZziv1yN It triggers both Dolby Vision and Atmos in the top right corner and plays both audio and video streams without transcoding. ![]() RE: WebOS with hls.js - timitt - 2025-03-28 Even if it shows "Atmos" on TV it still plays only stereo sound. At least that happens to me and everyone who has talked about this issue on several Github issues. https://github.com/jellyfin/jellyfin-web/issues/6522 https://github.com/jellyfin/jellyfin-webos/issues/275 There are other issues too, but these are what I had open right now. There are few comments that first say that it works, but then realise that it actually is not playing anything but stereo. TV takes EAC3 in, but when it puts it through HDMI ARC it ends up being stereo sound that does not even show Dolby Digital+ on amplifier. TV itself has stereo speakers so you can't really see this issue without multichannel amplifier. EDIT: And to be clear: Playing video that does not need HLS (no remuxing etc) at all plays EAC3 and AC3 fine. RE: WebOS with hls.js - Ereb_Zx - 2025-03-28 I understand, I use TV speakers so I can't tell the difference if it is really multichannel or stereo. I tested your version, compiled 10.10.z-mod and I have a few observations. I tested with the same DV8 EAC3 Atmos mkv file from my previous post. First, with original jellyfin-web, the file plays fine when using mpegts (you can see the screenshot and the log in my previous post), it triggers both Dolby Vision and Atmos badges in the top right corner. Profile 5 DV file in mkv also plays fine. If fMP4 is enabled, DV P5 still plays fine, but DV P8 doesn't play at all, it just loads indefinitely, but never starts. With your version, mp4 is somewhat fixed, but mpegts is completely broken. I can't trigger Dolby Atmos badge in the top right corner at all. In all cases, mp4 or mpegts, audio is being transcoded to AAC, probably fixing multichannel audio, but without Atmos. If fMP4 is enabled, both DV P8 and P5 play fine, they both trigger dolby vision badge in top right corner and even seeking and fast forwarding seems to work fine. But if fMP4 is disabled, we come to broken mpegts. DV P8 falls back to HDR and P5 plays back with wrong colors or transcodes to SDR. RE: WebOS with hls.js - timitt - 2025-03-28 Yes, you are correct that if fMP4 is disabled then it can't handle Dolby Vision. I think that is quite typical case everywhere except native hls with WebOS. Then again native hls fails to handle Dolby Vision when fMP4 is enabled. I don't think that is relevant issue at all. Just choose working setting like you do with official Jellyfin release. It just happens to be the other one when hls.js is used. Dolby Atmos does not trigger because EAC3 needs to be transcoded to AAC (as EAC3 in video is not supported by WebOS). I tried to explain that in my first message. That's why I wanted to have opinions from devs because it would be possible to enable support for EAC3 and AC3 (EAC3 can have Atmos), but it would require to separate audio and video to different files. That is fault of WebOS, but so is the broken native hls. I doubt that Dolby Atmos is actually working even when badge is shown at least when audio is pushed through HDMI ARC to amplifier. Maybe it is working on integrated speakers, I can't really tell. I think using hls.js fixes much more than it breaks. I definitely need to compile my own version if it won't be taken to official Jellyfin. My LG C2 does not support DTS and prevents passing it to my amp. So every video that has DTS sound needs hls. And every DoVi mkv also needs hls. And all those would be played in stereo if native hls is used. |