diff --git a/docs/general/clients/codec-support.md b/docs/general/clients/codec-support.md index be3e5404..f0867df9 100644 --- a/docs/general/clients/codec-support.md +++ b/docs/general/clients/codec-support.md @@ -5,7 +5,7 @@ title: Codec Support # [Codec Tables](https://en.wikipedia.org/wiki/List_of_codecs "Wikipedia's list of all codecs") -The goal is to Direct Play all media. This means the container, video, audio and subtitles are all compatible with the client. If the media is incompatible for any reason, Jellyfin will use FFmpeg to [convert the media](http://howto-pages.org/ffmpeg/) to a format that the client can process. Direct Stream will occur if the audio, container or subtitles happen to not be supported. If the video codec is unsupported, this will result in video transcoding. Subtitles can be tricky because they can cause Direct Stream (subtitles are remuxed) or video transcoding (burning in subtitles) to occur. This is the most intensive CPU component of transcoding. Decoding is less intensive than encoding. +The goal is to Direct Play all media. This means the container, video, audio and subtitles are all compatible with the client. If the media is incompatible for any reason, Jellyfin will [convert the media](http://howto-pages.org/ffmpeg/) to a format that the client can process. Direct Stream will occur if the audio, container or subtitles happen to not be supported. If the video codec is unsupported, this will result in video transcoding. Subtitles can be tricky because they can cause Direct Stream (subtitles are remuxed) or video transcoding (burning in subtitles) to occur. This is the most intensive CPU component of transcoding. Decoding is less intensive than encoding. ## [Video Compatibility](https://en.wikipedia.org/wiki/Comparison_of_video_container_formats "Wikipedia's video codec tables") @@ -13,46 +13,40 @@ The goal is to Direct Play all media. This means the container, video, audio and [Test your browser's compatibility for any codec profile.](https://cconcolato.github.io/media-mime-support/) -| Sorted by efficiency (excluding bit depth) | Chrome | Edge | Firefox | Safari | Android | Android TV | iOS | SwiftFin (iOS) | [Roku](https://developer.roku.com/docs/specs/media/streaming-specifications.md) | Kodi | Jellyfin Media Player | -| ------------------------------------------------------------------------------------------------------------------ | -------------- | -------------- | --------------- | --------------- | -------------- | -------------- | -------------- | --------------- | ------------------------------------------------------------------------------- | ---- | --------------------- | -| [MPEG-4 Part 2/SP](https://en.wikipedia.org/wiki/DivX) | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ✅ | ✅ | ✅ | ✅ | -| [MPEG-4 Part 2/ASP]() | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ✅ | | ✅ | ✅ | -| [H.264 8Bit](https://caniuse.com/#feat=mpeg4 'H264 Browser Support Reference') | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | -| [H.264 10Bit](https://caniuse.com/#feat=mpeg4 'H264 Browser Support Reference') | ✅ | ✅ | ❌ | 🔶12 | ✅ | ✅ | ❌ | ✅ | ❌ | ✅ | ✅ | -| [H.265 8Bit](https://caniuse.com/#feat=hevc 'HEVC Browser Support Reference') | 🔶8 | ✅7 | ✅15 | 🔶1 | 🔶2 | ✅5 | 🔶1 | ✅6 | 🔶9 | ✅ | ✅ | -| [H.265 10Bit](https://caniuse.com/#feat=hevc 'HEVC Browser Support Reference') | 🔶8 | ✅7 | ✅15 | 🔶1 | 🔶2 | 🔶5 | 🔶1 | ✅6 | 🔶9 | ✅ | ✅ | -| [VP9](https://developer.mozilla.org/en-US/docs/Web/Media/Formats/Video_codecs#VP9 'V9 Browser Support Reference') | ✅ | ✅ | ✅ | ✅10 | ✅3 | 🔶3 | ❌ | ✅13 | ✅ | ✅ | ✅ | -| [AV1](https://developer.mozilla.org/en-US/docs/Web/Media/Formats/Video_codecs#AV1 'AV1 Browser Support Reference') | ✅ | ✅ | ✅ | 🔶11 | ✅ | 🔶4 | ❌ | 🔶14 | ✅ | ✅ | ✅ | +| Sorted by efficiency (excluding bit depth) | Chrome | Edge | Firefox | Safari | Android | Android TV | iOS | SwiftFin (iOS) | Roku | Kodi | Jellyfin Media Player | +| ------------------------------------------------------------------------------------------------------------------ | ------ | -------------- | -------------- | -------------- | ------- | -------------- | --- | -------------- | -------------- | ---- | --------------------- | +| [MPEG-4 Part 2/SP](https://en.wikipedia.org/wiki/DivX) | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ✅ | ✅ | ✅ | ✅ | +| [MPEG-4 Part 2/ASP]() | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ✅ | | ✅ | ✅ | +| [H.264 8Bit](https://caniuse.com/#feat=mpeg4 'H264 Browser Support Reference') | ✅ | ✅ | 🔶8 | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | +| [H.264 10Bit](https://caniuse.com/#feat=mpeg4 'H264 Browser Support Reference') | ✅ | ✅ | ❌ | 🔶4 | ✅ | ✅ | ❌ | ✅ | ❌ | ✅ | ✅ | +| [H.265 8Bit](https://caniuse.com/#feat=hevc 'HEVC Browser Support Reference') | 🔶 | 🔶2 | 🔶7 | ✅ | 🔶 | ✅ | ✅ | ✅ | 🔶3 | ✅ | ✅ | +| [H.265 10Bit](https://caniuse.com/#feat=hevc 'HEVC Browser Support Reference') | 🔶 | 🔶2 | 🔶7 | ✅ | 🔶 | 🔶 | ✅ | ✅ | 🔶3 | ✅ | ✅ | +| [VP9](https://developer.mozilla.org/en-US/docs/Web/Media/Formats/Video_codecs#VP9 'V9 Browser Support Reference') | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ❌ | ⚠️5 | ✅ | ✅ | ✅ | +| [AV1](https://developer.mozilla.org/en-US/docs/Web/Media/Formats/Video_codecs#AV1 'AV1 Browser Support Reference') | ✅ | ✅ | ✅ | 🔶 | ✅ | 🔶1 | ❌ | 🔶6 | ✅ | ✅ | ✅ | -1HEVC is only supported in MP4, M4V, and MOV containers. +Legends:
+❌=Not Supported.
+🔶=Support depends on device and/or settings.
+⚠️=Software Decode Only.
+✅=Fully supported (Hardware support with software fallback).

-2Android playback is currently broken. Client reports that HEVC is supported and attempts to Direct Stream. +This table shows the support status of **recent** client software and OS versions. Legacy versions may differ in support. Remuxing due to container compatibility is considered fully supported for this table.

+ +1Needs at least Android TV 10.
-3May be (partially) dependent on Hardware support (can be compensated with CPU decoding on Android). Most new Android phones in the higher price range and many "4K" Android TV devices have VP9 hardware decoding support. Refer to you manufacturer for supported codecs. +2Windows requires the [HEVC video extension from Microsoft Store](https://apps.microsoft.com/detail/9nmzlz57r3t7).
-4Needs at least Android TV 10. +3HEVC decoding is only supported on 4K devices.
-5As of version 0.12, HEVC is enabled on all devices running Android 5.0+, but early generations of the Amazon Fire may not work yet. 10Bit may be supported depending on your device. Before Client 0.12, HEVC support was enabled on specific devices. +4Needs to be manually enabled in Settings > Playback > Enable H.264 High 10 Profile. Requires macOS >= 14 and Apple Silicon.
-6HEVC decoding is supported on Apple devices with the A8X chip or newer and at least iOS 14. +5VP9 is only available with Swiftfin (VLCKit) player.
-7HEVC decoding is only supported on Windows 10 with the HEVC Video Extension from the Microsoft store. +6AV1 is enabled by default for Swiftfin (VLCKit). AV1 is disabled by default for Native (AVKit). Enabling AV1 may result in a poor experience for older devices.
-8Chromium 107 does support HEVC decoding when HEVC hardware decoding is available. +7Windows requires the [HEVC video extension from Microsoft Store](https://apps.microsoft.com/detail/9nmzlz57r3t7). Linux requires system ffmpeg for support.
-9HEVC decoding is only supported on 4K devices. -
-10VP9 decoding on Safari requires at least Safari 14. -
-11AV1 decoding is only available on devices with A17 or M3 series chips or newer and requires at least Safari 17. -
-12Need to be manually enabled in Settings > Playback > Enable H.264 High 10 Profile. Playback on Apple Silicon Macs with macOS version < 14 and Intel Macs with all macOS versions may result in blank frames if this is enabled. -
-13VP9 is only available with Swiftfin (VLCKit) player. -
-14AV1 is enabled by default for Swiftfin (VLCKit). AV1 is disabled by default but can be enabled for Native (AVKit) using Custom Device Profiles. Enabling AV1 may result in a poor experience for SOCs prior to A17. -
-15Requires Firefox 134+ for Windows, 136+ for macOS, and 137+ for Linux. On Windows 11 22H2+ and Windows 10 1507-1709, you can play H.265 (HEVC) video natively. Windows 10 1803+ and Windows 11 21H2 need the [HEVC video extension from Microsoft Store](https://apps.microsoft.com/detail/9nmzlz57r3t7). Linux requires system ffmpeg for support. +Some Linux distributions provide a Firefox package that does not have H264 support, causing transcoding to be required. You may need to install additional packages on these system. The most obvious symptom is Jellyfin attempting to transcode to VP9. [Format Cheatsheet:](https://en.wikipedia.org/wiki/MPEG-4#MPEG-4_Parts) @@ -198,7 +192,7 @@ If the container is unsupported, this will result in remuxing. The video and aud | Container | Chrome | Edge | Firefox | Safari | Android | Android TV | Kodi | Roku | | :-------------------------------------------------------------------: | :----: | :--: | :-----: | :----: | :-----: | :--------: | :--: | :--: | | [MP4](https://en.wikipedia.org/wiki/MPEG-4_Part_14)1 | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | -| [MKV](https://en.wikipedia.org/wiki/Matroska)2, 3, 8, 9 | ✅ | ✅ | ❌ | ❌ | ✅ | ✅ | ✅ | ✅ | +| [MKV](https://en.wikipedia.org/wiki/Matroska)2, 3, 8, 9 | ✅ | ✅ | ❌ | ❌ | ✅ | ✅ | ✅ | ✅ | | [WebM](https://en.wikipedia.org/wiki/WebM)3, 5, 6 | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | | [TS](https://en.wikipedia.org/wiki/MPEG_transport_stream)4 | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | | [OGG](https://en.wikipedia.org/wiki/Ogg)5, 7 | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ |