Server Version#: 1.19.4.2865
Player Version#: 8.1.0.17967
I’ve been having some weird issues with playing some files on my Phone. I’m using a Google Pixel 4 and watching a 1080p H.264 mkv with EAC3 audio always results in full transcoding.
Looking at the playback info on the phone it seems that Transcoding is being done because E-AC3 is not supported by the device, but then, why is it not Direct Streaming the video and just transcoding the audio? Playing the same file over Plex web is successfully direct streaming the video and transcoding the audio (as Plex Web on Chrome also does not support E-AC3 audio).
Bonus points for mentioning the local time when you pressed Playback and the title of the played video. It helps to find the relevant lines on busy servers.
I do want to point out something I find interesting in the server logs:
May 29, 2020 16:38:19.825 [0x7f4d4ffff700] Debug — Codecs: Testing with profile ‘High’
May 29, 2020 16:38:19.825 [0x7f4d4ffff700] Debug — Scaled up video bitrate to 14856Kbps based on 1.500000x fudge factor.
May 29, 2020 16:38:19.826 [0x7f4d4ffff700] Debug — MDE: Selected protocol hls; container: mkv
May 29, 2020 16:38:19.826 [0x7f4d4ffff700] Debug — MDE: analyzing media item 1205
May 29, 2020 16:38:19.826 [0x7f4d4ffff700] Debug — MDE: E3 - Lost City of Life: Direct Play is disabled
May 29, 2020 16:38:19.826 [0x7f4d4ffff700] Debug — MDE: E3 - Lost City of Life: media must be transcoded in order to use the hls protocol
May 29, 2020 16:38:19.826 [0x7f4d4ffff700] Debug — MDE: E3 - Lost City of Life: no direct play video profile exists for http/mkv/h264
May 29, 2020 16:38:19.826 [0x7f4d4ffff700] Debug — MDE: E3 - Lost City of Life: no direct play video profile exists for http/mkv/h264/eac3
May 29, 2020 16:38:19.826 [0x7f4d4ffff700] Debug — Lost City of Life - video.profile limitation applies: high != baseline [list]
May 29, 2020 16:38:19.826 [0x7f4d4ffff700] Debug — Lost City of Life - video.profile limitation applies: high != baseline [list]
May 29, 2020 16:38:19.826 [0x7f4d4ffff700] Debug — MDE: E3 - Lost City of Life: no remuxable profile found, so video stream will be transcoded
May 29, 2020 16:38:19.826 [0x7f4d4ffff700] Debug — Lost City of Life - video.profile limitation applies: high != baseline [list]
May 29, 2020 16:38:19.826 [0x7f4d4ffff700] Debug — MDE: Cannot direct stream video stream due to profile or setting limitations
May 29, 2020 16:38:19.826 [0x7f4d4ffff700] Debug — Codecs: testing h264 (decoder) with hwdevice vaapi
May 29, 2020 16:38:19.826 [0x7f4d4ffff700] Debug — Codecs: hardware transcoding: testing API vaapi
Thanks for the logs, looking at them it seems like your device doesn’t support H264 High Profile as such it has no choice but to transcode the video stream into baseline so it can be played on your device successfully. Checking on a Pixel 4 XL and it does seem like the High profile for AVC / H264 is not supported sadly.
With the server logs and the missing profiles, this is because the Android client dictates the profile information to the server due to the amount of Android devices there is we can’t have a “one size fits all” profile for them.
Thank you for the response. Makes sense now. It’s disappointing that the Pixel doesn’t support High Profile. I wouldn’t have expected it.
Does the Profile level in the Player advanced settings have any influence in the capabilities of the phone? It seems that profile level 5.2 is recommended. I don’t really know the difference between profiles and levels…
Can I also point out that if I install MX Player and configure it to only use HW decoder (not HW+, so technically will only limit to capabilities of the phone) and configure Plex to use external player, the file in question works just fine, with Direct Play enabled.
So I do wonder if it’s not actually the phone but what Plex believes the phone is capable…
It is surprising that its not supported, usually the full High profile isn’t supported but a constrained High profile is available which would allow playback of most files (except maybe 4K ones).
That’s interesting that MX Player works, when checking another Pixel 4 we used a media codec query app to determine the codecs and profiles that the device supports. Would you be able to grab the logs from MX Player and I might be able to understand what is happening (feel free to DM them to me).
It might be possible for us to ignore the constraints and force playback through, however that can be tricky to do as we’re technically going above the capabilities that the device reports. You could try increasing the H264 level and seeing if this makes a difference, I don’t expect it would though as its only overriding the level.
Would you be able to produce a sample that fails to direct play on the Pixel 4? One of our engineers has a Pixel 4 and has been testing with some H264 High profile videos and they all direct play correctly including the Jellyfish files, despite the Pixel 4 saying High is not supported. It could be that the video your trying is a very High version that the Pixel 4 can’t handle or something else is causing playback to fail.
I need to see if I can crop a small portion of two videos that I have, one that direct plays, another that transcodes. The main difference between them is that one is AC3 the other is E-AC3. Attached is MediaInfo export. File named Cosmos.txt transcodes, file name Morning.txt direct plays.
These are the two examples that made me believe that EAC3 is the reason for complete transcoding, and not the High Profile… (though one is L4, the other is L4.1, but the limit on the phone is 5.2)
General
Unique ID : 319417884834157672053757133926149541156 (0xF04DA59C6286FDE8F87B5D2BF43E4D24)
Complete name : Z:\Docu\Cosmos (2014)\Season 2\Cosmos.Possible.Worlds.S02E01.Ladder.to.the.Stars.REPACK.1080p.WEBRip.x264-CAFFEiNE.mkv
Format : Matroska
Format version : Version 4
File size : 3.24 GiB
Duration : 43 min 55 s
Overall bit rate : 10.6 Mb/s
Encoded date : UTC 2020-03-12 21:11:01
Writing application : mkvmerge v43.0.0 ('The Quartermaster') 64-bit
Writing library : libebml v1.3.10 + libmatroska v1.5.2
Video
ID : 3
Format : AVC
Format/Info : Advanced Video Codec
Format profile : High@L4.1
Format settings : CABAC / 5 Ref Frames
Format settings, CABAC : Yes
Format settings, Reference frames : 5 frames
Codec ID : V_MPEG4/ISO/AVC
Duration : 43 min 55 s
Bit rate : 9 933 kb/s
Width : 1 920 pixels
Height : 1 080 pixels
Display aspect ratio : 16:9
Frame rate mode : Constant
Frame rate : 24.000 FPS
Color space : YUV
Chroma subsampling : 4:2:0
Bit depth : 8 bits
Scan type : Progressive
Bits/(Pixel*Frame) : 0.200
Stream size : 3.05 GiB (94%)
Writing library : x264 core 158 r2984 3759fcb
Encoding settings : cabac=1 / ref=5 / deblock=1:-3:-3 / analyse=0x3:0x113 / me=hex / subme=8 / psy=1 / psy_rd=1.00:0.00 / mixed_ref=1 / me_range=16 / chroma_me=1 / trellis=2 / 8x8dct=1 / cqm=0 / deadzone=21,11 / fast_pskip=1 / chroma_qp_offset=-2 / threads=34 / lookahead_threads=5 / sliced_threads=0 / nr=0 / decimate=1 / interlaced=0 / bluray_compat=0 / constrained_intra=0 / bframes=3 / b_pyramid=2 / b_adapt=2 / b_bias=0 / direct=3 / weightb=1 / open_gop=0 / weightp=2 / keyint=250 / keyint_min=25 / scenecut=40 / intra_refresh=0 / rc_lookahead=50 / rc=crf / mbtree=1 / crf=17.0 / qcomp=0.60 / qpmin=0 / qpmax=69 / qpstep=4 / ip_ratio=1.40 / aq=1:1.00
Language : English
Default : Yes
Forced : No
Color range : Limited
Matrix coefficients : BT.709
Audio
ID : 1
Format : E-AC-3
Format/Info : Enhanced AC-3
Commercial name : Dolby Digital Plus
Codec ID : A_EAC3
Duration : 43 min 55 s
Bit rate mode : Constant
Bit rate : 640 kb/s
Channel(s) : 6 channels
Channel layout : L R C LFE Ls Rs
Sampling rate : 48.0 kHz
Frame rate : 31.250 FPS (1536 SPF)
Compression mode : Lossy
Delay relative to video : 200 ms
Stream size : 201 MiB (6%)
Language : English
Service kind : Complete Main
Default : Yes
Forced : No
Text
ID : 2
Format : UTF-8
Codec ID : S_TEXT/UTF8
Codec ID/Info : UTF-8 Plain Text
Duration : 42 min 59 s
Bit rate : 76 b/s
Count of elements : 614
Stream size : 23.9 KiB (0%)
Language : English
Default : No
Forced : No
Morning:
General
Unique ID : 186112778490970041887473061068156121101 (0x8C04046E9E0A8D893504E491399F300D)
Complete name : Z:\TV Shows\The Morning Show\Season 1\The.Morning.Show.S01E01.In.the.Dark.Night.of.the.Soul.it's.Always.330.in.the.Morning.1080p.ATVP.WEB-DL.DD5.1.H.264-MZABI.mkv
Format : Matroska
Format version : Version 4
File size : 4.59 GiB
Duration : 1 h 3 min
Overall bit rate : 10.3 Mb/s
Encoded date : UTC 2019-11-02 17:32:50
Writing application : mkvmerge v34.0.0 ('Sight and Seen') 64-bit
Writing library : libebml v1.3.7 + libmatroska v1.5.0
Video
ID : 1
Format : AVC
Format/Info : Advanced Video Codec
Format profile : High@L4
Format settings : CABAC / 4 Ref Frames
Format settings, CABAC : Yes
Format settings, Reference frames : 4 frames
Codec ID : V_MPEG4/ISO/AVC
Duration : 1 h 3 min
Bit rate : 9 950 kb/s
Width : 1 920 pixels
Height : 960 pixels
Display aspect ratio : 2.000
Frame rate mode : Constant
Frame rate : 23.976 (24000/1001) FPS
Color space : YUV
Chroma subsampling : 4:2:0
Bit depth : 8 bits
Scan type : Progressive
Bits/(Pixel*Frame) : 0.225
Stream size : 4.42 GiB (96%)
Default : Yes
Forced : No
Color range : Limited
Color primaries : BT.709
Transfer characteristics : BT.709
Matrix coefficients : BT.709
Audio
ID : 2
Format : AC-3
Format/Info : Audio Coding 3
Commercial name : Dolby Digital
Codec ID : A_AC3
Duration : 1 h 3 min
Bit rate mode : Constant
Bit rate : 384 kb/s
Channel(s) : 6 channels
Channel layout : L R C LFE Ls Rs
Sampling rate : 48.0 kHz
Frame rate : 31.250 FPS (1536 SPF)
Compression mode : Lossy
Stream size : 175 MiB (4%)
Language : English
Service kind : Complete Main
Default : Yes
Forced : No
Text #1
ID : 3
Format : UTF-8
Codec ID : S_TEXT/UTF8
Codec ID/Info : UTF-8 Plain Text
Duration : 59 min 59 s
Bit rate : 84 b/s
Count of elements : 881
Stream size : 37.3 KiB (0%)
Language : English
Default : No
Forced : No
Text #2
ID : 4
Format : UTF-8
Codec ID : S_TEXT/UTF8
Codec ID/Info : UTF-8 Plain Text
Duration : 1 h 0 min
Bit rate : 92 b/s
Count of elements : 990
Stream size : 40.6 KiB (0%)
Title : SDH
Language : English
Default : No
Forced : No
Note:
'Pre-Formatted Text - Message options = nicer display of data right in the message.
Yes, this video stream is invalidly tagged. Plex will store the actual H.264 level (which would be 5.0, AFAIR), into its database during the stream analysis.
So if you look at the Plex XML info of this video, it will tell a different story.
5 ref frames is pushing the envelope - maybe enough for your finger to poke through on a phone, but I’ve never had an issue with 5 on anything else. I don’t encode at 5 for 1080p, that’s certain:
The device is authorized to (try and) play L 5.2 - that’s not saying it can actually do it.
The actual level of the material is 4.0 and 4.1 respectfully and the 4.1 is the one with 5 ref frames - not perfect, but not horrible - if the phone can play it.
Indications are the phone won’t play E-AC3.
Mine won’t.
I’m not surprised.
Mine will play 1080 @ 4.1 with 5 ref frames, but E-AC3 is right out.
So aren’t we back to sqare 1 with the audio being the cause for the transcoding, and the initial question “Why doesn’t the video direct stream and the audio transcode?”