XBOX One S 4k hevc/ac3 Direct play for a minute then override Transcode

xbox-one

#1

Ive gotten my Xbox One S to play Hevc 4k, ac3, HDR files somewhat fine... Except that after a minute (or so) it starts buffering, and I kan see that its changed from Direct Play to Transcode.
My question is, why does it change after a minute? - I can easely stop the playback, and resume it from where it started to transcode, and it will Direct play fine again for a minute or so...

Hope some one can cast some light on this annoying subject :)

Regards, Michael


#2

Ive made some progress on this matter:

I "solved it" (or rather worked around it) by remux'ing the file to mp4. - I loose subs, but I dont use them anyway, ang I cant stor any HD audio in the mp4 container. So I rip them from the mkv and store them seperatly I might need them later. An added bonus is, that I can transcode HD audio to EAC3 format, which supports 24bit and up to ~6000k bitrate - way better then AC3.

/Michael


#3

I'm having the same issue on my One S also - I get Direct Play with h265 and an AC3 audio track for at most 20 mins, then it begins transcoding to h264, and degrading in quality obviously.

My typical encode is an AC3 main track for support and an HD 2nd track for when I need it. I tried as you posted @miheni, by removing all HD audio tracks from the .mp4, but still no go.


#4

Hi there. If you're noticing an change from direct play/stream to transcode during playback then it's likely because the player has encountered a non-recoverable error during playback and has fallen back to a transcode in order to continue.

@OkelV You need to enable logging in the Plex for Xbox One app first, but when you do so I'm certain you'll find messages relating to the behaviour I've described above.


#5

Oops, my bad @Moussa, didn't realize I had exited the Xbox session before doing the logs.

Here's the logs after the issue is reproduced.


#6

@OkelV The WARN - [ui-edge-winvergo] [Player] A critical HTML media error occurred: 3 (Decode); the player cannot recover line in your logs is the smoking gun. That's the Xbox One player stack telling us that it cannot decode that part of the video and therefore cannot continue. We force a transcode in order to continue.


#7

Hey guys

Moussa, I figured that might be a cause... But it should not be the video stream that causes issues, as the exact same stream plays fine when in a mp4 container.


#8

Btw... Another oberservation.
One file keeps bufferen every 10-20 seconds or so in a mp4 container, but I'm able to play the videostream for a full minute i a mkv container (before it starts to transcode qua the above issue)...
Ive played other files with a higher combined bitrate without buffering.


#9

It’s possible that there was some corruption in the original mkv container that the player didn’t like. If you remux the file into a new mkv container does it play fine past the problematic point?

We’re investigating the buffering issues some users are experiencing.


#10

@Moussa said:
That's the Xbox One player stack telling us that it cannot decode that part of the video and therefore cannot continue. We force a transcode in order to continue.

So what's causing this error then if it's happening with all my HEVC content on the Xbox, but not on my Intel NUC?


#11

@Moussa said:
It’s possible that there was some corruption in the original mkv container that the player didn’t like. If you remux the file into a new mkv container does it play fine past the problematic point?

We’re investigating the buffering issues some users are experiencing.

I dont think so, but I'll try to mux the working mp4 back to an mkv and see if that works.


#12

What tool are you guys using to remux your content? I'm really wanting mine to not to transcode and play HDR, very frustrating.


#13

ffmpeg... It'll do anyting :)
You'll need to spend a little time to get to know the commands, but it's quite easy...

I use ffprobe to get info on the streams (ex. 0:0 is video, 0:1 is HD audio, 0:2 is AC3).

Then I use: ffmpeg -i [input file] -map 0:0 -map 0:1 -map 0:1 -c:v copy -c:a:0 eac3 -ba 6000k -c:a:1 [output file]

The "map" commands selets streams - in this case I take the HD audio twice, and uses -c:v to copy video stream unmodified, -c:a:0 recodes HD audio to EAC3 high bitrate (6M/s - only compatible with mp4 container, not mkv), and the -c:a:1 stores a copy of the HD audio as a second audio stream.
To select to remux to mkv or mp4, simply just set the right extension on the file (.mkv or .mp4) ffmpeg will figure it out :)

/Michael


#14

@miheni said:
ffmpeg... It'll do anyting :)
You'll need to spend a little time to get to know the commands, but it's quite easy...

I use ffprobe to get info on the streams (ex. 0:0 is video, 0:1 is HD audio, 0:2 is AC3).

Then I use: ffmpeg -i [input file] -map 0:0 -map 0:1 -map 0:1 -c:v copy -c:a:0 eac3 -ba 6000k -c:a:1 [output file]

The "map" commands selets streams - in this case I take the HD audio twice, and uses -c:v to copy video stream unmodified, -c:a:0 recodes HD audio to EAC3 high bitrate (6M/s - only compatible with mp4 container, not mkv), and the -c:a:1 stores a copy of the HD audio as a second audio stream.
To select to remux to mkv or mp4, simply just set the right extension on the file (.mkv or .mp4) ffmpeg will figure it out :)

/Michael

I'm trying to get your command to work (boy am I being tested getting 4k to work on the One S) and ran this:

ffmpeg -i Oblivion\ \[2160p\ HEVC\ AtmosTrueHD\ 8ch\].mkv -map 0:0 -map 0:1 -map 0:1 -c:v copy -c:a:0 eac3 -ba 6000k -c:a:1 Oblivion\ \[2160p\ HEVC\ AtmosTrueHD\ 8ch\]_test.mp4 

But I get this error in return:

Unrecognized option 'ba'.
Error splitting the argument list: Option not found

So I tried

ffmpeg -i Oblivion\ \[2160p\ HEVC\ AtmosTrueHD\ 8ch\].mkv -map 0:0 -map 0:1 -map 0:1 -c:v copy -c:a:0 eac3 -b:a 6000k -c:a:1 Oblivion\ \[2160p\ HEVC\ AtmosTrueHD\ 8ch\]_test.mp4 

And get:

At least one output file must be specified

So I tried:

ffmpeg -i Oblivion\ \[2160p\ HEVC\ AtmosTrueHD\ 8ch\].mkv -map 0:0 -map 0:1 -map 0:1 -c:v copy -c:a:0 eac3 -b:a 6000000 -c:a:1 Oblivion\ \[2160p\ HEVC\ AtmosTrueHD\ 8ch\]_test.mp4 

...and get the same. Same goes for trying an mkv container. Am I missing something in the command?


#15

You could use an ffmpeg GUI frontend If the command line is too difficult for you.

Have a search for the top contenders. Avanti and QWinFF are free. myFFmpeg is a great one and has a free trial also.

There's many to choose from.


#16

So I tried:

ffmpeg -i Oblivion\ \[2160p\ HEVC\ AtmosTrueHD\ 8ch\].mkv -map 0:0 -map 0:1 -map 0:1 -c:v copy -c:a:0 eac3 -b:a 6000000 -c:a:1 Oblivion\ \[2160p\ HEVC\ AtmosTrueHD\ 8ch\]_test.mp4 

...and get the same. Same goes for trying an mkv container. Am I missing something in the command?

Hmmm "Oblivion\ [2160p\ HEVC\ AtmosTrueHD\ 8ch]_test.mp4" doesnt seem right, shouldnt it be: "Oblivion[2160p\ HEVC\ AtmosTrueHD\ 8ch]_test.mp4" (gaps removed after oblivion) - the same seems to be wrong with the input string.


#17

@Moussa Do you think the buffering issues and the error/transcodes myself and @miheni are getting have any correlation?

Like I said the same HEVC files are playing fine on my Intel NUC Web App and also my parents Samsung Smart TV Plex App. It's just my Xbox One S having these issues for some reason.


#18

I’ve got exactly the same problem with my Xbox One X, 10/20 seconds into a 4K direct stream (MKV -> MP4) it buffers and then switches over to transcoding. This happens with every 4K MKV I have when playing on the Xbox One X, but on the Nvidia Shield direct play works perfectly


#19

I have done similar testing that i talked about in this thread: http://forums.plex.tv/discussion/319867/all-4k-hevc-content-is-being-transcoded-why

I found the same results Xbox and MKV with HEVC does not work, MP4 does but leads to the previously discussed buffering issue.


#20

+1 here. Any updates?