Jellyfin Forum
Seeking transcoded music on Sonos speakers - Printable Version

+- Jellyfin Forum (https://forum.jellyfin.org)
+-- Forum: Support (https://forum.jellyfin.org/f-support)
+--- Forum: Troubleshooting (https://forum.jellyfin.org/f-troubleshooting)
+--- Thread: Seeking transcoded music on Sonos speakers (/t-seeking-transcoded-music-on-sonos-speakers)



Seeking transcoded music on Sonos speakers - doc_jellyfin - 2023-12-26

Hello all!

While latest jellyfin v10.8.13 is working great in my network with docker for playing music locally on the devices, I do have a major annoyance when playing transcoded music on Sonos speakers.
As they are not able to play modern file formats, e.g. opus, I have jellyfin transcode those files. When transcoded files are playing, seeking is not working and the files will start from the beginning!
Seeking works when there is direct play of Sonos supported file format through DLNA.

As you can see from the DLNA profile xml below I already have enabled estimateContentLength="true" transcodeSeekInfo="Bytes". Does not make a difference.

Maybe I have set an incorrect or incomplete DLNA profile?


I did not turn on DLNA debug logs to see if an error pops up. Would that help in any way?

Your valueable help is much appreciated! Thanks!



Here are the logs:

No transcoding, seeking is working:
File properties

Quote:Input #0, mp3, from 'fileConfused-facemnt/Media/Music/ <removed> .mp3':
  Metadata:
<removed>
  Duration: 00:03:01.86, start: 0.025056, bitrate: 194 kb/s
  Stream #0:0: Audio: mp3, 44100 Hz, stereo, fltp, 192 kb/s
    Metadata:
      encoder        : LAME3.99r
    Side data:
      replaygain: track gain - 2.600000, track peak - unknown, album gain - unknown, album peak - unknown,


Quote:jellyfin  | [19:51:07] [INF] [10] Jellyfin.Plugin.PlaybackReporting.Data.PlaybackTracker: PlaybackTracker : Adding Start Event : 12/26/2023 19:51:07
jellyfin  | [19:51:07] [INF] [10] Jellyfin.Plugin.PlaybackReporting.EventMonitorEntryPoint: Creating StartPlaybackTimer Task
jellyfin  | [19:51:07] [INF] [114] Jellyfin.Plugin.PlaybackReporting.EventMonitorEntryPoint: StartPlaybackTimer : Entered
jellyfin  | [19:51:08] [INF] [88] Jellyfin.Plugin.PlaybackReporting.EventMonitorEntryPoint: Processing playback tracker : RINCON_<removed>
jellyfin  | [19:51:27] [INF] [10] Jellyfin.Plugin.PlaybackReporting.EventMonitorEntryPoint: session.RemoteEndPoint : http://192.168.1.182:1400/xml/device_description.xml
jellyfin  | [19:51:27] [INF] [10] Jellyfin.Plugin.PlaybackReporting.EventMonitorEntryPoint: StartPlaybackTimer : event_playing_id    = 2032 <removed>
jellyfin  | [19:51:27] [INF] [10] Jellyfin.Plugin.PlaybackReporting.EventMonitorEntryPoint: StartPlaybackTimer : event_user_id        = cdc5 <removed>
jellyfin  | [19:51:27] [INF] [10] Jellyfin.Plugin.PlaybackReporting.EventMonitorEntryPoint: StartPlaybackTimer : event_user_id_int    = 1
jellyfin  | [19:51:27] [INF] [10] Jellyfin.Plugin.PlaybackReporting.EventMonitorEntryPoint: StartPlaybackTimer : session_playing_id  = 2032 <removed>
jellyfin  | [19:51:27] [INF] [10] Jellyfin.Plugin.PlaybackReporting.EventMonitorEntryPoint: StartPlaybackTimer : session_user_id      = cdc5 <removed>
jellyfin  | [19:51:27] [INF] [10] Jellyfin.Plugin.PlaybackReporting.EventMonitorEntryPoint: StartPlaybackTimer : play_method          = DirectStream
jellyfin  | [19:51:27] [INF] [10] Jellyfin.Plugin.PlaybackReporting.EventMonitorEntryPoint: StartPlaybackTimer : e.ClientName        = DLNA
jellyfin  | [19:51:27] [INF] [10] Jellyfin.Plugin.PlaybackReporting.EventMonitorEntryPoint: StartPlaybackTimer : e.DeviceName        = 192.168.1.182 - Sonos Era 300
jellyfin  | [19:51:27] [INF] [10] Jellyfin.Plugin.PlaybackReporting.EventMonitorEntryPoint: StartPlaybackTimer : ItemName            = Tchaikovsky <removed>
jellyfin  | [19:51:27] [INF] [10] Jellyfin.Plugin.PlaybackReporting.EventMonitorEntryPoint: StartPlaybackTimer : ItemId              = 2032 <removed>
jellyfin  | [19:51:27] [INF] [10] Jellyfin.Plugin.PlaybackReporting.EventMonitorEntryPoint: StartPlaybackTimer : ItemType            = Audio
jellyfin  | [19:51:27] [INF] [10] Jellyfin.Plugin.PlaybackReporting.EventMonitorEntryPoint: StartPlaybackTimer : All matches, playback registered
jellyfin  | [19:51:27] [INF] [10] Jellyfin.Plugin.PlaybackReporting.EventMonitorEntryPoint: Playback tracker found, adding playback info : RINCON_ <removed>
jellyfin  | [19:51:27] [INF] [10] Jellyfin.Plugin.PlaybackReporting.EventMonitorEntryPoint: Saving playback tracking activity in DB
jellyfin  | [19:51:27] [INF] [10] Jellyfin.Plugin.PlaybackReporting.EventMonitorEntryPoint: StartPlaybackTimer : Exited

Transcoding, seeking not working:

Properties of transcoded mp3:
Quote:Input #0, mp3, from '82dfe90b6198f27e2252524d17a1a5c0.mp3':
  Metadata:
    encoder        : Lavf59.27.100
  Duration: 00:03:03.55, start: 0.023021, bitrate: 192 kb/s
  Stream #0:0: Audio: mp3, 48000 Hz, stereo, fltp, 192 kb/s
    Metadata:
      encoder        : Lavc59.37


Quote:
jellyfin  | [20:08:59] [INF] [28] Jellyfin.Api.Helpers.TranscodingJobHelper: /usr/lib/jellyfin-ffmpeg/ffmpeg -analyzeduration 200M  -i file:"/mnt/Media/Music/~ T ~/ Tchaikovsky <removed> .opus" -threads 0 -vn -ab 192000 -ac 2 -acodec libmp3lame -id3v2_version 3 -write_id3v1 1 -y "/transcode/82dfe90b6198f27e2252524d17a1a5c0.mp3"
jellyfin  | [20:09:00] [INF] [58] Jellyfin.Plugin.PlaybackReporting.EventMonitorEntryPoint: Adding playback tracker : RINCON_<removed>
jellyfin  | [20:09:00] [INF] [58] Jellyfin.Plugin.PlaybackReporting.Data.PlaybackTracker: PlaybackTracker : Adding Start Event : 12/26/2023 20:09:00
jellyfin  | [20:09:00] [INF] [58] Jellyfin.Plugin.PlaybackReporting.EventMonitorEntryPoint: Creating StartPlaybackTimer Task
jellyfin  | [20:09:00] [INF] [140] Jellyfin.Plugin.PlaybackReporting.EventMonitorEntryPoint: StartPlaybackTimer : Entered
jellyfin  | [20:09:01] [INF] [58] Jellyfin.Plugin.PlaybackReporting.EventMonitorEntryPoint: Processing playback tracker : RINCON_<removed>
jellyfin  | [20:09:03] [INF] [58] Jellyfin.Api.Helpers.TranscodingJobHelper: FFmpeg exited with code 0
jellyfin  | [20:09:20] [INF] [135] Jellyfin.Plugin.PlaybackReporting.EventMonitorEntryPoint: session.RemoteEndPoint : http://192.168.1.182:1400/xml/device_description.xml
jellyfin  | [20:09:20] [INF] [135] Jellyfin.Plugin.PlaybackReporting.EventMonitorEntryPoint: StartPlaybackTimer : event_playing_id    = e1b5 <removed>
jellyfin  | [20:09:20] [INF] [135] Jellyfin.Plugin.PlaybackReporting.EventMonitorEntryPoint: StartPlaybackTimer : event_user_id        = cdc5 <removed>
jellyfin  | [20:09:20] [INF] [135] Jellyfin.Plugin.PlaybackReporting.EventMonitorEntryPoint: StartPlaybackTimer : event_user_id_int    = 1
jellyfin  | [20:09:20] [INF] [135] Jellyfin.Plugin.PlaybackReporting.EventMonitorEntryPoint: StartPlaybackTimer : session_playing_id  = e1b5 <removed>
jellyfin  | [20:09:20] [INF] [135] Jellyfin.Plugin.PlaybackReporting.EventMonitorEntryPoint: StartPlaybackTimer : session_user_id      = cdc5 <removed>
jellyfin  | [20:09:20] [INF] [135] Jellyfin.Plugin.PlaybackReporting.EventMonitorEntryPoint: StartPlaybackTimer : play_method          = Transcode (v: a:mp3)
jellyfin  | [20:09:20] [INF] [135] Jellyfin.Plugin.PlaybackReporting.EventMonitorEntryPoint: StartPlaybackTimer : e.ClientName        = DLNA
jellyfin  | [20:09:20] [INF] [135] Jellyfin.Plugin.PlaybackReporting.EventMonitorEntryPoint: StartPlaybackTimer : e.DeviceName        = 192.168.1.182 - Sonos Era 300
jellyfin  | [20:09:20] [INF] [135] Jellyfin.Plugin.PlaybackReporting.EventMonitorEntryPoint: StartPlaybackTimer : ItemName            = Tschaikosky <removed>
jellyfin  | [20:09:20] [INF] [135] Jellyfin.Plugin.PlaybackReporting.EventMonitorEntryPoint: StartPlaybackTimer : ItemId              = e1b5 <removed>
jellyfin  | [20:09:20] [INF] [135] Jellyfin.Plugin.PlaybackReporting.EventMonitorEntryPoint: StartPlaybackTimer : ItemType            = Audio
jellyfin  | [20:09:20] [INF] [135] Jellyfin.Plugin.PlaybackReporting.EventMonitorEntryPoint: StartPlaybackTimer : All matches, playback registered



Profile xml from /config/dlna/user:
Quote:<?xml version="1.0" encoding="utf-8"?>
<Profile xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
  <Name>Sonos Speakers</Name>
  <Identification>
    <FriendlyName />
    <ModelNumber />
    <SerialNumber />
    <ModelName />
    <ModelDescription />
    <ModelUrl />
    <Manufacturer>Sonos</Manufacturer>
    <ManufacturerUrl />
    <Headers />
  </Identification>
  <FriendlyName />
  <Manufacturer>Jellyfin</Manufacturer>
  <ManufacturerUrl>https://github.com/jellyfin/jellyfin</ManufacturerUrl>
  <ModelName>Jellyfin Server</ModelName>
  <ModelNumber>01</ModelNumber>
  <ModelUrl>https://github.com/jellyfin/jellyfin</ModelUrl>
  <SerialNumber />
  <SupportedMediaTypes>Audio</SupportedMediaTypes>
  <UserId>cdc5<removed></UserId>
  <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>8000000</MaxStaticMusicBitrate>
  <SonyAggregationFlags />
  <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>
  <XmlRootAttributes />
  <DirectPlayProfiles>
    <DirectPlayProfile container="" audioCodec="mp3,wav" videoCodec="" type="Audio" />
  </DirectPlayProfiles>
  <TranscodingProfiles>
    <TranscodingProfile container="mp3" type="Audio" videoCodec="" audioCodec="mp3" protocol="Http" estimateContentLength="true" transcodeSeekInfo="Bytes">
      <Conditions />
    </TranscodingProfile>
  </TranscodingProfiles>
  <ContainerProfiles />
  <CodecProfiles>
    <CodecProfile type="Audio" codec="opus">
      <Conditions />
      <ApplyConditions />
    </CodecProfile>
  </CodecProfiles>
  <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>