lisamelton / video_transcoding

Tools to transcode, inspect and convert videos.
MIT License
2.37k stars 160 forks source link

Proposal to change default surround audio format and bitrate #270

Open lisamelton opened 5 years ago

lisamelton commented 5 years ago

Proposal to change default surround audio format and bitrate

Let me just cut to the chase...:) I propose that the default 5.1 surround audio format and bitrate of transcode-video be changed from Dolby Digital (AC-3) at 640 Kbps to Dolby Digital Plus (DD+ or E-AC-3) at 384 Kbps.

What!?

It is inevitable that our default surround audio format and bitrate will change. The only question is when. And I want to do that sooner rather than later.

Please remember that I'm only proposing that we change the default. Not to somehow disallow AC-3 at 640 Kbps. I'm not completely insane. :)

AC-3 is an ancient audio compression format, even older than MP3. Achieving transparency with it requires using close to its maximum bitrate of 640 Kbps. And that bitrate is more that 10% of our target video bitrate for 1080p content. That's just crazy.

What's even crazier is when you consider that, by default, each surround track is duplicated, i.e. transcode-video creates two output tracks, one in 5.1 AC-3 track at 640 Kbps and one in stereo AAC track at 160 Kbps. And that's a combined bitrate of over 13% of our 1080p target.

While this strategy is "portable," it has never been a good way to achieve my original "smaller" goal for the project. :/

So, our audio footprint needs to get smaller. And wouldn't it be nice if we could do that and improve quality at the same time?

I had hoped that we could transition to multichannel AAC audio since HandBrake and FFmpeg can already create 7.1 channels with it. But, other than desktop PCs, native 5.1 AAC support is only available on some Android-based devices while 7.1 support is essentially non-existant. :(

And it's clear that the PC, mobile device, TV and home theater industries are now supporting DD+ decoding or passthrough pretty much everywhere. In fact, that transition has already happened. So DD+ it is.

It's also clear that streaming services prefer DD+ as their surround format. In fact, Netflix uses DD+ exclusively for surround audio. They won't even serve up AC-3.

Which means those media files with surround audio that you "acquired" from your Uncle Torrance (you know who I mean!) are in DD+ format. :)

Why is DD+ so popular? Because you can get as good or even better quality with DD+ at half the bitrate of AC-3.

Did you know that all the streaming services use 5.1 DD+ at only 192 Kbps as their default, stepping up to 384 Kbps if you have a better connection and sometimes 640 Kbps if you have bandwith for video at 10 Mbps or more?

Here are the (more or less merged) surround bitrate guidelines from Apple and Roku for AC-3 and DD+:

Channels AC-3 DD+
5.1 (surround) 384 Kbps 192 Kbps
7.1 (surround) - 384 Kbps
Nominally 16 (with Dolby Atmos) - 384-768 Kbps

Obviously the other reason for DD+'s popularity is Dolby Atmos support, which is unavailable in AC-3.

Anyway, DD+ at 384 Kbps seems to be the sweet spot, the best compromise between size and quality. And my own testing confirms that. It sounds just as good or better than AC-3 at 640 Kbps to me.

In fact, if I re-transcode a DD+ track at 384 Kbps to AC-3 at 640 Kbps, I'm hard pressed to tell the difference between that and an original AC-3 track at 640 Kbps. Which means I'm not even worried about any possible dynamic re-transcoding by my Plex Media Server.

Here's how I would describe this proposed change within the built-in --help output of transcode-video:

    --ac3-encoder ac3|eac3
                    set AC-3 audio encoder (default: eac3)
    --ac3-bitrate 384|448|640|768|1536
                    set AC-3 surround audio bitrate
                      (default for ac3: 640; default for eac3: 384)

So, to get the current behavior, only --ac3-encoder ac3 would be required on the command line. Thus making the transition easier.

Please try to create some audio yourself with DD+ at 384 Kbps and see how it sounds. I tested on multiple stereo and surround systems as well as high-quality stereo headphones using passthrough and even dynamic re-transcoding by Plex or explicit re-transcoding at the command line.

I would love to hear from @samhutchins, @JMoVS, @khaosx, @klogg416, @rhapsodians, @damorrison, @vr8hub, @dkoenig01, @ericcardenas, @arikalish, @RodBrown1988, @chrispoole643, @elliotclowes and anyone else from our various audio threads over the years or elsewhere about this proposal. Thanks!

rhapsodians commented 5 years ago

Hi all ...

My new hobby is waking up (in the UK), checking my email to see how many transcoding topics I get to think about first thing in the morning :-) So when I saw 50 new messages, I thought: 'Don, what have you proposed?' :-)

My brief two cents on this one: it appears to be a similar discussion to mp3 v. aac audio recording (same bit rate, better sound) or jpeg v. heif etc. No objections on my side to switching if we achieve better audio at the same rates OR same quality at lower rates.

Just two concerns though (mainly due to my inexperience with E-AC-3/DD+):

1) Precision/Quality: one of Don's (many) great achievements is getting so much more out of Handbrake and the various encoders/add-ons. We get raw BluRay rips transcoded down to near-identical copies of the larger files both in video and audio. The measure is visual (what we actually see ... or don't see, e.g. banding/artefacts) and aural (what comes out of my receiver and 5.1 home theatre set-up, other tv or iPad). If we move to a more efficient audio default, we'll need a consensus to cover the following: 'What kbps rate will give us sound as perceptually good as actual BR disks or FLAC-rips or current 640kbps AC-3?' If 384kbps is the right number for DD+, then cool. Most of this will be subjective but I think we all need to test this with series of tests.

So is it worthwhile agreeing a series of actual audio tests so we all can comment on a baseline? e.g. a series of specific chapters from very common/widely available movies with characteristics from differing genres/situations Soft, action, voice, music, nature etc.

Then we can look at 128, 256, 384, 512, 640 etc. and see where the 'good' starts. At least we can all start comparing the same things across multiple setups (and hearing capabilities!)

2) Compatibility: this one is more complicated but we should try and use the Wiki idea to avoid compliance duplication. For example: I use Plex -> Apple TV 4 (non-4k) -> Denon AVR-X2200W -> B&W MT-50 (5.1) as the main set up plus Plex -> Roku Stick+ -> TV (2-channel) for the second. Then iPad Pro for stuff on trains/planes etc.

If DD+ works without a hitch technically v. sonically on this, then it would be good to log it so other can add other combos. Maybe it's an overkill and DD+ is supported just as readily as old AC-3 but just a though to avoid duplication and help Don make the final call on the go/no-go defaults.

Lastly, I'm a twitter reader (mostly) but my handle is @rhapsodians [long story but just think of someone working at a fruit company back when exciting changes were happening with a major OS transition many years ago!].

Same goes for Slack if that's the consensus - I've set up an account but am new to it ... happy to have it on my iPhone/iPad/Mac at home to contribute.

Best wishes, Joe

khaosx commented 5 years ago

@donmelton Nothing like spending an hour trying to figure out what you've screwed up in encoding, only to realize that when you rebuilt the Plex player you forgot to turn on passthrough!

Following @rhapsodians suggestion:

Full rip of Apocalypse Now, encoded with current gem, chapter 1 only (video suffered a bit) Version A: strAudioOpts="--add-audio 1 --audio-width 1=surround" Version B: strAudioOpts="--add-audio 1 --audio-width 1=surround --ac3-encoder eac3 --ac3-bitrate 384"

Platforms: AppleTV 4k, Plex - transcodes to AC-3, irrelevant Mac, audio output to Thunderbolt display, VLC - no difference discernible, down mixed to stereo nVidia Shield, Plex, full 7.1 setup (direct play) - no difference discernible iPad, Plex - no difference discernible, down mixed to stereo oDroid C2, OpenPHT, full 7.1 setup (direct play) - no difference discernible

File was 3% smaller with eac3.

I'm on board with this change.

khaosx commented 5 years ago

@rhapsodians Joe, if you haven't already, please check out #256. Your suggestion of a common set of encoding samples is the next logical step for that thread. Hive mind gonna hive.

rhapsodians commented 5 years ago

@khaosx Good call Kristopher ... I'll find something from this thread and re(rip) a chapter or two to focus on sound instead of video (--veryquick). Hopefully these test scenarios make it to the Wiki in due course so we can help @donmelton out with feedback.

And like you, I'll list out what I've tested it on ... should get to this in a few hours.

lisamelton commented 5 years ago

@RodBrown1988 Thanks again for testing! And, yeah, my ears aren't perfect either. (They're also not getting any younger which is why I need help from all of you. :)

@chrispoole643 Thanks for the feedback! And your willingness to embrace change.

To what is your Apple TV connected? A surround-capable TV or amp? Because Plex on your RPi3 should serve up DD+ if it knows it can pass through, and the Apple TV does pass DD+ through.

Another vote for Slack! Thanks.

@rhapsodians ROTFL! And you were right to think that, Joe. :)

So is it worthwhile agreeing a series of actual audio tests so we all can comment on a baseline? e.g. a series of specific chapters from very common/widely available movies with characteristics from differing genres/situations Soft, action, voice, music, nature etc.

This is a great idea! In lieu of the Wiki that's still not here (get to work, Don!), we should definitely add such test cases to the list that @khaosx is building in #256.

Then we can look at 128, 256, 384, 512, 640 etc. and see where the 'good' starts. At least we can all start comparing the same things across multiple setups (and hearing capabilities!)

Indeed. For AC-3 the "good" seems to start at 384 Kbps and for DD+ the "good" seems to start at 192 Kbps, with DD+ of the same quality being half the bitrate of AC-3. That's based on the chart I included from Apple and Roku in the proposal, as well as poking around online to discover what Netflix, Amazon and Hulu are doing.

Me picking 384 Kbps with DD+ as a default for us was first based on just math (double the "good" rate, Don!) and my own testing.

But, I agree, we should find test cases and be more methodical.

To that end, I'm going to make a change to transcode-video for the next release to allow more than just the following bitrates for AC-3/DD+ surround encoding: 384, 448, 640, 768, 1536. I'll expand that list to: 192, 224, 256, 320, 384, 448, 512, 576, 640, 768, 1536.

Compatibility: this one is more complicated but we should try and use the Wiki idea to avoid compliance duplication. For example: I use Plex -> Apple TV 4 (non-4k) -> Denon AVR-X2200W -> B&W MT-50 (5.1) as the main set up plus Plex -> Roku Stick+ -> TV (2-channel) for the second. Then iPad Pro for stuff on trains/planes etc.

Interesting! For my main home theater, I have my Roku Streaming Stick+ connected directly to my Denon 5.1 amp and Plex passes DD+ through to it like a champ. For my second home theater, which doesn't have a fancy-pants amp, Plex dynamically transcodes DD+ to 640 Kbps AC-3. And it still sounds great.

If DD+ works without a hitch technically v. sonically on this, then it would be good to log it so other can add other combos. Maybe it's an overkill and DD+ is supported just as readily as old AC-3 but just a though to avoid duplication and help Don make the final call on the go/no-go defaults.

There is no way that DD+ will have the level of support that AC-3 has out there, especially with legacy systems and devices. But that situation is changing rapidly. Hence my admonition that such a change is inevitable. The question is how fast do we get ahead of that curve for the default behavior.

Lastly, I'm a twitter reader (mostly) but my handle is @rhapsodians [long story but just think of someone working at a fruit company back when exciting changes were happening with a major OS transition many years ago!].

Followed! And, yes, I have flashbacks all the time. :)

Same goes for Slack if that's the consensus - I've set up an account but am new to it ... happy to have it on my iPhone/iPad/Mac at home to contribute.

Great! By this point, I think Slack has won the battle.

lisamelton commented 5 years ago

@khaosx @rhapsodians You guys are commenting so fast I'm not keeping up. :)

Nothing like spending an hour trying to figure out what you've screwed up in encoding, only to realize that when you rebuilt the Plex player you forgot to turn on passthrough!

Yeah, we have all been there. Ouch.

Full rip of Apocalypse Now

Like I said in #256, that's a great test case!

AppleTV 4k, Plex - transcodes to AC-3, irrelevant

Really? To what device is that Apple TV connected?

nVidia Shield, Plex, full 7.1 setup (direct play) - no difference discernible

So the Shield will pass through DD+? Whew! That's good to know. It's hard to tell from their website.

iPad, Plex - no difference discernible, down mixed to stereo

To be clear, Plex passes it through and the OS mixes it down, right?

File was 3% smaller with eac3.

Yep! And it would be about 4.5% smaller if you left out the stereo AAC track. :)

I'm on board with this change.

Woo hoo! Thanks!

Hive mind gonna hive.

This should be our official motto. :)

@khaosx Good call Kristopher ... I'll find something from this thread and re(rip) a chapter or two to focus on sound instead of video (--veryquick). Hopefully these test scenarios make it to the Wiki in due course so we can help @donmelton out with feedback.

Great reminder, Joe! Don't waste time on the video with these audio tests. In fact, I would recommend using a hardware-based encoder for even more speed.

klogg416 commented 5 years ago

@donmelton @khaosx Based on my prior research the Shield can do passthrough for the following:

Dolby Digital (AC3) capable receiver
Dolby Digital Plus (E-AC) capable receiver
DTS capable receiver
TrueHD capable receiver
DTS-HD capable receiver

@donmelton

There is no way that DD+ will have the level of support that AC-3 has out there, especially with legacy systems and devices. But that situation is changing rapidly.

I think that Hulu, Netflix and Prime Video each having decided that market support is broad enough for eac3 to be the standard is the key here. If eac3 wasn't sufficiently embedded at this point then they would hedge and stick with AC3. And if an individual transcoder has older gear that won't play nicely, surely their presence here means that they are informed enough to find and leverage --ac3-encoder ac3. The work around will remain, this is just about defaults, and not to quote you to yourself, but you mention in the Rationale and Explanation sections that your goal was to [paraphrasing] match the iTunes and Netflix quality.

khaosx commented 5 years ago

@donmelton

I just did another round of testing because I had some questions about the results, so I just reset all the environments to see what's what.

Interesting results, using Plex on all devices for consistency:

nVidia Shield (Plex for Android) - verified, full passthrough of DD+ and direct play iPad (Plex for iOS) - full direct play, passthrough of DD+ Plex Media Player on Mac, output to T-Bolt display - full direct play, passthrough of DD+ oDroid c2 (OpenPHT embedded) - verified, full passthrough of DD+ and direct play

AppleTV 4k, connected to LG OLED TV - still transcoding.

I'm going to dig around in the AppleTV and see if I can figure out why it is transcoding. I'll also try Plex on the LG WebOS. Be right back with results.

rhapsodians commented 5 years ago

@donmelton Hi Don, in-between 'work', I've been setting up some audio tests which I'll try and play later [4-month old baby may delay the testing though].

To that end, I'm going to make a change to transcode-video for the next release to allow more than just the following bitrates for AC-3/DD+ surround encoding: 384, 448, 640, 768, 1536. I'll expand that list to: 192, 224, 256, 320, 384, 448, 512, 576, 640, 768, 1536.

I've observed a possible bug in either libavcodec or something in HB when bypassing transcode-video's rate settings (just for testing purposes of course) I wanted to create a very low quality audio stream (128kbps) so I could compare the 640-AC3/384-EAC3 differences.

HandBrakeCLI --input=Saving\ Private\ Ryan\ \(1998\).mkv --output=/Volumes/BluRay/test/SPRyan-EAC3-128.mkv --markers --encoder=x264 --crop=0:0:0:0 --auto-anamorphic --encoder-profile=high --encoder-level=4.0 --vb=6000 --audio=1 --aencoder=eac3 --ab=128 --encopts=ratetol=inf:mbtree=0:analyse=none:ref=1:bframes=1:rc-lookahead=30:me=dia --chapters=3

If you pass in a 128 bit rate to both the ac3 and eac3 encoders, HBCLI (or one of the libs) resets it to 224kbps. So just a heads-up if you're changing the various rates in the next version and include the 192 option.

[16:46:12]  * audio track 1
[16:46:12]    + decoder: English (FLAC) (5.1 ch) (track 1, id 0x1)
[16:46:12]      + samplerate: 48000 Hz
[16:46:12]    + mixdown: 5.1 Channels
[16:46:12]    + dither: triangular
[16:46:12]    + encoder: AC3 (libavcodec)
[16:46:12]      + bitrate: 224 kbps, samplerate: 48000 Hz

....

[17:07:11]  * audio track 1
[17:07:11]    + decoder: English (FLAC) (5.1 ch) (track 1, id 0x1)
[17:07:11]      + samplerate: 48000 Hz
[17:07:11]    + mixdown: 5.1 Channels
[17:07:11]    + dither: triangular
[17:07:11]    + encoder: E-AC3 (libavcodec)
[17:07:11]      + bitrate: 224 kbps, samplerate: 48000 Hz

Double-checked it in the MediaInfo app too ...

klogg416 commented 5 years ago

@khaosx

My LG OLED supports the following over HDMI, in case it helps with what you should expect to see.

HDMI Audio Supported Format: DTS (44.1 kHz / 48 kHz), Dolby Digital / Dolby Digital Plus (32 kHz / 44.1 kHz / 48 kHz), PCM (32 kHz / 44.1 kHz / 48 kHz / 96 kHz / 192 kHz) (Depending on model)

khaosx commented 5 years ago

Curiouser and curiouser...

The LG does full direct play, no issues. DD+ passing through.

Neither the AppleTV 4k nor the ATV3 I have in the theater will direct play. At all. I thought it might be the test flight version of Plex I am running, so I killed it, and the problem remains. I did a little more digging, and noticed that in Plex settings, I cannot set "Home Streaming" to anything higher than 8Mbps 1080p. As soon as I move off of settings, it resets to 8Mbps. Both units.

I think I must have modified the player profile for the ATV. Can anyone with an ATV test this out and see if the setting is sticky for you?

lisamelton commented 5 years ago

@khaosx @rhapsodians @klogg416 So much testing and so many great comments!! Thanks, folks! I'll add to the chatter as soon as I get back from chauffeuring my family around for the next hour or so.

samhutchins commented 5 years ago

If it's good enough for Netflix, it's good enough for transcode-video IMO. Beyond that, I'm afraid I have no strong opinions (for once)

klogg416 commented 5 years ago

@khaosx I did some quick tests. My home is set up to stream original quality everywhere and only transcode audio, so those Mbps settings shouldn't change anything, and whatever value I pick seems to stick...

For audio passthrough, it seems that the ATV Plex app basically doesn't pass anything directly today. Apparently Infuse will, but I haven't tested that yet. This is what I recorded with two different audio out system settings. The first record in each set is the codec and how my AVR receives it, the second and third record is how Plex reports the stream being sent on the status page. Hopefully that makes sense.

I can try Infuse later tonight if that is important, but mostly it seems that the Apple TV (non-4K) will repackage the audio to the AVR regardless of how Plex sends.

CODEC Message ATV Change Format: OFF (Use Best) ATV Change Format: ON
AAC Stereo AVR PCM Dsur (Dolby Surround) PCM Dsur (Dolby Surround)
Converting (throttled) Plex Video Direct Stream Direct Stream
Converting (throttled) Plex Audio Direct Stream Direct Stream
--- --- --- ---
AC3 5.1 AVR PCM DD
Converting (throttled) Plex Video Direct Stream Direct Stream
Converting (throttled) Plex Audio Direct Stream Direct Stream
--- --- --- ---
eac3 5.1 - DD+ AVR PCM DD
Converting (throttled) Plex Video Direct Stream Direct Stream
Converting (throttled) Plex Audio Direct Stream Direct Stream
khaosx commented 5 years ago

Well double dumbass on me...

I recently set up some VLANS to manage traffic a little better. The NAS with PMS sits on my prod network, and the AppleTV sits on VLAN30-Media. So, apparently, Plex and Apple see this as remote, and it falls under my remote stream limit. As son as I turned that off, I got direct play with full DD+.

@klogg416 Check your settings in Plex on the ATV and make sure you're using the enhanced player. It passes nearly everything, unless you do something dumb like I did.

"Now hold on, Khaosx..." you might be saying. "Aren't the Shield and the oDroid living la vida VLAN too? Why don't they have the same problem"? You'd be right in asking, and I have zero idea why this is the case. All I know is that now, it's direct playing an MKV with DD+ and PGS subtitles.

Screen Shot 2019-03-11 at 3 16 46 PM

klogg416 commented 5 years ago

Check your settings in Plex on the ATV and make sure you're using the enhanced player. It passes nearly everything, unless you do something dumb like I did.

Ugh, I saw "experimental" and said, no thanks Plex, not for this. I'll turn it on and repeat exercise. At least I have videos picked out now. 🥇

klogg416 commented 5 years ago

One more update, the enhanced player feature requires plex pass, which I do not have. Infuse also requires a subscription for any of the advanced audio codecs (they seem to pay the licensing fees for official support). Plex's role in my household is just to play on the iPad while Kodi does the heaving lifting, I don't expect I will be subscribing for their pass.

Sorry for the false start @khaosx

lisamelton commented 5 years ago

@klogg416 @khaosx @rhapsodians @samhutchins So many comments to catch up on while I was away!! On the positive side, I managed to get both "Apocalypse Now (1979)" and "Avatar (2009)" transcoded using --avbr --quick --ac3-encoder eac3 --ac3-bitrate 384. And I'm blasting the Apocalypse intro as I type this (with my third cup of coffee today so I can keep up with you all). :)

@klogg416 ...

Based on my prior research the Shield can do passthrough for the following:

Dolby Digital (AC3) capable receiver
Dolby Digital Plus (E-AC) capable receiver
DTS capable receiver
TrueHD capable receiver
DTS-HD capable receiver

Excellent! Why don't they advertise that better on their website?

I think that Hulu, Netflix and Prime Video each having decided that market support is broad enough for eac3 to be the standard is the key here. If eac3 wasn't sufficiently embedded at this point then they would hedge and stick with AC3. And if an individual transcoder has older gear that won't play nicely, surely their presence here means that they are informed enough to find and leverage --ac3-encoder ac3. The work around will remain, this is just about defaults, and not to quote you to yourself, but you mention in the Rationale and Explanation sections that your goal was to [paraphrasing] match the iTunes and Netflix quality.

Your math checks out, sir! Yeah, I agree wholeheartedly. A good way to put it, too.

@khaosx ...

just did another round of testing because I had some questions about the results, so I just reset all the environments to see what's what.

Interesting results, using Plex on all devices for consistency:

nVidia Shield (Plex for Android) - verified, full passthrough of DD+ and direct play iPad (Plex for iOS) - full direct play, passthrough of DD+ Plex Media Player on Mac, output to T-Bolt display - full direct play, passthrough of DD+ oDroid c2 (OpenPHT embedded) - verified, full passthrough of DD+ and direct play

That's great! Thanks for testing all of those!

AppleTV 4k, connected to LG OLED TV - still transcoding.

Weird. But I covet your LG OLED TV! My wife keeps eyeing 4K OLED sets at Costco. Good problem to have, I suppose.

I'm going to dig around in the AppleTV and see if I can figure out why it is transcoding. I'll also try Plex on the LG WebOS. Be right back with results.

I will await your results, sir! Which are probably in a later comment...

@rhapsodians ...

Hi Don, in-between 'work', I've been setting up some audio tests which I'll try and play later [4-month old baby may delay the testing though].

Thanks! And I completely understand the baby constraint because mine is 28 years old now. :)

I've observed a possible bug in either libavcodec or something in HB when bypassing transcode-video's rate settings (just for testing purposes of course) I wanted to create a very low quality audio stream (128kbps) so I could compare the 640-AC3/384-EAC3 differences.

Oh damn. But nice catch! I will try to figure out what's going on there a little later today. And the full command line is appreciated, sir.

If you pass in a 128 bit rate to both the ac3 and eac3 encoders, HBCLI (or one of the libs) resets it to 224kbps. So just a heads-up if you're changing the various rates in the next version and include the 192 option.

Weird. I wonder if there's a minimum bitrate for a surround mix? Maybe that's it?

Double-checked it in the MediaInfo app too ...

As one does. :) Seriously, very thorough, sir.

@klogg416 ...

My LG OLED supports the following over HDMI, in case it helps with what you should expect to see.

HDMI Audio Supported Format: DTS (44.1 kHz /
48 kHz), Dolby Digital / Dolby Digital Plus (32 kHz
/ 44.1 kHz / 48 kHz), PCM (32 kHz / 44.1 kHz / 48
kHz / 96 kHz / 192 kHz) (Depending on model)

Wow! I also envy your TV. Damn, I really need to upgrade.

@khaosx ...

Curiouser and curiouser...

The LG does full direct play, no issues. DD+ passing through.

One would hope so being that fancy.

Neither the AppleTV 4k nor the ATV3 I have in the theater will direct play. At all. I thought it might be the test flight version of Plex I am running, so I killed it, and the problem remains. I did a little more digging, and noticed that in Plex settings, I cannot set "Home Streaming" to anything higher than 8Mbps 1080p. As soon as I move off of settings, it resets to 8Mbps. Both units.

WTF!? Maybe it's a good thing we're a Roku household here.

I think I must have modified the player profile for the ATV. Can anyone with an ATV test this out and see if the setting is sticky for you?

Woof. How do you even change the player profile? Would that be in Plex or on the Apple TV?

@samhutchins ...

If it's good enough for Netflix, it's good enough for transcode-video IMO. Beyond that, I'm afraid I have no strong opinions (for once)

Woo hoo! My rationale, exactly, sir. And I'm really surprised you're not trying to talk me off the ledge on this one. :)

@klogg416 ...

I did some quick tests. My home is set up to stream original quality everywhere and only transcode audio, so those Mbps settings shouldn't change anything, and whatever value I pick seems to stick...

For audio passthrough, it seems that the ATV Plex app basically doesn't pass anything directly today. Apparently Infuse will, but I haven't tested that yet. This is what I recorded with two different audio out system settings. The first record in each set is the codec and how my AVR receives it, the second and third record is how Plex reports the stream being sent on the status page. Hopefully that makes sense.

I can try Infuse later tonight if that is important, but mostly it seems that the Apple TV (non-4K) will repackage the audio to the AVR regardless of how Plex sends.

OK, so it's the Plex client on Apple TV that's being stupid?

(And that's quite the useful chart there, sir!)

@khaosx ...

Well double dumbass on me...

We have all been there, Kristopher. We have all been there.

I recently set up some VLANS to manage traffic a little better. The NAS with PMS sits on my prod network, and the AppleTV sits on VLAN30-Media. So, apparently, Plex and Apple see this as remote, and it falls under my remote stream limit. As son as I turned that off, I got direct play with full DD+.

LOL! Now that is a geeky way to create a problem. :)

But, hey, at least we know direct play and pass through works on Apple TV. So, woo hoo!

@klogg416 Check your settings in Plex on the ATV and make sure you're using the enhanced player. It passes nearly everything, unless you do something dumb like I did.

Aha! The "enhanced player" strikes again! I forgot about that for Apple devices. I've always had it enabled on my iPhone since the normal player is a bit... lacking.

"Now hold on, Khaosx..." you might be saying. "Aren't the Shield and the oDroid living la vida VLAN too? Why don't they have the same problem"? You'd be right in asking, and I have zero idea why this is the case. All I know is that now, it's direct playing an MKV with DD+ and PGS subtitles.

Holy shit! Those are impressive devices then. I didn't even know Plex allowed pass through of PGS subtitles.

@klogg416 ...

Ugh, I saw "experimental" and said, no thanks Plex, not for this. I'll turn it on and repeat exercise. At least I have videos picked out now.

One more update, the enhanced player feature requires plex pass, which I do not have. Infuse also requires a subscription for any of the advanced audio codecs (they seem to pay the licensing fees for official support). Plex's role in my household is just to play on the iPad while Kodi does the heaving lifting, I don't expect I will be subscribing for their pass.

I completely understand your rationale. I put off getting Plex Pass for a long time and for the same reason, Kodi was my go-to player for serious stuff. Then this project really started to heat up and I figured that I would have to get the Pass just to help folks debug stuff. Oh well.

khaosx commented 5 years ago

OMG @donmelton - that will forever be memorialized as "The Omnibus Reply".

In no particular order:

But I covet your LG OLED TV! My wife keeps eyeing 4K OLED sets at Costco

I hate to be that guy who says shit like "It's a real game changer", but it's a real game changer. We got ours at Costco too, and once we learned to live with the soap opera refresh rate, it became the primary media consumption device...despite having a 106" screen downstairs.

Woof. How do you even change the player profile? Would that be in Plex or on the Apple TV?

On your system with Plex Media Server, look for /something/something/PlexMediaServer/Resources/Profiles (it varies by system)

If you want to know why things do what they do on a device in Plex, that's where it lives. There is a separate upgrade-protected folder for doing replacement profiles, if you're brave. I modded mine at one point to see if I could get subs to work correctly. Here's the default for tvOS:

<?xml version="1.0" encoding="utf-8"?>
<Client name="tvOS">
  <!-- Author: Plex Inc. -->
  <!-- This profile is used by A8-based tvOS devices -->
  <Settings>
    <Setting name="DirectPlayStreamSelection" value="true" />
    <Setting name="StreamUnselectedIncompatibleAudioStreams" value="true" />
  </Settings>
  <TranscodeTargets>
    <VideoProfile protocol="hls" container="mpegts" codec="h264" audioCodec="aac,eac3,ac3,mp3" subtitleCodec="eia_608_embedded" context="streaming" />
    <MusicProfile container="mp3" codec="mp3" />
    <PhotoProfile container="jpeg" />
    <SubtitleProfile protocol="hls" container="webvtt" subtitleCodec="webvtt"/>
  </TranscodeTargets>
  <DirectPlayProfiles>
    <VideoProfile container="mp4" codec="h264,mpeg4" audioCodec="aac,ac3,eac3" subtitleCodec="mov_text,tx3g,ttxt,text" />
    <!-- Since tvOS may have issues direct playing mov/eac3 it has its own profile  -->
    <VideoProfile container="mov" codec="h264,mpeg4" audioCodec="aac,ac3" subtitleCodec="mov_text,tx3g,ttxt,text" />
    <!-- Allow Direct Play of HLS content  -->
    <VideoProfile protocol="hls" container="mpegts" codec="h264" audioCodec="aac" />
    <MusicProfile container="mp3" codec="mp3" />
    <MusicProfile container="mp4" codec="aac" />
    <PhotoProfile container="jpeg" />
  </DirectPlayProfiles>
  <CodecProfiles>
    <VideoCodec name="h264">
      <Limitations>
        <UpperBound name="video.width" value="1920" isRequired="true" />
        <UpperBound name="video.height" value="1080" isRequired="true" />
        <UpperBound name="video.bitDepth" value="8" />
        <NotMatch name="video.separateFields" value="1" />
      </Limitations>
    </VideoCodec>
    <VideoAudioCodec name="aac">
      <Limitations>
        <UpperBound name="audio.channels" value="2" />
      </Limitations>
    </VideoAudioCodec>
  </CodecProfiles>
</Client>

There's a profile for nearly every supported device.

Holy shit! Those are impressive devices then. I didn't even know Plex allowed pass through of PGS subtitles.

The Shield and the oDroid C2 both direct play nearly everything, by virtue of the chipsets. That oDroid is a $49 Plex beast. It will passthrough every codec you're likely to see, and even direct play 4k content. Both boxes pass PGS subs with no effort or config.

The ATV just got the ability to do PGS subs without transcoding them, and only with the enhanced player that they released a couple of months ago. It was a real...neat find.

rhapsodians commented 5 years ago

@donmelton Hi Don,

Some initial testing results ... all looks good provided you're careful with the Plex client settings to accommodate Direct Play (Original Quality) and Direct Stream = on.

I haven't tested things like VLC, Infuse etc. as they should just work.

My findings: Plex on the Apple TV 4, Roku Stick+ and iPad Pro have no issues in handling both 640 kbps AC-3 and 384 kbps E-AC-3 in my home setup. So long as Direct Stream = On, then the Roku will also trigger E-AC-3 -> AAC stereo transcoding/Direct Stream video for my dumb TV option.

As for sound, I couldn't do a comprehensive test and turn the volume up on my proper 5.1 setup (baby duty) but a quick 10 sec sampling of Saving Private Ryan (Ch. 3), Jason Bourne (Ch. 17) and Westworld S01E10 (Ch. 8 ... Armistice & Hector are loving those machine guns!) showed that there isn't a huge difference between the 640 AC-3 and 384 E-AC-3 sounds (to my ears with super-limited tests). So based my initial thoughts are a thumbs up from me unless others find compatibility or sonic showstoppers.

Encoding Movie/TV Source Target Comments
640 kbps - AC3 only, no stereo track Saving Private Ryan - CH. 3 Plex Server (1.15.1.710) Plex Client 1.39 (Enhanced video player = On, AutoAdjust Quality = Off, Home streaming = Maximum, Allow Direct Play = On, Play = Original Quality, 24 fps)Apple TV 4Denon AVR-X2200W5.1 surround Video = 1080p (H.264) -> Direct Play, no server transcodingAudio = AC3 5.1 -> Direct Play, no server transcoding
      Plex Client 1.39 (Enhanced video player = OFF, AutoAdjust Quality = Off, Home streaming = Maximum, Allow Direct Play = On, Play = Original Quality, 24 fps)Apple TV 4Denon AVR-X2200W5.1 surround Video = 1080p (H.264) -> Direct Play, no server transcodingAudio = AC3 5.1 -> Direct Play, no server transcoding
      Plex Client (Roku 9.0, Plex Client 6.2) - Video-Local Quality=Original, Direct Play = Auto, Allow Direct Stream = On)Roku Stick+TV (in-built stereo) Video = 1080p (H.264) -> Direct StreamAudio = AC5 5.1 -> transcoding
      Plex Client - Quality = Original, iPad Pro Video = 1080p (H.264) -> Direct Play, no server transcodingAudio = AC3 5.1 -> Direct Play, no server transcoding
384 kbps - EAC3/DD+ only, no stereo track Saving Private Ryan - CH. 3 Plex Server (1.15.1.710) Plex Client 1.39 (Enhanced video player = ON, AutoAdjust Quality = Off, Home streaming = Maximum, Allow Direct Play = On, Play = Original Quality, 24 fps)Apple TV 4Denon AVR-X2200W5.1 surround Video = 1080p (H.264) -> Direct Play, no server transcodingAudio = AC3 5.1 -> Direct Play, no server transcoding
      Plex Client 1.39 (Enhanced video player = OFF, AutoAdjust Quality = Off, Home streaming = Maximum, Allow Direct Play = On, Play = Original Quality, 24 fps)Apple TV 4Denon AVR-X2200W5.1 surround Video = 1080p (H.264) -> Direct Play, no server transcodingAudio = AC3 5.1 -> Direct Play, no server transcoding
      Plex Client (Roku 9.0, Plex Client 6.2) - Video Quality=Original, Direct Play = Auto, Allow Direct Stream = On)Roku Stick+TV (in-built stereo) Video = 1080p (H.264) -> Direct StreamAudio = AC5 5.1 -> transcoding
      Plex Client (Quality = Original, iPad Pro Video = 1080p (H.264) -> Direct Play, no server transcodingAudio = AC3 5.1 -> Direct Play, no server transcoding

For everyone's reference, this is an example of what I used to build the various test files: transcode-video --avbr --veryquick --ac3-encoder eac3 --ac3-bitrate 384 --audio-width all=surround --chapters 3 --output ./test/SPR-EAC3-384.mkv 'Saving Private Ryan (1998).mkv'

klogg416 commented 5 years ago

@khaosx That is a brilliant bit of insight into how Plex manages streams to devices.

But I covet your LG OLED TV! My wife keeps eyeing 4K OLED sets at Costco

I hate to be that guy who says shit like "It's a real game changer", but it's a real game changer. We got ours at Costco too, and once we learned to live with the soap opera refresh rate, it became the primary media consumption device...despite having a 106" screen downstairs.

Agree. 4K is better I guess, my eyes aren't that good. HDR? Holy smokes. HDR is how I proved to the wife that I make good decisions. And she is welcome. Buy 4K Planet Earth, Blue Planet, etc.

The Shield and the oDroid C2 both direct play nearly everything, by virtue of the chipsets.

Do you know if the Shield does dynamic frame rate matching? I almost bought one over Christmas but it seemed that running the Kodi app it couldn't adjust frame rate on the fly and you would need to go to Android settings and pick 24hz, launch kodi, watch a movie, exit and set back to 60. Is that true?

I use something similar to the oDroid for kodi, run LibreElec, and it is brilliant for audio pass through and dynamically changing refresh rates, but the Shield has a pure 4:4:4 video pipeline that has... significant allure.

klogg416 commented 5 years ago

@rhapsodians And that is the table I dreamed of creating. It is good to have aspirations.

lisamelton commented 5 years ago

@khaosx ...

OMG @donmelton - that will forever be memorialized as "The Omnibus Reply".

LOL! I'm just trying to keep up. :)

I hate to be that guy who says shit like "It's a real game changer", but it's a real game changer. We got ours at Costco too, and once we learned to live with the soap opera refresh rate, it became the primary media consumption device...despite having a 106" screen downstairs.

You banished a 106-inch screen to the downstairs? Damn, you are hardcore, son. :) And now my 80-inch 1080p LED seems... tiny. :)

Well, Costco is the place to go for TVs these days. For that and 50-gallon drums of mayonnaise. I think I purchased my last three TVs there.

On your system with Plex Media Server, look for /something/something/PlexMediaServer/Resources/Profiles (it varies by system)

f you want to know why things do what they do on a device in Plex, that's where it lives. There is a separate upgrade-protected folder for doing replacement profiles, if you're brave. I modded mine at one point to see if I could get subs to work correctly. Here's the default for tvOS: ... There's a profile for nearly every supported device.

Thanks! This is probably also explained in documentation I've never looked at, right?

Modding profiles? You are the adventurous sort. :)

I'll have to look through all these profiles now just to see what's different about my various Rokus.

The Shield and the oDroid C2 both direct play nearly everything, by virtue of the chipsets. That oDroid is a $49 Plex beast. It will passthrough every codec you're likely to see, and even direct play 4k content. Both boxes pass PGS subs with no effort or config.

The ATV just got the ability to do PGS subs without transcoding them, and only with the enhanced player that they released a couple of months ago. It was a real...neat find.

The Apple TV with the enhanced Plex player can do PGS subs now? Damn. I wonder if my new Rokus can as well? Is that capability listed in the profile?

I didn't even know about the ODROID. Which model do you have?

khaosx commented 5 years ago

@donmelton

You banished a 106-inch screen to the downstairs? Damn, you are hardcore, son. :) And now my 80-inch 1080p LED seems... tiny. :)

Not exactly...it's worse. I have a full theater downstairs, projector, 7.1, recliners, Control4 automation, the whole deal. We still use it for family movie night, but normal viewing is in the living room. Four kids. Too tired to trek downstairs :)

Well, Costco is the place to go for TVs these days. For that and 50-gallon drums of mayonnaise. I think I purchased my last three TVs there.

Their new street tacos are pretty phenom too. They have so many uses for 24 hour old chicken.

Thanks! This is probably also explained in documentation I've never looked at, right?

Not as well as you'd think. If you notice, there is no mention of the MKV container in the profile I linked, and yet, here we are playing an mkv without even that intermediate step where Plex tries to just remix it into a compatible container.

Modding profiles? You are the adventurous sort. :)

I appreciate the benefit of the doubt here, as it really felt more stupid than adventurous!

The Apple TV with the enhanced Plex player can do PGS subs now? Damn. I wonder if my new Rokus can as well? Is that capability listed in the profile?

Not that I found. Admittedly, it's been a hot minute since I messed with them, but the "direct play" targets are what I understood to be the official "we play this" list, and transcode targets are "we'll convert to this". The transcode targets make a lot more sense to me. The current xml for new Roku boxes specifically calls out support for mkv containers. I think the ATV enhanced player is doing its own voodoo on the backend and bypassing the capabilities of the ATV altogether. In fact, I know that's what it's doing.

Oh, yeah, you asked a question! :)

<?xml version="1.0" encoding="utf-8"?>
<Client name="Roku-7.x">
  <!-- Author: Plex Inc. -->
  <TranscodeTargets>
    <VideoProfile protocol="hls" container="mpegts" codec="h264" audioCodec="aac,mp3" context="streaming">
      <Setting name="BreakNonKeyframes" value="true" />
      <Setting name="HlsElideExtXStart" value="true" />
    </VideoProfile>
    <VideoProfile protocol="http" container="mkv" codec="h264" audioCodec="aac,mp3,mp2,pcm,flac,alac" subtitleCodec="srt" context="streaming" />
    <MusicProfile container="mp3" codec="mp3" />
    <PhotoProfile container="jpeg" />
  </TranscodeTargets>
  <DirectPlayProfiles>
    <VideoProfile container="mp4,mkv" codec="h264,mpeg4" audioCodec="aac,mp3,flac" />
    <MusicProfile container="mp4" codec="aac" />
    <MusicProfile container="mp3" codec="mp3" />
    <PhotoProfile container="jpeg,gif,png" />
  </DirectPlayProfiles>
  <CodecProfiles>
    <VideoCodec name="h264">
      <Limitations>
        <UpperBound name="video.width" value="1920" isRequired="true" />
        <UpperBound name="video.height" value="1080" isRequired="true" />
        <UpperBound name="video.refFrames" value="8" />
        <UpperBound name="video.bitDepth" value="8" />
      </Limitations>
    </VideoCodec>
    <VideoAudioCodec name="aac,mp3,mp2,pcm,flac,alac">
      <Limitations>
        <UpperBound name="audio.channels" value="2" />
        <LowerBound name="audio.samplingRate" value="22050" />
      </Limitations>
    </VideoAudioCodec>
    <VideoAudioCodec name="ac3">
      <Limitations>
        <LowerBound name="audio.channels" value="2" />
      </Limitations>
    </VideoAudioCodec>
    <MusicCodec name="aac">
      <Limitations>
        <UpperBound name="audio.channels" value="2" />
      </Limitations>
    </MusicCodec>
  </CodecProfiles>
</Client>

Nope. No mention there.

I didn't even know about the ODROID. Which model do you have?

The C2, running OpenPHT on LibreElec. It's spectacular - the only streamer I like better is the Shield.

lisamelton commented 5 years ago

@rhapsodians ...

You will be drafted for "table" duty when the new Wiki arrives. :) Seriously, that's impressive not just because of the content!

Some initial testing results ... all looks good provided you're careful with the Plex client settings to accommodate Direct Play (Original Quality) and Direct Stream = on.

Sweet! I assume that's also provided your final output device can actually handle that format? And if your Denon amp is anything like mine, it can basically play any audio (except maybe multichannel AAC).

  • Plex Server + Apple TV 4 + Plex Client
  • Plex Server + Roku Stick+ + Plex Client
  • Plex Server + iPad Pro + Plex Client

Again, sweet, because those are probably the biggies for many of our users.

  • I haven't tested things like VLC, Infuse etc. as they should just work.

Agreed. VLC and Infuse are like the Swiss Army knives of media playback.

My findings: Plex on the Apple TV 4, Roku Stick+ and iPad Pro have no issues in handling both 640 kbps AC-3 and 384 kbps E-AC-3 in my home setup. So long as Direct Stream = On, then the Roku will also trigger E-AC-3 -> AAC stereo transcoding/Direct Stream video for my dumb TV option.

Yep! That describes both my surround sound setup and second non-surround sound TV setup as well. If you look inside what Plex is doing, it's transcoding that to AAC at 256 Kbps for stereo devices. Which, at that bitrate, might as well be lossless even with the FFmpeg encoder.

As for sound, I couldn't do a comprehensive test and turn the volume up on my proper 5.1 setup (baby duty) but a quick 10 sec sampling of Saving Private Ryan (Ch. 3), Jason Bourne (Ch. 17) and Westworld S01E10 (Ch. 8 ... Armistice & Hector are loving those machine guns!) showed that there isn't a huge difference between the 640 AC-3 and 384 E-AC-3 sounds (to my ears with super-limited tests). So based my initial thoughts are a thumbs up from me unless others find compatibility or sonic showstoppers.

Those are all killer test choices, Joe! And, BTW, you have excellent taste. :) Can you add those to the mega-list that @khaosx is compiling in #256?

Also, dammit, now I need to watch that scene in "Westworld" again! :)

And agreed on your assessment. They really do sound the same to me as well.

khaosx commented 5 years ago

@klogg416

Do you know if the Shield does dynamic frame rate matching?

Under advanced settings, there is a setting for frame rate matching that does what you are looking for. I'll have a peek tomorrow and make sure it actually works.

the Shield has a pure 4:4:4 video pipeline that has... significant allure.

OK, look...you can love your streamer of choice, but don't LOVE your streamer of choice. :)

lisamelton commented 5 years ago

@klogg416 ...

Agree. 4K is better I guess, my eyes aren't that good. HDR? Holy smokes. HDR is how I proved to the wife that I make good decisions. And she is welcome. Buy 4K Planet Earth, Blue Planet, etc.

I will use this clever strategy, sir! Thanks.

Do you know if the Shield does dynamic frame rate matching? I almost bought one over Christmas but it seemed that running the Kodi app it couldn't adjust frame rate on the fly and you would need to go to Android settings and pick 24hz, launch kodi, watch a movie, exit and set back to 60. Is that true?

I use something similar to the oDroid for kodi, run LibreElec, and it is brilliant for audio pass through and dynamically changing refresh rates, but the Shield has a pure 4:4:4 video pipeline that has... significant allure.

You kids and your fancy toys! :)

Seriously, I'm just following along hoping to learn something.

klogg416 commented 5 years ago

@khaosx

the Shield has a pure 4:4:4 video pipeline that has ... significant allure.

OK, look...you can love your streamer of choice, but don't LOVE your streamer of choice. :)

No, you look, with your recliners and your 2 extra speakers, all I want is pure math video out. That's all. No truncating, no dithering, no shenanigans. Don't judge. :-)

I haven't found a way to have the LG tell me received FPS for content (which is a weird thing for a high end TV to hide) and have to rely on my AVR to report signal in. My understanding is that the Shield (android version long forgotten) just ignored the Kodi setting for frame rate matching, not sure about Plex or OpenPHT though, maybe it works with them proving technical capability. This is all to help you make sure that you check correctly, because I need to know.

@donmelton I forbid you from starting a household audio streaming project, I spend enough money without your additional help. Eff me four kids, I am working up the nerve for a second, and we just had our first round of ski lessons.

arikalish commented 5 years ago

So I finally got a few minutes to try this out. iOS and web work fine, as expected, but my TV is causing trouble.

Setup:

Plex for Android running natively on a 2015 Sony 55XBR850C -> HDMI ARC -> Sony STR-DN1020 receiver.

AC3 tracks work fine and AACs get converted to PCM. EAC3 looks like it's playing fine on the receiver (it scrolls "Dolby Digital 5.1") but no audio comes out. Swapping to another audio track works just fine.

The app is using ExoPlayer v2 and shows Direct Play in all cases. I seem to remember trying this out when EAC3 support was first added to the gem and having similar results.

For what it's worth, FLAC 7.1 tracks crash out on this TV with a "transcoder not found" error or something similar.

Wonder if I can convince my wife to buy a new TV and receiver because clearly the problem is both ;)

As for whether or not this showstopper: Nope. I encode in a Docker container with fdk_aac so I'm more than happy to pass along some other default params to retain the old behavior.

lisamelton commented 5 years ago

@khaosx ...

Not exactly...it's worse. I have a full theater downstairs, projector, 7.1, recliners, Control4 automation, the whole deal. We still use it for family movie night, but normal viewing is in the living room. Four kids. Too tired to trek downstairs :)

I'm impressed you still have enough disposable income to buy that rig with four kids. :)

Their new street tacos are pretty phenom too. They have so many uses for 24 hour old chicken.

I'm really gonna have to try those one of these days. My dog, BTW, goes batshit crazy whenever we bring home a rotisserie chicken.

Not as well as you'd think. If you notice, there is no mention of the MKV container in the profile I linked, and yet, here we are playing an mkv without even that intermediate step where Plex tries to just remix it into a compatible container.

Ah, Plex. Never crossing the "t" or dotting the "i" since forever. :)

I appreciate the benefit of the doubt here, as it really felt more stupid than adventurous!

I'm just glad somebody around here has experience at it!

Not that I found. Admittedly, it's been a hot minute since I messed with them, but the "direct play" targets are what I understood to be the official "we play this" list, and transcode targets are "we'll convert to this". The transcode targets make a lot more sense to me. The current xml for new Roku boxes specifically calls out support for mkv containers. I think the ATV enhanced player is doing its own voodoo on the backend and bypassing the capabilities of the ATV altogether. In fact, I know that's what it's doing.

Sorcery! It's all just sorcery! And how exactly do you know this?

Oh, yeah, you asked a question! :)

Nope. No mention there.

Dammit. I guess I'll have to do some tests. Thanks for looking!

The C2, running OpenPHT on LibreElec. It's spectacular - the only streamer I like better is the Shield.

You tempt me, Lucifer! But I'm in the process of upgrading all my Roku devices so I will wait on the shiny stuff for awhile.

klogg416 commented 5 years ago

@arikalish Two quick thoughts; 1) your TV is one of the lucky ones getting firmware updates, last one dated end of November last year. Worth checking out the release notes from your current version to present in case gold.

2) ARC is rough. It may not give you the joy you hope for (see my above post about ARC/SPDIF out from my Samsung and LG panels), nothing has directly lead to more AVR purchases in my household. That said, here is the quote from your manual on settings you can change:

See the instruction manual of the audio system for details on connecting other devices and for set-up. If the audio system is not compatible with Dolby Digital or DTS, set [Settings] — [Sound] —[Digital audio out] to [PCM]

(implication being that maybe the setting is on PCM and masking the direct output)

lisamelton commented 5 years ago

@arikalish ...

So I finally got a few minutes to try this out. iOS and web work fine, as expected, but my TV is causing trouble.

Thanks for testing! And... oh noes!

Setup:

Plex for Android running natively on a 2015 Sony 55XBR850C -> HDMI ARC -> Sony STR-DN1020 receiver.

AC3 tracks work fine and AACs get converted to PCM. EAC3 looks like it's playing fine on the receiver (it scrolls "Dolby Digital 5.1") but no audio comes out. Swapping to another audio track works just fine.

D'oh!

The app is using ExoPlayer v2 and shows Direct Play in all cases. I seem to remember trying this out when EAC3 support was first added to the gem and having similar results.

For what it's worth, FLAC 7.1 tracks crash out on this TV with a "transcoder not found" error or something similar.

This is so weird. It's like Plex on your TV doesn't even understand its capabilities.

Wonder if I can convince my wife to buy a new TV and receiver because clearly the problem is both ;)

Good luck with that! :)

As for whether or not this showstopper: Nope. I encode in a Docker container with fdk_aac so I'm more than happy to pass along some other default params to retain the old behavior.

Whew! Thanks.

lisamelton commented 5 years ago

@klogg416 Thank god you're on this laggy IRC channel we have. :) Seriously, that information is like gold. And I hope it helps @arikalish.

lisamelton commented 5 years ago

@khaosx ...

I forbid you from starting a household audio streaming project, I spend enough money without your additional help. Eff me four kids, I am working up the nerve for a second, and we just had our first round of ski lessons.

LOL! You poor doomed soul! :)

klogg416 commented 5 years ago

@donmelton to my great shame I never learned to code, professionally I am only technology adjacent. But I can scrutinize the shit out of a manual or white paper, spot the common traps, and my google-fu is strong. I give back in the ways that I can.

Speaking of IRC, how is our Mr. Butterfield fund coming along?

lisamelton commented 5 years ago

@rhapsodians Finally got a few moments to test this...

I've observed a possible bug in either libavcodec or something in HB when bypassing transcode-video's rate settings (just for testing purposes of course) I wanted to create a very low quality audio stream (128kbps) so I could compare the 640-AC3/384-EAC3 differences.

If you pass in a 128 bit rate to both the ac3 and eac3 encoders, HBCLI (or one of the libs) resets it to 224kbps. So just a heads-up if you're changing the various rates in the next version and include the 192 option.

... and you are absolutely right! HandBrake is setting a hard minimum of 224 Kbps on AC-3 and DD+ surround output. However, this is not a limit built into FFmpeg or Libav, which is used by HandBrake.

Go figure.

lisamelton commented 5 years ago

@klogg416 You are, indeed, strong in the ways of The Force. And we need that here.

Speaking of IRC, how is our Mr. Butterfield fund coming along?

If you mean Slack, then I am ass-deep in the documentation right now. :)

klogg416 commented 5 years ago

@donmelton I do, and excellent! :-)

arikalish commented 5 years ago

@klogg416 Thanks for the suggestion.

I'm on the latest firmware for the TV and the receiver. TV's Audio setting was Auto 2 (instead of PCM). Without that it won't pass multichannel audio from the builtin tuner or other inputs back out via ARC.

I tried the following:

Set Audio to Auto 1 -> No change Set Audio to PCM -> No change (WTF!?)

Then I remembered that Plex has its own pass-through setting. After turning that to Off audio came out but only in 2 channel PCM no matter what the TV's Audio setting was (Auto 1, Auto 2, PCM).

@donmelton Yep... this TV is a bit of an odd duck. It's from the first generation of 4k sets and its MediaTek SoC is woefully underpowered. The UI stutters and skips constantly but video playback is smooth so we manage. It did get updated from Android 5 to 7 over the years, so that's good-ish.

FWIW I seem to be the only person on the planet who doesn't have issues with HDMI-CEC. At least that's worked since day 1.

All in all not a huge loss. I'm not super-worried about the size difference.

lisamelton commented 5 years ago

@samhutchins, @JMoVS, @khaosx, @klogg416, @rhapsodians, @damorrison, @vr8hub, @dkoenig01, @ericcardenas, @arikalish, @RodBrown1988, @chrispoole643, @elliotclowes ... and any of our other usual contributors and commenters ...

I have created a Slack workspace for us. Finally! So...

You need to send me an email address with your preferred "full name" (mine is cleverly "Don Melton" as an example) so I can invite you. Because Slack (at least this workspace) is invitation only.

How can you send me your email address? Well, do NOT put it here as a response. :) Instead...

  1. If we already follow each other on Twitter, you can direct message me your preferred name and email address.

  2. Otherwise, just send me an email with that information.

What's my email address? Well, I won't put that here either, but you can figure it out easily from this page:

https://donmelton.com/contact/

Get it? If not, let me know and we'll figure something out.

BTW, if you haven't used Slack before, your email address will become your login after your receive the invitation.

Also, you can let me know your Twitter handle and I'll follow you anyway. I'm easy. :)

lisamelton commented 5 years ago

@samhutchins, @JMoVS BTW, I already sent you two Slack invites since I do know your email addresses. :)

lisamelton commented 5 years ago

OK, I'm heading to bed now because it's officially late thirty here in California. I may rise during the night like a vampire to check email, but it's more likely I'll snore through the next eight hours. So expect invites, if you want them, in the mornin' time.

chrispoole643 commented 5 years ago

@chrispoole643 Thanks for the feedback! And your willingness to embrace change.

To what is your Apple TV connected? A surround-capable TV or amp? Because Plex on your RPi3 should serve up DD+ if it knows it can pass through, and the Apple TV does pass DD+ through.

Straight into a 12 year old LG TV, using its built-in speakers... so I'm sure I'll hear literally no difference. I've been eyeing up the LG C7/8 OLEDs, with a soundbar or full surround setup, just not hit buy yet. So whatever I've been ripping, I've been doing it with future use in mind, clearly. (And I have the Apple TV convert to stereo anyway, right now... TV does support AC3 but there's not much point here.)

rhapsodians commented 5 years ago

@donmelton

You will be drafted for "table" duty when the new Wiki arrives. :) Seriously, that's impressive not just because of the content!

Anytime ... if I can help, count me in :-)

Sweet! I assume that's also provided your final output device can actually handle that format? And if your Denon amp is anything like mine, it can basically play any audio (except maybe multichannel AAC).

Absolutely ... the Denon AVR-X2200W handles most things but most of the time, thanks to video-transcoding, it's taking industry-standard formats. It's rare I'd throw .mov, .avi, vp9 etc. at it because I'm after a simple life of things just working! ;-)

rhapsodians commented 5 years ago

@donmelton

From earlier, I mentioned I built out a set of audio test sequences to see how AC-3 640 and E-AC-3 384 behaved. I also created a new E-AC-3 640 for fun too and have the original BluRay rips in FLAC. For everyone's benefit, it's being played through a Denon AVR-X2200W into Bowers & Wilkins (B&W) M-50s (= 5.1) ... all wired from Synology NAS -> Zotac Win10 Plex Server -> ATV4 -> Denon -> Speakers.

And I finally got to play them at home cinema sound levels as the baby is out 'n' about with his Mum :-) For this test, for once I don't really care about what I'm seeing on screen so effectively listened with my eyes almost closed, concentrating on the sound.

Audio test suite

Sound Stages

Conclusions

Which begs the question: do people really want to save the 30% on the audio file segment and use a more up-to-date codec with almost no downside OR get closer to the BR non-transcoded sound? Up to 20 min ago, I was completely happy with the E-AC-3 384 proposal to replace the AC-3 640 default but having done this test, the E-AC-3 640 option made me question it.

For me, I think I'd prefer the same file size but get better sound v. get the same sound with a slightly reduced file size. Not sure what others think but I was surprised with my finding albeit with a limited test.

rhapsodians commented 5 years ago

Those are all killer test choices, Joe! And, BTW, you have excellent taste. :) Can you add those to the mega-list that @khaosx is compiling in #256?

Thanks Don ... and added to #256 too :-)

damorrison commented 5 years ago

Hi Don

I sent an email for an invite to the Slack team space, and have to admit, got it wrong the first three times, and just checking you got it the 4th time as at least it didn't bounce!

On Tue, 12 Mar 2019 at 02:44, Don Melton notifications@github.com wrote:

@samhutchins https://github.com/samhutchins, @JMoVS https://github.com/JMoVS, @khaosx https://github.com/khaosx, @klogg416 https://github.com/klogg416, @rhapsodians https://github.com/rhapsodians, @damorrison https://github.com/damorrison, @vr8hub https://github.com/vr8hub, @dkoenig01 https://github.com/dkoenig01, @ericcardenas https://github.com/ericcardenas, @arikalish https://github.com/arikalish, @RodBrown1988 https://github.com/RodBrown1988, @chrispoole643 https://github.com/chrispoole643, @elliotclowes https://github.com/elliotclowes ... and any of our other usual contributors and commenters ...

I have created a Slack workspace for us. Finally! So...

You need to send me an email address with your preferred "full name" (mine is cleverly "Don Melton" as an example) so I can invite you. Because Slack (at least this workspace) is invitation only.

How can you send me your email address? Well, do NOT put it here as a response. :) Instead...

1.

If we already follow each other on Twitter, you can direct message me your preferred name and email address. 2.

Otherwise, just send me an email with that information.

What's my email address? Well, I won't put that here either, but you can figure it out easily from this page:

https://donmelton.com/contact/

Get it? If not, let me know and we'll figure something out.

BTW, if you haven't used Slack before, your email address will become your login after your receive the invitation.

Also, you can let me know your Twitter handle and I'll follow you anyway. I'm easy. :)

— You are receiving this because you were mentioned. Reply to this email directly, view it on GitHub https://github.com/donmelton/video_transcoding/issues/270#issuecomment-471829581, or mute the thread https://github.com/notifications/unsubscribe-auth/AAYJDan2FR5itDv0B1WESY6AtmXwPVawks5vVxRxgaJpZM4bngRh .

-- Kind regards, Dave

lisamelton commented 5 years ago

@damorrison I sent you the invite about an hour ago. Do you need me to send another one?

khaosx commented 5 years ago

@donmelton Did you get my email request for Slack?

lisamelton commented 5 years ago

@khaosx D'oh! I missed it earlier. Invitation sent now. My apologies, sir, for the delay.