• Login
  • Register
  • Login Register
    Login
    Username/Email:
    Password:
    Or login with a social network below
  • Forum
  • Website
  • GitHub
  • Status
  • Translation
  • Features
  • Team
  • Rules
  • Help
  • Feeds
User Links
  • Login
  • Register
  • Login Register
    Login
    Username/Email:
    Password:
    Or login with a social network below

    Useful Links Forum Website GitHub Status Translation Features Team Rules Help Feeds
    Jellyfin Forum Support General Questions IPTV, HEVC Settings

     
    • 0 Vote(s) - 0 Average

    IPTV, HEVC Settings

    What are the best settings for HEVC streams?
    pixel24
    Offline

    Member

    Posts: 196
    Threads: 56
    Joined: 2023 Aug
    Reputation: 1
    Country:Germany
    #1
    2024-12-26, 01:24 PM
    Hi,

    First of all, Merry Christmas to everyone! 😊
    I recently set up my IPTV system. I installed Streammaster and integrated both the stream and EPG data. The URLs provided by Streammaster were added to Jellyfin. Most of the streams are in HEVC format. In Jellyfin, I’ve configured hardware transcoding using an NVIDIA GPU with its driver.

    I need some help understanding transcoding. The stream from Streammaster comes in HEVC format. I’ve enabled hardware transcoding for this codec, meaning that the encoding is handled by the NVIDIA GPU (with its driver) in hardware, which is faster than software encoding via the CPU. Is that correct so far?
    How or in what format (codec) does Jellyfin send the stream to the client? On my client (Linux Mint 21.3), I’m using Jellyfin Media Player (1.11.1). In its settings, there are several parameters related to the video format, etc. What are the best configurations here?

    If I understand correctly, it’s generally a good idea to set the parameters so that the server does most of the "work," preparing the data to minimize bandwidth usage and reduce resource consumption on the client side.

    Or am I misunderstanding this?

    with best
    TheDreadPirate
    Offline

    Community Moderator

    Posts: 15,375
    Threads: 10
    Joined: 2023 Jun
    Reputation: 460
    Country:United States
    #2
    2024-12-26, 07:28 PM (This post was last modified: 2024-12-26, 07:28 PM by TheDreadPirate. Edited 1 time in total.)
    Keep in mind that transcoding only happens when the client needs it. If the client can play the media as is, the server will just send the media unmodified. If the source is IPTV, and the client can play it directly, the client will directly connect to the IPTV source instead of going through the server. Unless you force all clients to go through the server for IPTV.

    If you have a desktop PC with decent specs running Jellyfin Media Player, it should direct play most files and IPTV streams. You shouldn't need to fiddle with any of the JMP settings, except in certain edge cases.
    Jellyfin 10.10.7 (Docker)
    Ubuntu 24.04.2 LTS w/HWE
    Intel i3 12100
    Intel Arc A380
    OS drive - SK Hynix P41 1TB
    Storage
        4x WD Red Pro 6TB CMR in RAIDZ1
    [Image: GitHub%20Sponsors-grey?logo=github]
    pixel24
    Offline

    Member

    Posts: 196
    Threads: 56
    Joined: 2023 Aug
    Reputation: 1
    Country:Germany
    #3
    2024-12-27, 08:54 AM
    Okay, I wasn’t aware of that. My laptop, running Linux Mint 21.3, has a hybrid graphics setup. Look here:

    Code:
    lspci|grep VGA
    00:02.0 VGA compatible controller: Intel Corporation CoffeeLake-H GT2 [UHD Graphics 630]
    01:00.0 VGA compatible controller: NVIDIA Corporation GP107GLM [Quadro P1000 Mobile] (rev a1)

    I’ve installed the NVIDIA driver version 550.120 and enabled the "Performance Mode." This means the client doesn’t need transcoding for HEVC streams.
    You mentioned that in this case, the client connects directly to the IPTV source and doesn’t pass through the server. In this context, the IPTV source would be Streammaster, correct?
    TheDreadPirate
    Offline

    Community Moderator

    Posts: 15,375
    Threads: 10
    Joined: 2023 Jun
    Reputation: 460
    Country:United States
    #4
    2024-12-27, 09:51 PM
    The client only directly connects to the IPTV source is the client doesn't require transcoding or remuxing of the IPTV stream.  When you play it, the dashboard should indicate the playback method.  And the client can also display the playback method.

    Here is an example when I use my browser to watch this live TV stream.  It requires remuxing, which means that the client (browser) connects to the server while the server connects to the IPTV source.

       

    When I watch the same stream via Jellyfin Media Player it is direct playing.  Netstat confirms it is going directly to the IPTV provider.

       
    Jellyfin 10.10.7 (Docker)
    Ubuntu 24.04.2 LTS w/HWE
    Intel i3 12100
    Intel Arc A380
    OS drive - SK Hynix P41 1TB
    Storage
        4x WD Red Pro 6TB CMR in RAIDZ1
    [Image: GitHub%20Sponsors-grey?logo=github]
    pixel24
    Offline

    Member

    Posts: 196
    Threads: 56
    Joined: 2023 Aug
    Reputation: 1
    Country:Germany
    #5
    2024-12-28, 09:27 AM (This post was last modified: 2024-12-28, 09:28 AM by pixel24. Edited 1 time in total.)
    Thank you for the clarification; I had to look up what "remuxing" means, but now I understand.
    However, something seems to be wrong with my settings. In Jellyfin, I have enabled transcoding according to the NVIDIA support matrix (see screenshots).
    When I play a channel that delivers HEVC content in the Jellyfin client on my laptop (with an NVIDIA card), it runs perfectly. But when I try to play the same channel on my Android device using the stock app, only a spinning circle appears, and nothing happens.
    I tried to locate the error by examining the log files:
    • /var/log/jellyfin/jellyfin20241228.log
    • /var/log/jellyfin/FFmpeg.Transcode-2024-12-28_10-21-01__7cb00f30.log
    • /var/log/jellyfin/FFmpeg.Remux-2024-12-28_10-00-44_54fb42b3ab3d0cf73dd65be3df25adad_e7473f04.log

    But I cannot pinpoint the issue.

    Code:
    root@media02:/var/log/jellyfin# tail -f jellyfin20241228.log FFmpeg.Transcode-2024-12-28_10-21-01__7cb00f30.log FFmpeg.Remux-2024-12-28_10-00-44_54fb42b3ab3d0cf73dd65be3df25adad_e7473f04.log

    ==> jellyfin20241228.log <==
    [2024-12-28 10:17:59.401 +01:00] [INF] FFmpeg exited with code 0
    [2024-12-28 10:18:12.214 +01:00] [INF] "/usr/lib/jellyfin-ffmpeg/ffmpeg" "-analyzeduration 200M -probesize 1G  -i file:\"/data01/Audio/Musik/Zucchero/Spirito DiVino∶ Stray Cat In A Mad Dog City/Zucchero - Così Celeste.ogg\" -map_metadata -1 -map_chapters -1 -threads 0  -vn -acodec libfdk_aac -ab 256000 -ac 2 -ar 44100 -copyts -avoid_negative_ts disabled -max_muxing_queue_size 2048 -f hls -max_delay 5000000 -hls_time 3 -hls_segment_type fmp4 -hls_fmp4_init_filename \"9422c2f73e1dc047215141cbffeb21cf-1.mp4\" -start_number 0 -hls_segment_filename \"/var/lib/jellyfin/transcodes/9422c2f73e1dc047215141cbffeb21cf%d.mp4\" -hls_playlist_type vod -hls_list_size 0 -y \"/var/lib/jellyfin/transcodes/9422c2f73e1dc047215141cbffeb21cf.m3u8\""
    [2024-12-28 10:18:17.346 +01:00] [INF] FFmpeg exited with code 0
    [2024-12-28 10:18:29.893 +01:00] [WRN] Unable to find linked item at path "/data01/Audio/Musik/Blondie/Blondie's Hits/Blondie - Heart Of Glass.ogg"
    [2024-12-28 10:19:01.193 +01:00] [INF] "Webhook Item Added Notifier" Completed after 0 minute(s) and 0 seconds
    [2024-12-28 10:20:32.196 +01:00] [INF] "Webhook Item Added Notifier" Completed after 0 minute(s) and 0 seconds
    [2024-12-28 10:21:01.748 +01:00] [INF] "/usr/lib/jellyfin-ffmpeg/ffmpeg" "-analyzeduration 200M -probesize 1G  -i file:\"/data01/Audio/Musik/Sisters Of Mercy/First And Last And Always/The Sisters Of Mercy - Marian (Version).ogg\" -map_metadata -1 -map_chapters -1 -threads 0  -vn -acodec libfdk_aac -ab 256000 -ac 2 -ar 44100 -copyts -avoid_negative_ts disabled -max_muxing_queue_size 2048 -f hls -max_delay 5000000 -hls_time 3 -hls_segment_type fmp4 -hls_fmp4_init_filename \"c3bcaa93342ce2c75fc589cb7231facd-1.mp4\" -start_number 0 -hls_segment_filename \"/var/lib/jellyfin/transcodes/c3bcaa93342ce2c75fc589cb7231facd%d.mp4\" -hls_playlist_type vod -hls_list_size 0 -y \"/var/lib/jellyfin/transcodes/c3bcaa93342ce2c75fc589cb7231facd.m3u8\""
    [2024-12-28 10:21:07.372 +01:00] [INF] FFmpeg exited with code 0
    [2024-12-28 10:22:03.194 +01:00] [INF] "Webhook Item Added Notifier" Completed after 0 minute(s) and 0 seconds
    [2024-12-28 10:22:08.790 +01:00] [INF] Playback stopped reported by app "Finamp" "0.9.12" playing "Summertime Sadness". Stopped at "263986" ms

    ==> FFmpeg.Transcode-2024-12-28_10-21-01__7cb00f30.log <==
    [hls @ 0x55a027a245c0] Opening '/var/lib/jellyfin/transcodes/c3bcaa93342ce2c75fc589cb7231facd108.mp4' for writing
    [hls @ 0x55a027a245c0] Opening '/var/lib/jellyfin/transcodes/c3bcaa93342ce2c75fc589cb7231facd109.mp4' for writing
    [hls @ 0x55a027a245c0] Opening '/var/lib/jellyfin/transcodes/c3bcaa93342ce2c75fc589cb7231facd110.mp4' for writing
    [hls @ 0x55a027a245c0] Opening '/var/lib/jellyfin/transcodes/c3bcaa93342ce2c75fc589cb7231facd111.mp4' for writing
    size=N/A time=00:05:08.18 bitrate=N/A speed=  56x   
    [hls @ 0x55a027a245c0] Opening '/var/lib/jellyfin/transcodes/c3bcaa93342ce2c75fc589cb7231facd112.mp4' for writing
    [hls @ 0x55a027a245c0] Opening '/var/lib/jellyfin/transcodes/c3bcaa93342ce2c75fc589cb7231facd113.mp4' for writing
    [hls @ 0x55a027a245c0] Opening '/var/lib/jellyfin/transcodes/c3bcaa93342ce2c75fc589cb7231facd114.mp4' for writing
    [out#0/hls @ 0x55a027a27140] video:0KiB audio:10779KiB subtitle:0KiB other streams:0KiB global headers:0KiB muxing overhead: unknown
    size=N/A time=00:05:15.48 bitrate=N/A speed=56.6x   
    ==> FFmpeg.Remux-2024-12-28_10-00-44_54fb42b3ab3d0cf73dd65be3df25adad_e7473f04.log <==
    [vost#0:0/copy @ 0x55a7aa1befc0] Non-monotonic DTS; previous: 5631480, current: 5629680; changing to 5631481. This may result in incorrect timestamps in the output file.
    [vost#0:0/copy @ 0x55a7aa1befc0] Non-monotonic DTS; previous: 5638680, current: 5636880; changing to 5638681. This may result in incorrect timestamps in the output file.
    size=N/A time=00:00:52.55 bitrate=N/A speed=1.44x   

    [q] command received. Exiting.

    [hls @ 0x55a7aa1bbd00] Opening '/var/lib/jellyfin/transcodes/8018aaeeae0a21e3e588e511260c2b7811.ts' for writing
    [hls @ 0x55a7aa1bbd00] Opening '/var/lib/jellyfin/transcodes/8018aaeeae0a21e3e588e511260c2b78.m3u8.tmp' for writing
    [out#0/hls @ 0x55a7aa1be500] video:24559KiB audio:1002KiB subtitle:0KiB other streams:0KiB global headers:0KiB muxing overhead: unknown
    size=N/A time=00:00:52.55 bitrate=N/A speed=1.41x   
    ==> jellyfin20241228.log <==
    [2024-12-28 10:23:23.635 +01:00] [INF] WS "2a02:8071:7102:a1dc:ba3f:ddbb:6cc8:a4c2" request
    [2024-12-28 10:23:29.752 +01:00] [INF] User policy for "s.gehr". EnablePlaybackRemuxing: True EnableVideoPlaybackTranscoding: True EnableAudioPlaybackTranscoding: True
    [2024-12-28 10:23:29.752 +01:00] [INF] Opening channel stream from "Emby", external channel Id: "m3u_705277e417a2ed915f3d6dc5648a7cec54fb42b3ab3d0cf73dd65be3df25adad"
    [2024-12-28 10:23:29.752 +01:00] [INF] Streaming Channel "m3u_705277e417a2ed915f3d6dc5648a7cec54fb42b3ab3d0cf73dd65be3df25adad"
    [2024-12-28 10:23:29.753 +01:00] [INF] Live stream "54fb42b3ab3d0cf73dd65be3df25adad" consumer count is now 2
    [2024-12-28 10:23:29.753 +01:00] [INF] Live tv media info probe took "0.0003659" seconds
    [2024-12-28 10:23:29.754 +01:00] [INF] Live stream opened: MediaSourceInfo { Protocol: Http, Id: "54fb42b3ab3d0cf73dd65be3df25adad", Path: "http://192.168.83.13:7095/v/2/131", EncoderPath: null, EncoderProtocol: null, Type: Default, Container: "ts", Size: null, Name: null, IsRemote: False, ETag: null, RunTimeTicks: null, ReadAtNativeFramerate: False, IgnoreDts: True, IgnoreIndex: False, GenPtsInput: False, SupportsTranscoding: True, SupportsDirectStream: True, SupportsDirectPlay: False, IsInfiniteStream: True, UseMostCompatibleTranscodingProfile: False, RequiresOpening: True, OpenToken: null, RequiresClosing: True, LiveStreamId: "e2329f4997b378e64ccf8fa396deb76e_af999c25a00715699361240d4c6c7a53_54fb42b3ab3d0cf73dd65be3df25adad", BufferMs: null, RequiresLooping: False, SupportsProbing: True, VideoType: null, IsoType: null, Video3DFormat: null, MediaStreams: [MediaStream { Codec: "h264", CodecTag: null, Language: null, ColorRange: null, ColorSpace: null, ColorTransfer: null, ColorPrimaries: null, DvVersionMajor: null, DvVersionMinor: null, DvProfile: null, DvLevel: null, RpuPresentFlag: null, ElPresentFlag: null, BlPresentFlag: null, DvBlSignalCompatibilityId: null, Rotation: null, Comment: null, TimeBase: "1/90000", CodecTimeBase: null, Title: null, VideoRange: SDR, VideoRangeType: SDR, VideoDoViTitle: null, AudioSpatialFormat: None, LocalizedUndefined: null, LocalizedDefault: null, LocalizedForced: null, LocalizedExternal: null, LocalizedHearingImpaired: null, DisplayTitle: "144p H264 SDR", NalLengthSize: "0", IsInterlaced: False, IsAVC: null, ChannelLayout: null, BitRate: null, BitDepth: null, RefFrames: 1, PacketLength: null, Channels: null, SampleRate: null, IsDefault: False, IsForced: False, IsHearingImpaired: False, Height: 0, Width: 0, AverageFrameRate: 50, RealFrameRate: 50, ReferenceFrameRate: 50, Profile: null, Type: Video, AspectRatio: null, Index: -1, Score: null, IsExternal: False, DeliveryMethod: null, DeliveryUrl: null, IsExternalUrl: null, IsTextSubtitleStream: False, IsPgsSubtitleStream: False, IsExtractableSubtitleStream: False, SupportsExternalStream: False, Path: null, PixelFormat: null, Level: -99, IsAnamorphic: False }, MediaStream { Codec: "aac", CodecTag: null, Language: null, ColorRange: null, ColorSpace: null, ColorTransfer: null, ColorPrimaries: null, DvVersionMajor: null, DvVersionMinor: null, DvProfile: null, DvLevel: null, RpuPresentFlag: null, ElPresentFlag: null, BlPresentFlag: null, DvBlSignalCompatibilityId: null, Rotation: null, Comment: null, TimeBase: "1/90000", CodecTimeBase: null, Title: null, VideoRange: Unknown, VideoRangeType: Unknown, VideoDoViTitle: null, AudioSpatialFormat: None, LocalizedUndefined: null, LocalizedDefault: "Standard", LocalizedForced: null, LocalizedExternal: "Extern", LocalizedHearingImpaired: null, DisplayTitle: "AAC - Stereo", NalLengthSize: null, IsInterlaced: False, IsAVC: False, ChannelLayout: "stereo", BitRate: 133689, BitDepth: null, RefFrames: null, PacketLength: null, Channels: 2, SampleRate: 96000, IsDefault: False, IsForced: False, IsHearingImpaired: False, Height: null, Width: null, AverageFrameRate: null, RealFrameRate: null, ReferenceFrameRate: null, Profile: "LC", Type: Audio, AspectRatio: null, Index: -1, Score: null, IsExternal: False, DeliveryMethod: null, DeliveryUrl: null, IsExternalUrl: null, IsTextSubtitleStream: False, IsPgsSubtitleStream: False, IsExtractableSubtitleStream: False, SupportsExternalStream: False, Path: null, PixelFormat: null, Level: 0, IsAnamorphic: null }], MediaAttachments: [], Formats: [], Bitrate: 133689, FallbackMaxStreamingBitrate: 30000000, Timestamp: null, RequiredHttpHeaders: [("User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/122.0.0.0 Safari/537.36")], TranscodingUrl: null, TranscodingSubProtocol: http, TranscodingContainer: null, AnalyzeDurationMs: 3000, TranscodeReasons: 0, DefaultAudioStreamIndex: null, DefaultSubtitleStreamIndex: null, HasSegments: False, VideoStream: MediaStream { Codec: "h264", CodecTag: null, Language: null, ColorRange: null, ColorSpace: null, ColorTransfer: null, ColorPrimaries: null, DvVersionMajor: null, DvVersionMinor: null, DvProfile: null, DvLevel: null, RpuPresentFlag: null, ElPresentFlag: null, BlPresentFlag: null, DvBlSignalCompatibilityId: null, Rotation: null, Comment: null, TimeBase: "1/90000", CodecTimeBase: null, Title: null, VideoRange: SDR, VideoRangeType: SDR, VideoDoViTitle: null, AudioSpatialFormat: None, LocalizedUndefined: null, LocalizedDefault: null, LocalizedForced: null, LocalizedExternal: null, LocalizedHearingImpaired: null, DisplayTitle: "144p H264 SDR", NalLengthSize: "0", IsInterlaced: False, IsAVC: null, ChannelLayout: null, BitRate: null, BitDepth: null, RefFrames: 1, PacketLength: null, Channels: null, SampleRate: null, IsDefault: False, IsForced: False, IsHearingImpaired: False, Height: 0, Width: 0, AverageFrameRate: 50, RealFrameRate: 50, ReferenceFrameRate: 50, Profile: null, Type: Video, AspectRatio: null, Index: -1, Score: null, IsExternal: False, DeliveryMethod: null, DeliveryUrl: null, IsExternalUrl: null, IsTextSubtitleStream: False, IsPgsSubtitleStream: False, IsExtractableSubtitleStream: False, SupportsExternalStream: False, Path: null, PixelFormat: null, Level: -99, IsAnamorphic: False } }
    [2024-12-28 10:23:29.754 +01:00] [INF] User policy for "s.gehr". EnablePlaybackRemuxing: True EnableVideoPlaybackTranscoding: True EnableAudioPlaybackTranscoding: True
    [2024-12-28 10:23:34.200 +01:00] [INF] "Webhook Item Added Notifier" Completed after 0 minute(s) and 0 seconds
    [2024-12-28 10:24:04.803 +01:00] [WRN] WS "2a02:8071:7102:a1dc:ba3f:ddbb:6cc8:a4c2" error receiving data: "The remote party closed the WebSocket connection without completing the close handshake."
    [2024-12-28 10:24:04.810 +01:00] [INF] WS "2a02:8071:7102:a1dc:ba3f:ddbb:6cc8:a4c2" closed
    [2024-12-28 10:25:05.202 +01:00] [INF] "Webhook Item Added Notifier" Completed after 0 minute(s) and 0 seconds
    TheDreadPirate
    Offline

    Community Moderator

    Posts: 15,375
    Threads: 10
    Joined: 2023 Jun
    Reputation: 460
    Country:United States
    #6
    2024-12-29, 03:18 AM
    In the android client settings, do you have it set to use the integrated player or web player?
    Jellyfin 10.10.7 (Docker)
    Ubuntu 24.04.2 LTS w/HWE
    Intel i3 12100
    Intel Arc A380
    OS drive - SK Hynix P41 1TB
    Storage
        4x WD Red Pro 6TB CMR in RAIDZ1
    [Image: GitHub%20Sponsors-grey?logo=github]
    pixel24
    Offline

    Member

    Posts: 196
    Threads: 56
    Joined: 2023 Aug
    Reputation: 1
    Country:Germany
    #7
    2024-12-29, 09:20 AM
    Yes, that was it. When I switch to the "integrated player," it works.

    Does this mean that, in my setup, I can never use a web browser? Or is there a way to configure Jellyfin to transcode streams into a format that web browsers can display?

    The desktop player should ideally continue to use HEVC.
    TheDreadPirate
    Offline

    Community Moderator

    Posts: 15,375
    Threads: 10
    Joined: 2023 Jun
    Reputation: 460
    Country:United States
    #8
    2024-12-29, 05:45 PM (This post was last modified: 2024-12-29, 05:46 PM by TheDreadPirate. Edited 1 time in total.)
    Browsers on a PC should be fine, though some browsers will require full transcoding to H264. This was likely just an issue with the Android web player's integration with our Android app.
    Jellyfin 10.10.7 (Docker)
    Ubuntu 24.04.2 LTS w/HWE
    Intel i3 12100
    Intel Arc A380
    OS drive - SK Hynix P41 1TB
    Storage
        4x WD Red Pro 6TB CMR in RAIDZ1
    [Image: GitHub%20Sponsors-grey?logo=github]
    pixel24
    Offline

    Member

    Posts: 196
    Threads: 56
    Joined: 2023 Aug
    Reputation: 1
    Country:Germany
    #9
    2025-01-10, 05:17 PM
    Please excuse my late response; I was unwell. I don’t entirely understand your answer. As I mentioned, playback of HEVC streams in the Jellyfin app on Android works after I changed the setting in Settings -> Client Settings from "Web Player" to "Integrated Player." So the smartphone issue is resolved.

    What doesn’t work is opening an HEVC stream TV channel in Jellyfin from a Linux laptop using a browser (Firefox or Chromium).

    Is there any way to configure the server so that it transcodes the stream into a format the browser can understand?

    Perhaps I’ve made a mistake in the server’s transcoding settings (see screenshots)?
    TheDreadPirate
    Offline

    Community Moderator

    Posts: 15,375
    Threads: 10
    Joined: 2023 Jun
    Reputation: 460
    Country:United States
    #10
    2025-01-10, 05:48 PM
    I forgot to ask what Nvidia GPU do you have? And can you share the full ffmpeg transcode log? The portion you shared doesn't include what codec it ended up using for that transcode.
    Jellyfin 10.10.7 (Docker)
    Ubuntu 24.04.2 LTS w/HWE
    Intel i3 12100
    Intel Arc A380
    OS drive - SK Hynix P41 1TB
    Storage
        4x WD Red Pro 6TB CMR in RAIDZ1
    [Image: GitHub%20Sponsors-grey?logo=github]
    « Next Oldest | Next Newest »

    Users browsing this thread: 1 Guest(s)


    • View a Printable Version
    • Subscribe to this thread
    Forum Jump:

    Home · Team · Help · Contact
    © Designed by D&D - Powered by MyBB
    L


    Jellyfin

    The Free Software Media System

    Linear Mode
    Threaded Mode