Proper HEVC file encoding on macOS hev1 or hvc1?

I have a newer iMac and according to Plex it’s not powerful enough to transcode and stream one 1080p movie. This seems wrong.

The Playback settings on the remote device:
Quality: Original (2.2 Mbps, 1080p HD)
Audio Stream (ACC 5.1)
subtitles .srt

I have set quality to “Maximum” so there shouldn’t be transcoding. Upload speed of server is 1 Gbps.

My library is mostly made up of 1080p H265 hev1 mp4 2300 kb/s overall bit rate files. On the surface these files are compatible with Plex and play locally without issue - but there appears to be an underlying streaming issue that causes problems when a file “needs” to be transcoded because the remote connection is “too slow”.

The files I have were all encoded using hev1. This is not an encoding format that Apple likes. For instance QuickTime will only play hvc1 encoded H265 files.

I realize that Plex uses different software for decoding and encoding but I am wondering…

Today I took a file that I could not play remotely and re-encoded it to hvc1 and sure enough it played remotely without issue and without transcoding.

I know there could be other variables involved but I am wondering if anyone can confirm what I am speculating.

The info on file compatibility

Essentially

‘hev1’/‘hvc1’ are code points used to signal different packaging of the stream in the container mp4 file. There is no change in the coding itself. It is possible to round trip between the two modes. Try with mp4box :

mp4box -raw 1 file.mp4

This will extract the stream into a raw HEVC file.

mp4box -add file_track1.hvc output.mp4

This will reimport the stream using hvc1 if it can.

As far as I can tell, Plex supports hev1 and hvc1 equally.

I have many hev1 MP4 video files that work well in Plex, on both Apple and non-Apple clients.

You say that you re-encoded the file and then it worked. Did you re-encode the video, or remux and change the codec tag? If you re-encoded, I suspect another variable.

Quick conversion to HVC1, no re-encoding or quality loss:

ffmpeg -i infile-hev1.mp4 -tag:v hvc1 -c:v copy -bsf:v hevc_mp4toannexb -c:a copy -c:s copy -map 0 outfile-hvc1.mp4

(Or remux it to MKV and avoid the whole question!)

Share server logs or a sample of the non-working file, if you like.

Hi, thanks for the response.

I used the commands above first with mp4box for just the video with no audio to test.

mp4box -raw 1 file.mp4

mp4box -add file_track1.hvc output.mp4

Which was much faster then using ffmpeg (which took about 3 minutes) with the command below

ffmpeg -i movie.mp4 -c:v copy -tag:v hvc1 -c:a copy movie-hvc1.mp4

I cut and paste the commands (because I am a novice) but believe the file wasn’t re-encoded or muxed just encoded? I’ll have to edit my OP.

The file works fine on the desktop, just seems to be a streaming issue. I’ve set everything to Maximum with no transcoding but the server will attempt to transcode and then say it’s not powerful enough. I converted this same movie to play on mobile devices and it was saved as an H264 file that was far larger than the original and that wouldn’t stream either.

I would expect both of those commands to be pretty similar. The mp4box process extracts the video, which happens at almost “copy” speeds, and then muxes it, which also happens at almost “copy” speeds. The ffmpeg command extracts-and-writes in one step - if anything it should be faster.

I’d love to see a sample of the file. Or share server logs.

Using Optimize ... in Plex? That always uses H.264 so it’s not uncommon for it to produce a larger file, but it certainly should play.

You haven’t checked SettingsTranscodingDisable video stream transcoding, have you?

Oh man… I don’t know what to check and uncheck. I did disable because movies were being transcoded that should have just played based on the movie/audio/subtitle filetypes, the bit rate, and my connection speeds.

I can provide you with Media Info on the file. I can provide server logs but will have to dig through those to find the specific incident

Disable video stream transcoding won’t ever help force anything to play directly. It won’t make Plex “try harder” to play. :slight_smile: But it means that if Plex decides transcoding is necessary, since it is disabled, it will fail.

I also think there are some bugs with that checkbox - it sometimes causes Optimize ... jobs to break. I strongly recommend not checking that box.

For server logs, it might be easier to reproduce the playback problem, instead of finding a past example?

Also I think I might have lied about hev1 and hvc1 not mattering. I do see different behavior when the old/AVPlayer is used on an iPhone/iPad/ATV. There’s a Use Old Video Player setting in those apps.

And AVPlayer is also automatically used for some Dolby Vision MP4 playback.

So the Media Info from your examples would be very interesting!

Is this a screen recording? Guessing from the aspect ratio and rc=abr. No reason to think that’s a problem, just curious.

Do you see anything in the media info that would prevent it from streaming properly?

Nope! Share a sample? PM me if you like.

This topic was automatically closed 90 days after the last reply. New replies are no longer allowed.