Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Limit audio channels to 6 in video transcoding profile #4037

Open
wants to merge 1 commit into
base: master
Choose a base branch
from

Conversation

MichaelRUSF
Copy link
Contributor

@MichaelRUSF MichaelRUSF commented Sep 30, 2024

This PR modifies the ExoPlayerProfile to limit the maximum number of audio channels to 6 in the video transcoding profile. Remuxing 7.1 audio with transcoded video leads to low frame rates, resulting in poor playback quality and player errors. This change aims to optimize compatibility by ensuring that 7.1 audio is transcoded when the video stream is transcoded.

Changes

Added maxAudioChannels: Set to "6" in the TS video profile for improved audio handling when transcoding.

Issues

Fixes #4038

Copy link
Member

@nielsvanvelzen nielsvanvelzen left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

.

@@ -86,6 +86,7 @@ class ExoPlayerProfile(
protocol = "hls"
copyTimestamps = false
enableSubtitlesInManifest = true
maxAudioChannels = "6"
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I don't think this is a proper fix. This will limit all transcodes to 6 channels, even when it's just the video codec that is not supported or subtitles need to be burned. While with direct play it will still go to up to 8 channels according to the downMixAudio preference.

Copy link

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

It may be worth noting that, with the nature of this bug, Direct Play of both video+audio actually plays the 8-channel audio without error.

Media where only the video is being transcoded is uniquely affected.

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

The sever already limits transcodes to 6 channels. This is saying if the video for 8 channel media is being transcoded, then the audio should also be transcoded. There is no issue with direct play so that is the desired effect. I haven't considered brunt subtitles, will test that out.

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Burnt in subtitles had the same effect as lowering the bitrate, the video playback was unwatchable due to low framerates on 8 channel EAC3 media and playback failure on 8 channel AAC media.

For TrueHD and DTS (HD/MA/X) 7.1 the server automatically transcodes the audio when the video is transcoded by either lowering the bitrate or by burning in subs.

Stream #0:1(eng): Audio: truehd (Dolby TrueHD + Dolby Atmos), 48000 Hz, 7.1, s32 (24 bit)
Stream mapping:
  Stream #0:0 (hevc) -> setparams:default (graph 0)
  format:default (graph 0) -> Stream #0:0 (hevc_amf)
  Stream #0:1 -> #0:1 (truehd (native) -> aac (libfdk_aac))
 
  Stream #0:0: Video: hevc (hvc1 / 0x31637668), d3d11(tv, bt709, progressive)...
  Stream #0:1: Audio: aac, 48000 Hz, 5.1, s16, 640 kb/s
Stream #0:1(eng): Audio: dts (DTS-HD MA + DTS:X IMAX), 48000 Hz, 7.1, s32p (24 bit) (default)
Stream mapping:
  Stream #0:0 (hevc) -> setparams:default (graph 0)
  format:default (graph 0) -> Stream #0:0 (hevc_amf)
  Stream #0:1 -> #0:1 (dts (dca) -> aac (libfdk_aac))

  Stream #0:0: Video: hevc (hvc1 / 0x31637668), d3d11(tv, bt709, progressive)...
  Stream #0:1: Audio: aac, 48000 Hz, 5.1, s16, 640 kb/s (default)

So this PR would only change the behavior for transcoded AAC and EAC3 8 channel media and it would align with what the server is already doing to TrueHD and DTS (HD/MA/X) media.

Copy link

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Concur with @MichaelRUSF on embedded subs. (Just came to report my testing, but he beat me to it)

I just tested a AAC 7.1 + VOBSUB file. It could only be played when transcoding both video & audio. Direct Play of video+audio fails due to sub burn-in.

@MichaelRUSF
Copy link
Contributor Author

MichaelRUSF commented Oct 1, 2024

I checked JMP, and it also has maxAudioChannels set to 6 in their transcoding profile. So this would align with JMP's settings.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

Remuxed 7.1 audio + transcoded video fails to play
3 participants