Multiple codec m3u8 playlist not working

Hi, this is my m3u8 playlist at the moment:
#EXTM3U
#EXT-X-VERSION:6
#EXT-X-STREAM-INF:BANDWIDTH=8263200,RESOLUTION=1920x960
stream_0/playlist.m3u8

#EXT-X-STREAM-INF:BANDWIDTH=2411200,RESOLUTION=1280x640,CODECS=“avc1.4d401f,mp4a.40.2”
stream_1/playlist.m3u8

The 1920x960 track is hevc, 1280x640 is h264. Bitmovin player on my website does not show the quality selector, but if I remove the 1280x640 track it does play correctly the HEVC one. Why’s that? Isn’t it possible to have more than one codec in the same m3u8? I’ve also set the playback config correctly: videoCodecPriority: [‘hevc’, ‘hev’, ‘hvc’, ‘avc’]

What am I doing wrong? I’ve also tried placing CODECS=“hvc1” at the end of the first stream in the .m3u8 file, but nothing happened

Hi,
Adding the CODECS field with the correct codec string (video and audio) should work.
Please feel free to share a working stream in order for us to give it a try and see if there is any other issue that could explain this behaviour.

But I already tried adding CODECS=“hvc1”… it didn’t work. I used hevc_nvenc with ffmpeg to convert the video, should I use write something else in the CODECS field?

Thanks for confirming.
At this point, I don’t know what else could cause the issue, so I would need access to the test stream in order to dive any further.
Please feel free to share a link or to invite me to a share point (google drive etc) where I can download the stream. My email address : ludovic.michaud@bitmovin.com

Hi @itzgeek77,

I strongly recommend taking a look at Apple’s HLS Authoring Specifications: HTTP Live Streaming (HLS) authoring specification for Apple devices | Apple Developer Documentation

The relevant parts in this particular case are:

9.1. Your EXT-X-STREAM-INF tag MUST always provide the CODECS attribute.

You’re already doing this for the AVC rendition, but not for HEVC. Please add the correct CODECS attribute to all EXT-X-STREAM-INF tags, as @ludovic.michaud already mentioned.
In addition:

1.23. * If multiple video streams are provided (H.264, HEVC, HDR), each stream SHOULD provide all anticipated bandwidths. Clients SHOULD NOT be required to switch codecs.

A player is not expected to dynamically switch during playback between HEVC and AVC content. On many (most) devices and platforms, this wouldn’t work smoothly. Instead, you should provide all renditions in all codecs.

If you follow these two points, I think you should get the experience you’re looking for.

One side note: Please keep in mind that the Bitmovin Player leverages the system’s decoder, so for HEVC to be supported, the system/browser needs to support it.