DLNA: Seek is not possible using LGTV #3171

Closed
opened 2026-02-06 22:55:37 +03:00 by OVERLORD · 13 comments
Owner

Originally created by @qkhanhpro on GitHub (Jul 28, 2021).

Describe the bug
DLNA: Seek is not possible using LGTV

System (please complete the following information):

  • OS: Windows
  • Virtualization: No
  • Clients: LG 55UM7600 DLNA
  • Jellyfin Version: Master branch - 0e2a6f8216
  • Playback: DirectPlay
  • Hardware Acceleration: No
  • Installed Plugins: No
  • Reverse Proxy: No
  • Base URL: Default
  • Networking: UPnP / DLNA / LAN
  • Storage: Local

To Reproduce
Start Jellyfin, Play any video from LG TV, Using DLNA, use the seek function

Expected behavior
The TV should be able to seek when using DLNA. I tried with Windows Media Player Network Sharing Service and is able to seek ( Also direct streaming )

The DLNA Profile I used

<?xml version="1.0"?>
<Profile xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  xmlns:xsd="http://www.w3.org/2001/XMLSchema">
  <Name>LG Custom TV</Name>
  <Identification>
    <FriendlyName>LG.*</FriendlyName>
    <Headers>
      <HttpHeaderInfo name="User-Agent" value="LG" match="Substring" />
    </Headers>
  </Identification>
  <Manufacturer>Jellyfin</Manufacturer>
  <ManufacturerUrl>https://github.com/jellyfin/jellyfin</ManufacturerUrl>
  <ModelName>Jellyfin Server</ModelName>
  <ModelDescription>UPnP/AV 1.0 Compliant Media Server</ModelDescription>
  <ModelNumber>01</ModelNumber>
  <ModelUrl>https://github.com/jellyfin/jellyfin</ModelUrl>
  <EnableAlbumArtInDidl>false</EnableAlbumArtInDidl>
  <EnableSingleAlbumArtLimit>false</EnableSingleAlbumArtLimit>
  <EnableSingleSubtitleLimit>false</EnableSingleSubtitleLimit>
  <SupportedMediaTypes>Audio,Photo,Video</SupportedMediaTypes>
  <AlbumArtPn>JPEG_SM</AlbumArtPn>
  <MaxAlbumArtWidth>480</MaxAlbumArtWidth>
  <MaxAlbumArtHeight>480</MaxAlbumArtHeight>
  <MaxIconWidth>48</MaxIconWidth>
  <MaxIconHeight>48</MaxIconHeight>
  <MaxStreamingBitrate>140000000</MaxStreamingBitrate>
  <MaxStaticBitrate>140000000</MaxStaticBitrate>
  <MusicStreamingTranscodingBitrate>192000</MusicStreamingTranscodingBitrate>
  <MaxStaticMusicBitrate xsi:nil="true" />
  <ProtocolInfo>http-get:*:video/mpeg:*,http-get:*:video/mp4:*,http-get:*:video/vnd.dlna.mpeg-tts:*,http-get:*:video/avi:*,http-get:*:video/x-matroska:*,http-get:*:video/x-ms-wmv:*,http-get:*:video/wtv:*,http-get:*:audio/mpeg:*,http-get:*:audio/mp3:*,http-get:*:audio/mp4:*,http-get:*:audio/x-ms-wma:*,http-get:*:audio/wav:*,http-get:*:audio/L16:*,http-get:*:image/jpeg:*,http-get:*:image/png:*,http-get:*:image/gif:*,http-get:*:image/tiff:*</ProtocolInfo>
  <TimelineOffsetSeconds>0</TimelineOffsetSeconds>
  <RequiresPlainVideoItems>false</RequiresPlainVideoItems>
  <RequiresPlainFolders>false</RequiresPlainFolders>
  <EnableMSMediaReceiverRegistrar>false</EnableMSMediaReceiverRegistrar>
  <IgnoreTranscodeByteRangeRequests>false</IgnoreTranscodeByteRangeRequests>
  <XmlRootAttributes />
  <DirectPlayProfiles>
    <DirectPlayProfile container="" type="Video" />
    <DirectPlayProfile container="" type="Audio" />
  </DirectPlayProfiles>
  <TranscodingProfiles>
    <TranscodingProfile container="mp3" type="Audio" audioCodec="mp3" estimateContentLength="false" enableMpegtsM2TsMode="false" transcodeSeekInfo="Auto" copyTimestamps="false" context="Streaming" enableSubtitlesInManifest="false" minSegments="0" segmentLength="0" breakOnNonKeyFrames="false" />
    <TranscodingProfile container="ts" type="Video" videoCodec="h264" audioCodec="aac" estimateContentLength="false" enableMpegtsM2TsMode="false" transcodeSeekInfo="Auto" copyTimestamps="false" context="Streaming" enableSubtitlesInManifest="false" minSegments="0" segmentLength="0" breakOnNonKeyFrames="false" />
    <TranscodingProfile container="jpeg" type="Photo" estimateContentLength="false" enableMpegtsM2TsMode="false" transcodeSeekInfo="Auto" copyTimestamps="false" context="Streaming" enableSubtitlesInManifest="false" minSegments="0" segmentLength="0" breakOnNonKeyFrames="false" />
  </TranscodingProfiles>
  <ContainerProfiles />
  <CodecProfiles />
  <ResponseProfiles>
    <ResponseProfile container="m4v" type="Video" mimeType="video/mp4">
      <Conditions />
    </ResponseProfile>
  </ResponseProfiles>
  <SubtitleProfiles>
    <SubtitleProfile format="srt" method="External" />
    <SubtitleProfile format="sub" method="External" />
    <SubtitleProfile format="srt" method="Embed" />
    <SubtitleProfile format="ass" method="Embed" />
    <SubtitleProfile format="ssa" method="Embed" />
    <SubtitleProfile format="smi" method="Embed" />
    <SubtitleProfile format="dvdsub" method="Embed" />
    <SubtitleProfile format="pgs" method="Embed" />
    <SubtitleProfile format="pgssub" method="Embed" />
    <SubtitleProfile format="sub" method="Embed" />
    <SubtitleProfile format="subrip" method="Embed" />
    <SubtitleProfile format="vtt" method="Embed" />
  </SubtitleProfiles>
</Profile>

Seeking is possible with Windows Media Sharing. The video is Direct Playing, HEVC codec is kept. there is a thumbnail indicating content at the seek bar
_DSF2694

With Jellyfin, seeking is disabled (So does fastforward/fastbackward/resume play)
_DSF2695

Originally created by @qkhanhpro on GitHub (Jul 28, 2021). **Describe the bug** DLNA: Seek is not possible using LGTV **System (please complete the following information):** - OS: Windows - Virtualization: No - Clients: LG 55UM7600 DLNA - Jellyfin Version: Master branch - https://github.com/jellyfin/jellyfin/commit/0e2a6f8216e0a675b43cf2919fb1d57b46f14972 - Playback: DirectPlay - Hardware Acceleration: No - Installed Plugins: No - Reverse Proxy: No - Base URL: Default - Networking: UPnP / DLNA / LAN - Storage: Local **To Reproduce** Start Jellyfin, Play any video from LG TV, Using DLNA, use the seek function **Expected behavior** The TV should be able to seek when using DLNA. I tried with Windows Media Player Network Sharing Service and is able to seek ( Also direct streaming ) The DLNA Profile I used ``` <?xml version="1.0"?> <Profile xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema"> <Name>LG Custom TV</Name> <Identification> <FriendlyName>LG.*</FriendlyName> <Headers> <HttpHeaderInfo name="User-Agent" value="LG" match="Substring" /> </Headers> </Identification> <Manufacturer>Jellyfin</Manufacturer> <ManufacturerUrl>https://github.com/jellyfin/jellyfin</ManufacturerUrl> <ModelName>Jellyfin Server</ModelName> <ModelDescription>UPnP/AV 1.0 Compliant Media Server</ModelDescription> <ModelNumber>01</ModelNumber> <ModelUrl>https://github.com/jellyfin/jellyfin</ModelUrl> <EnableAlbumArtInDidl>false</EnableAlbumArtInDidl> <EnableSingleAlbumArtLimit>false</EnableSingleAlbumArtLimit> <EnableSingleSubtitleLimit>false</EnableSingleSubtitleLimit> <SupportedMediaTypes>Audio,Photo,Video</SupportedMediaTypes> <AlbumArtPn>JPEG_SM</AlbumArtPn> <MaxAlbumArtWidth>480</MaxAlbumArtWidth> <MaxAlbumArtHeight>480</MaxAlbumArtHeight> <MaxIconWidth>48</MaxIconWidth> <MaxIconHeight>48</MaxIconHeight> <MaxStreamingBitrate>140000000</MaxStreamingBitrate> <MaxStaticBitrate>140000000</MaxStaticBitrate> <MusicStreamingTranscodingBitrate>192000</MusicStreamingTranscodingBitrate> <MaxStaticMusicBitrate xsi:nil="true" /> <ProtocolInfo>http-get:*:video/mpeg:*,http-get:*:video/mp4:*,http-get:*:video/vnd.dlna.mpeg-tts:*,http-get:*:video/avi:*,http-get:*:video/x-matroska:*,http-get:*:video/x-ms-wmv:*,http-get:*:video/wtv:*,http-get:*:audio/mpeg:*,http-get:*:audio/mp3:*,http-get:*:audio/mp4:*,http-get:*:audio/x-ms-wma:*,http-get:*:audio/wav:*,http-get:*:audio/L16:*,http-get:*:image/jpeg:*,http-get:*:image/png:*,http-get:*:image/gif:*,http-get:*:image/tiff:*</ProtocolInfo> <TimelineOffsetSeconds>0</TimelineOffsetSeconds> <RequiresPlainVideoItems>false</RequiresPlainVideoItems> <RequiresPlainFolders>false</RequiresPlainFolders> <EnableMSMediaReceiverRegistrar>false</EnableMSMediaReceiverRegistrar> <IgnoreTranscodeByteRangeRequests>false</IgnoreTranscodeByteRangeRequests> <XmlRootAttributes /> <DirectPlayProfiles> <DirectPlayProfile container="" type="Video" /> <DirectPlayProfile container="" type="Audio" /> </DirectPlayProfiles> <TranscodingProfiles> <TranscodingProfile container="mp3" type="Audio" audioCodec="mp3" estimateContentLength="false" enableMpegtsM2TsMode="false" transcodeSeekInfo="Auto" copyTimestamps="false" context="Streaming" enableSubtitlesInManifest="false" minSegments="0" segmentLength="0" breakOnNonKeyFrames="false" /> <TranscodingProfile container="ts" type="Video" videoCodec="h264" audioCodec="aac" estimateContentLength="false" enableMpegtsM2TsMode="false" transcodeSeekInfo="Auto" copyTimestamps="false" context="Streaming" enableSubtitlesInManifest="false" minSegments="0" segmentLength="0" breakOnNonKeyFrames="false" /> <TranscodingProfile container="jpeg" type="Photo" estimateContentLength="false" enableMpegtsM2TsMode="false" transcodeSeekInfo="Auto" copyTimestamps="false" context="Streaming" enableSubtitlesInManifest="false" minSegments="0" segmentLength="0" breakOnNonKeyFrames="false" /> </TranscodingProfiles> <ContainerProfiles /> <CodecProfiles /> <ResponseProfiles> <ResponseProfile container="m4v" type="Video" mimeType="video/mp4"> <Conditions /> </ResponseProfile> </ResponseProfiles> <SubtitleProfiles> <SubtitleProfile format="srt" method="External" /> <SubtitleProfile format="sub" method="External" /> <SubtitleProfile format="srt" method="Embed" /> <SubtitleProfile format="ass" method="Embed" /> <SubtitleProfile format="ssa" method="Embed" /> <SubtitleProfile format="smi" method="Embed" /> <SubtitleProfile format="dvdsub" method="Embed" /> <SubtitleProfile format="pgs" method="Embed" /> <SubtitleProfile format="pgssub" method="Embed" /> <SubtitleProfile format="sub" method="Embed" /> <SubtitleProfile format="subrip" method="Embed" /> <SubtitleProfile format="vtt" method="Embed" /> </SubtitleProfiles> </Profile> ``` Seeking is possible with **Windows Media Sharing**. The video is Direct Playing, HEVC codec is kept. there is a thumbnail indicating content at the seek bar ![_DSF2694](https://user-images.githubusercontent.com/10443536/127335560-806516c6-94c5-4589-b8e4-8374f0da42bf.JPG) With Jellyfin, seeking is disabled (So does fastforward/fastbackward/resume play) ![_DSF2695](https://user-images.githubusercontent.com/10443536/127336301-5b178997-e0e5-429d-85ed-ee055d8bccb9.JPG)
OVERLORD added the bug label 2026-02-06 22:55:37 +03:00
Author
Owner

@amzamzamzamz commented on GitHub (Aug 4, 2021):

+1
transcoding failed on Athlon 200GE and LGTV after upgrading software

@amzamzamzamz commented on GitHub (Aug 4, 2021): +1 transcoding failed on Athlon 200GE and LGTV after upgrading software
Author
Owner

@qkhanhpro commented on GitHub (Aug 8, 2021):

Will just keep update my findings here
Some wireshark capture with Jellyfin

https://github.com/qkhanhpro/public-files/blob/main/LGtoJelly.pcapng
https://github.com/qkhanhpro/public-files/blob/main/LGtoWin.pcapng

@qkhanhpro commented on GitHub (Aug 8, 2021): Will just keep update my findings here Some wireshark capture with Jellyfin https://github.com/qkhanhpro/public-files/blob/main/LGtoJelly.pcapng https://github.com/qkhanhpro/public-files/blob/main/LGtoWin.pcapng
Author
Owner

@qkhanhpro commented on GitHub (Aug 21, 2021):

Same issue with Emby latest build. Seems like it's a bug that Jellyfin inherits from Emby

@qkhanhpro commented on GitHub (Aug 21, 2021): Same issue with Emby latest build. Seems like it's a bug that Jellyfin inherits from Emby
Author
Owner

@qkhanhpro commented on GitHub (Sep 28, 2021):

This issue is already fixed in Emby at least from 3.5.3.0 onward. This can be confirmed by downloading Emby here

https://github.com/MediaBrowser/Emby.Releases/releases/tag/3.5.3.0
However, the latest code from master branch here still have this issue
https://github.com/MediaBrowser/Emby

Someone have any idea?

@qkhanhpro commented on GitHub (Sep 28, 2021): This issue is already fixed in Emby at least from 3.5.3.0 onward. This can be confirmed by downloading Emby here https://github.com/MediaBrowser/Emby.Releases/releases/tag/3.5.3.0 However, the latest code from master branch here still have this issue https://github.com/MediaBrowser/Emby Someone have any idea?
Author
Owner

@amzamzamzamz commented on GitHub (Sep 28, 2021):

All works fine with latest update
https://hub.docker.com/r/linuxserver/jellyfin

@amzamzamzamz commented on GitHub (Sep 28, 2021): All works fine with latest update https://hub.docker.com/r/linuxserver/jellyfin
Author
Owner

@jorants commented on GitHub (Jan 4, 2022):

I have the same problem when playing transcoded video to my LG webOS tv. Just recreated the docker container with the latest image (v10.7.7) for jellyfin and the problem persists. Seeking does work when using direct play. Tried many different video formats, as well as changing the advanced transcoding options under DLNA->profiles->-> transcoding. no luck with any combination of settings. Maybe it relates to https://github.com/gerbera/gerbera/issues/839 ? I know to little about DLNA to really be a help here.

@jorants commented on GitHub (Jan 4, 2022): I have the same problem when playing transcoded video to my LG webOS tv. Just recreated the docker container with the latest image (v10.7.7) for jellyfin and the problem persists. Seeking does work when using direct play. Tried many different video formats, as well as changing the advanced transcoding options under DLNA->profiles-><my profile>-> transcoding. no luck with any combination of settings. Maybe it relates to https://github.com/gerbera/gerbera/issues/839 ? I know to little about DLNA to really be a help here.
Author
Owner

@jorants commented on GitHub (Jan 5, 2022):

Reporting this capability seems to be handled in MediaBrowser.Model/Dlna/ContentFeatureBuilder.cs and MediaBrowser.Model/Dlna/DlnaMaps.cs. There is a comment about LG TVs in the first file above an out commented part about seeking (line 160), placed by Marius Luca (@marius-luca-87 ), maybe they can shine a light on this?

I tried adding back the code and adding back opOrg later on, forcing time seeking to be reported as a capability. The TV assumes seeking is possible but crashes with file format not recognized as soon as you actually seek.

@jorants commented on GitHub (Jan 5, 2022): Reporting this capability seems to be handled in `MediaBrowser.Model/Dlna/ContentFeatureBuilder.cs` and `MediaBrowser.Model/Dlna/DlnaMaps.cs`. There is a comment about LG TVs in the first file above an out commented part about seeking (line 160), placed by Marius Luca (@marius-luca-87 ), maybe they can shine a light on this? I tried adding back the code and adding back `opOrg` later on, forcing time seeking to be reported as a capability. The TV assumes seeking is possible but crashes with `file format not recognized` as soon as you actually seek.
Author
Owner

@qkhanhpro commented on GitHub (Jan 5, 2022):

Thank you a lot @jorants !
I uncommented that code path and it works perfectly on my LG 55UM7600
Seems like for some other LGTV it fails , following the comment made by marius-luca-87 "TimeBasedSeek and orgPn causes the DLNA playback to fail (format not supported). Further investigations are needed before enabling the remaining code paths."

@qkhanhpro commented on GitHub (Jan 5, 2022): Thank you a lot @jorants ! I uncommented that code path and it works perfectly on my LG 55UM7600 Seems like for _some_ other LGTV it fails , following the comment made by marius-luca-87 "TimeBasedSeek and orgPn causes the DLNA playback to fail (format not supported). Further investigations are needed before enabling the remaining code paths."
Author
Owner

@marius-luca-87 commented on GitHub (Jan 5, 2022):

As mentioned in https://github.com/jellyfin/jellyfin/pull/6907 I tried myself un-commenting the code that reports SEEK support on transcoded streams and run into the file format not recognized issue. I would recommend keeping the particular code path as a DLNA profile option if somebody else wants to add it since it would break playback for some people.

In the Wireshark captures I didn't notice anything wrong at the DLNA headers we set.

The TV's I tested on were LG CX3 and Samsung Q6FNA .

I tried testing both Plex and Emby to see if any have DLNA seek support working for the TV's mentioned and run into the same issue.

@marius-luca-87 commented on GitHub (Jan 5, 2022): As mentioned in https://github.com/jellyfin/jellyfin/pull/6907 I tried myself un-commenting the code that reports SEEK support on transcoded streams and run into the `file format not recognized` issue. I would recommend keeping the particular code path as a DLNA profile option if somebody else wants to add it since it would break playback for some people. In the Wireshark captures I didn't notice anything wrong at the DLNA headers we set. The TV's I tested on were LG CX3 and Samsung Q6FNA . I tried testing both Plex and Emby to see if any have DLNA seek support working for the TV's mentioned and run into the same issue.
Author
Owner

@jorants commented on GitHub (Jan 5, 2022):

I tried Emby but the TV also does not recognize the file format there (I could not get Plex to transcode). I have an LG oled48a16l, running webos 03.21.00.

As it might be a codec/container format mismatch, @qkhanhpro can you share the format before transcoding (container, codec,audio) and the ffmpeg logs for the file that you got working this way?

@jorants commented on GitHub (Jan 5, 2022): I tried Emby but the TV also does not recognize the file format there (I could not get Plex to transcode). I have an LG oled48a16l, running webos 03.21.00. As it might be a codec/container format mismatch, @qkhanhpro can you share the format before transcoding (container, codec,audio) and the ffmpeg logs for the file that you got working this way?
Author
Owner

@qkhanhpro commented on GitHub (Jan 5, 2022):

@jorants I did not have to transcode. My target is to DirectPlay / DirectStream everything and basically the 55UM7600 can chew through most codecs without the need for transcoding. My issue was that I can not seek when I was DirectPlay / DirectStream -ing. So I am afraid that my issue is the reverse of what you are experiencing

Edit: In-fact. The commit #6907 from marius-luca-87 fixed my original issue, not un-commenting the code path. Thank you for that!

@qkhanhpro commented on GitHub (Jan 5, 2022): @jorants I did not have to transcode. My target is to DirectPlay / DirectStream everything and basically the 55UM7600 can chew through most codecs without the need for transcoding. My issue was that I can not seek when I was DirectPlay / DirectStream -ing. So I am afraid that my issue is the reverse of what you are experiencing Edit: In-fact. The commit #6907 from marius-luca-87 fixed my original issue, not un-commenting the code path. Thank you for that!
Author
Owner

@marius-luca-87 commented on GitHub (Jan 5, 2022):

There are two cases for SEEK on DLNA.

  1. when direct playing a file witch was fixed by #6907
  2. when streaming a transcoded stream that would require time seeking instead of byte based seeks (audio transcoding is enough to break DLNA seek)

The remaining commented code would address issues number 2. However I was not able to get that working because of the unknown format issue.

@marius-luca-87 commented on GitHub (Jan 5, 2022): There are two cases for SEEK on DLNA. 1. when direct playing a file witch was fixed by #6907 2. when streaming a transcoded stream that would require time seeking instead of byte based seeks (audio transcoding is enough to break DLNA seek) The remaining commented code would address issues number 2. However I was not able to get that working because of the unknown format issue.
Author
Owner

@BubiBalboa commented on GitHub (Jul 7, 2022):

The update from 10.7.7 to 10.8.1 broke this functionality again for me. Symptoms are exactly the same as described in the first post. I use Direct Play on an LG C1.

Never mind. Today it works again. Might have been some kind of glitch.

@BubiBalboa commented on GitHub (Jul 7, 2022): ~~The update from 10.7.7 to 10.8.1 broke this functionality again for me. Symptoms are exactly the same as described in the first post. I use Direct Play on an LG C1.~~ Never mind. Today it works again. Might have been some kind of glitch.
Sign in to join this conversation.
1 Participants
Notifications
Due Date
No due date set.
Dependencies

No dependencies set.

Reference: starred/jellyfin#3171