5 hours ago
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/t...0.10.z-mod
And here is my modfied hls.js: https://github.com/timitt/hls.js/release....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:
With that we would need proper master.m3u8:
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.
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/t...0.10.z-mod
And here is my modfied hls.js: https://github.com/timitt/hls.js/release....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 \
-map 0:v -c:v copy -tag:v:0 dvh1 -strict -2 -f hls -hls_time 6 -hls_segment_type fmp4 -hls_list_size 6 -hls_fmp4_init_filename "video-1.mp4" -hls_segment_filename "video_%03d.mp4" video.m3u8 \
-map 0:a -c:a copy -f hls -hls_time 6 -hls_segment_type fmp4 -hls_list_size 6 -hls_fmp4_init_filename "audio-1.mp4" -hls_segment_filename "audio_%03d.mp4" audio.m3u8
With that we would need proper master.m3u8:
Code:
#EXTM3U
#EXT-X-MEDIA:TYPE=AUDIO,GROUP-ID="audio",NAME="Default",AUTOSELECT=YES,DEFAULT=YES,URI="audio.m3u8"
#EXT-X-STREAM-INF:BANDWIDTH=28689993,AVERAGE-BANDWIDTH=28689993,VIDEO-RANGE=PQ,CODECS="dvh1.05.06,ec-3",RESOLUTION=3840x2160,FRAME-RATE=23.976,AUDIO="audio"
video.m3u8
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.