jellyfin / jellyfin-roku

The Official Roku Client for Jellyfin
https://jellyfin.org
GNU General Public License v2.0
439 stars 133 forks source link

Subtitles give an error on 1.4.9 #499

Closed line72 closed 2 years ago

line72 commented 2 years ago

Describe the bug I have external .srt subtitle files. If I press the down arrow and select the subtitle to turn on, jellyfin looks like it reloads the video, then I get an error, saying the media cannot be played.

To Reproduce

  1. Play Video File that has a matching .en.srt subtitle file
  2. While the video is playing press the * and turn on Roku subtitles to 'always on' (this step doesn't seem to matter)
  3. Press down arrow, and select English Subtitles

Expected behavior The video should play with subtitles

Logs N/A

Screenshots N/A

Additional context Subtitles worked find on a previous version. The update to 1.4.9 has caused the problem. It doesn't seem to matter what format my video files are in, as it happens when I try to turn on subtitles (either using an external .srt + h.264 or an embedded with .mkv), it fails to play.

neilsb commented 2 years ago

Interesting that it's reloading the video. For srt subtitles this shouldn't happen. Do you happen to know if the video was transcoding before you tried to add the subtitles (should be able to see this on the Dashboard on the website)?

line72 commented 2 years ago

With an h.264 avi and an .srt

[2021-11-16 04:11:07.427 +00:00] [INF] [40] MediaBrowser.Api.Playback.MediaInfoService: GetPostedPlaybackInfo profile: DeviceProfile { Name: null, Id: null, Identification: null, FriendlyName: null, Manufacturer: null, ManufacturerUrl: null, ModelName: null, ModelDescription: null, ModelNumber: null, ModelUrl: null, SerialNumber: null, EnableAlbumArtInDidl: False, EnableSingleAlbumArtLimit: False, EnableSingleSubtitleLimit: False, SupportedMediaTypes: "Audio,Photo,Video", UserId: null, AlbumArtPn: null, MaxAlbumArtWidth: 0, MaxAlbumArtHeight: 0, MaxIconWidth: null, MaxIconHeight: null, MaxStreamingBitrate: 120000000, MaxStaticBitrate: 100000000, MusicStreamingTranscodingBitrate: 192000, MaxStaticMusicBitrate: null, SonyAggregationFlags: null, ProtocolInfo: null, TimelineOffsetSeconds: 0, RequiresPlainVideoItems: False, RequiresPlainFolders: False, EnableMSMediaReceiverRegistrar: False, IgnoreTranscodeByteRangeRequests: False, XmlRootAttributes: [], DirectPlayProfiles: [DirectPlayProfile { Container: "mp4,m4v,mov", AudioCodec: "mp3,pcm,lpcm,wav,alac,aac", VideoCodec: "h264,h265,hevc,mpeg2video", Type: Video }, DirectPlayProfile { Container: "mkv,webm", AudioCodec: "mp3,pcm,lpcm,wav,flac,alac,aac,opus,vorbis", VideoCodec: "h264,vp8,h265,hevc,vp9,mpeg2video", Type: Video }, DirectPlayProfile { Container: "mp3,pcm,lpcm,wav,wma,flac,alac,aac,wmapro", AudioCodec: null, VideoCodec: null, Type: Audio }], TranscodingProfiles: [TranscodingProfile { Container: "aac", Type: Audio, VideoCodec: null, AudioCodec: "aac", Protocol: "http", EstimateContentLength: False, EnableMpegtsM2TsMode: False, TranscodeSeekInfo: Auto, CopyTimestamps: False, Context: Streaming, EnableSubtitlesInManifest: False, MaxAudioChannels: " 2", MinSegments: 0, SegmentLength: 0, BreakOnNonKeyFrames: False }, TranscodingProfile { Container: "mp3", Type: Audio, VideoCodec: null, AudioCodec: "mp3", Protocol: "http", EstimateContentLength: False, EnableMpegtsM2TsMode: False, TranscodeSeekInfo: Auto, CopyTimestamps: False, Context: Streaming, EnableSubtitlesInManifest: False, MaxAudioChannels: "2", MinSegments: 0, SegmentLength: 0, BreakOnNonKeyFrames: False }, TranscodingProfile { Container: "mp3", Type: Audio, VideoCodec: null, AudioCodec: "mp3", Protocol: "http", EstimateContentLength: False, EnableMpegtsM2TsMode: False, TranscodeSeekInfo: Auto, CopyTimestamps: False, Context: Static, EnableSubtitlesInManifest: False, MaxAudioChannels: "2", MinSegments: 0, SegmentLength: 0, BreakOnNonKeyFrames: False }, TranscodingProfile { Container: "aac", Type: Audio, VideoCodec: null, AudioCodec: "aac", Protocol: "http", EstimateContentLength: False, EnableMpegtsM2TsMode: False, TranscodeSeekInfo: Auto, CopyTimestamps: False, Context: Static, EnableSubtitlesInManifest: False, MaxAudioChannels: " 2", MinSegments: 0, SegmentLength: 0, BreakOnNonKeyFrames: False }, TranscodingProfile { Container: "ts", Type: Video, VideoCodec: "h264,mpeg2video", AudioCodec: "aac", Protocol: "hls", EstimateContentLength: False, EnableMpegtsM2TsMode: False, TranscodeSeekInfo: Auto, CopyTimestamps: False, Context: Streaming, EnableSubtitlesInManifest: False, MaxAudioChannels: " 2", MinSegments: 1, SegmentLength: 0, BreakOnNonKeyFrames: True }, TranscodingProfile { Container: "mp4", Type: Video, VideoCodec: "h264", AudioCodec: "aac,opus,flac,vorbis", Protocol: "http", EstimateContentLength: False, EnableMpegtsM2TsMode: False, TranscodeSeekInfo: Auto, CopyTimestamps: False, Context: Static, EnableSubtitlesInManifest: False, MaxAudioChannels: null, MinSegments: 0, SegmentLength: 0, BreakOnNonKeyFrames: False }], ContainerProfiles: [], CodecProfiles: [CodecProfile { Type: VideoAudio, Conditions: [ProfileCondition { Condition: Equals, Property: IsSecondaryAudio, Value: "false", IsRequired: False }], ApplyConditions: [], Codec: "aac", Container: null }, CodecProfile { Type: Video, Conditions: [ProfileCondition { Condition: EqualsAny, Property: VideoProfile, Value: "high|main|baseline|constrained baseline", IsRequired: False }, ProfileCondition { Condition: LessThanEqual, Property: VideoLevel, Value: "51", IsRequired: False }], ApplyConditions: [], Codec: "h264", Container: null }], ResponseProfiles: [], SubtitleProfiles: [SubtitleProfile { Format: "vtt", Method: External, DidlMode: null, Language: null, Container: null }, SubtitleProfile { Format: "srt", Method: External, DidlMode: null, Language: null, Container: null }, SubtitleProfile { Format: "ttml", Method: External, DidlMode: null, Language: null, Container: null }] }
[2021-11-16 04:11:07.518 +00:00] [INF] [40] MediaBrowser.Api.Playback.MediaInfoService: User policy for "Roku". EnablePlaybackRemuxing: True EnableVideoPlaybackTranscoding: True EnableAudioPlaybackTranscoding: True
[2021-11-16 04:11:07.518 +00:00] [INF] [40] MediaBrowser.Api.Playback.MediaInfoService: Profile: "Unknown Profile", Path: "/media/tv/futurama/Futurama - Season 1/Futurama - S01E01 - Space Pilot 3000 [dd].avi", isEligibleForDirectPlay: True, isEligibleForDirectStream: True
[2021-11-16 04:11:07.518 +00:00] [INF] [40] MediaBrowser.Api.Playback.MediaInfoService: Profile: "Unknown Profile", No direct play profiles found for Path: "/media/tv/futurama/Futurama - Season 1/Futurama - S01E01 - Space Pilot 3000 [dd].avi"
[2021-11-16 04:11:07.520 +00:00] [INF] [40] MediaBrowser.Api.Playback.MediaInfoService: Profile: "Unknown Profile", Path: "/media/tv/futurama/Futurama - Season 1/Futurama - S01E01 - Space Pilot 3000 [dd].avi", isEligibleForDirectPlay: True, isEligibleForDirectStream: True
[2021-11-16 04:11:07.521 +00:00] [INF] [40] MediaBrowser.Api.Playback.MediaInfoService: Profile: "Unknown Profile", No direct play profiles found for Path: "/media/tv/futurama/Futurama - Season 1/Futurama - S01E01 - Space Pilot 3000 [dd].avi"
[2021-11-16 04:11:07.523 +00:00] [INF] [40] MediaBrowser.Api.Playback.MediaInfoService: Profile: "Unknown Profile", Path: "/media/tv/futurama/Futurama - Season 1/Futurama - S01E01 - Space Pilot 3000 [dd].avi", isEligibleForDirectPlay: True, isEligibleForDirectStream: True
[2021-11-16 04:11:07.524 +00:00] [INF] [40] MediaBrowser.Api.Playback.MediaInfoService: Profile: "Unknown Profile", No direct play profiles found for Path: "/media/tv/futurama/Futurama - Season 1/Futurama - S01E01 - Space Pilot 3000 [dd].avi"
[2021-11-16 04:11:08.092 +00:00] [INF] [59] Emby.Server.Implementations.Session.SessionManager: Playback stopped reported by app "Jellyfin Roku" "1.4.9" playing "Space Pilot 3000". Stopped at "0" ms

With an .mkv with subtitles embeded:

[2021-11-16 04:11:38.009 +00:00] [INF] [61] MediaBrowser.Api.Playback.MediaInfoService: GetPostedPlaybackInfo profile: DeviceProfile { Name: null, Id: null, Identification: null, FriendlyName: null, Manufacturer: null, ManufacturerUrl: null, ModelName: null, ModelDescription: null, ModelNumber: null, ModelUrl: null, SerialNumber: null, EnableAlbumArtInDidl: False, EnableSingleAlbumArtLimit: False, EnableSingleSubtitleLimit: False, SupportedMediaTypes: "Audio,Photo,Video", UserId: null, AlbumArtPn: null, MaxAlbumArtWidth: 0, MaxAlbumArtHeight: 0, MaxIconWidth: null, MaxIconHeight: null, MaxStreamingBitrate: 120000000, MaxStaticBitrate: 100000000, MusicStreamingTranscodingBitrate: 192000, MaxStaticMusicBitrate: null, SonyAggregationFlags: null, ProtocolInfo: null, TimelineOffsetSeconds: 0, RequiresPlainVideoItems: False, RequiresPlainFolders: False, EnableMSMediaReceiverRegistrar: False, IgnoreTranscodeByteRangeRequests: False, XmlRootAttributes: [], DirectPlayProfiles: [DirectPlayProfile { Container: "mp4,m4v,mov", AudioCodec: "mp3,pcm,lpcm,wav,alac,aac", VideoCodec: "h264,h265,hevc,mpeg2video", Type: Video }, DirectPlayProfile { Container: "mkv,webm", AudioCodec: "mp3,pcm,lpcm,wav,flac,alac,aac,opus,vorbis", VideoCodec: "h264,vp8,h265,hevc,vp9,mpeg2video", Type: Video }, DirectPlayProfile { Container: "mp3,pcm,lpcm,wav,wma,flac,alac,aac,wmapro", AudioCodec: null, VideoCodec: null, Type: Audio }], TranscodingProfiles: [TranscodingProfile { Container: "aac", Type: Audio, VideoCodec: null, AudioCodec: "aac", Protocol: "http", EstimateContentLength: False, EnableMpegtsM2TsMode: False, TranscodeSeekInfo: Auto, CopyTimestamps: False, Context: Streaming, EnableSubtitlesInManifest: False, MaxAudioChannels: " 2", MinSegments: 0, SegmentLength: 0, BreakOnNonKeyFrames: False }, TranscodingProfile { Container: "mp3", Type: Audio, VideoCodec: null, AudioCodec: "mp3", Protocol: "http", EstimateContentLength: False, EnableMpegtsM2TsMode: False, TranscodeSeekInfo: Auto, CopyTimestamps: False, Context: Streaming, EnableSubtitlesInManifest: False, MaxAudioChannels: "2", MinSegments: 0, SegmentLength: 0, BreakOnNonKeyFrames: False }, TranscodingProfile { Container: "mp3", Type: Audio, VideoCodec: null, AudioCodec: "mp3", Protocol: "http", EstimateContentLength: False, EnableMpegtsM2TsMode: False, TranscodeSeekInfo: Auto, CopyTimestamps: False, Context: Static, EnableSubtitlesInManifest: False, MaxAudioChannels: "2", MinSegments: 0, SegmentLength: 0, BreakOnNonKeyFrames: False }, TranscodingProfile { Container: "aac", Type: Audio, VideoCodec: null, AudioCodec: "aac", Protocol: "http", EstimateContentLength: False, EnableMpegtsM2TsMode: False, TranscodeSeekInfo: Auto, CopyTimestamps: False, Context: Static, EnableSubtitlesInManifest: False, MaxAudioChannels: " 2", MinSegments: 0, SegmentLength: 0, BreakOnNonKeyFrames: False }, TranscodingProfile { Container: "ts", Type: Video, VideoCodec: "h264,mpeg2video", AudioCodec: "aac", Protocol: "hls", EstimateContentLength: False, EnableMpegtsM2TsMode: False, TranscodeSeekInfo: Auto, CopyTimestamps: False, Context: Streaming, EnableSubtitlesInManifest: False, MaxAudioChannels: " 2", MinSegments: 1, SegmentLength: 0, BreakOnNonKeyFrames: True }, TranscodingProfile { Container: "mp4", Type: Video, VideoCodec: "h264", AudioCodec: "aac,opus,flac,vorbis", Protocol: "http", EstimateContentLength: False, EnableMpegtsM2TsMode: False, TranscodeSeekInfo: Auto, CopyTimestamps: False, Context: Static, EnableSubtitlesInManifest: False, MaxAudioChannels: null, MinSegments: 0, SegmentLength: 0, BreakOnNonKeyFrames: False }], ContainerProfiles: [], CodecProfiles: [CodecProfile { Type: VideoAudio, Conditions: [ProfileCondition { Condition: Equals, Property: IsSecondaryAudio, Value: "false", IsRequired: False }], ApplyConditions: [], Codec: "aac", Container: null }, CodecProfile { Type: Video, Conditions: [ProfileCondition { Condition: EqualsAny, Property: VideoProfile, Value: "high|main|baseline|constrained baseline", IsRequired: False }, ProfileCondition { Condition: LessThanEqual, Property: VideoLevel, Value: "51", IsRequired: False }], ApplyConditions: [], Codec: "h264", Container: null }], ResponseProfiles: [], SubtitleProfiles: [SubtitleProfile { Format: "vtt", Method: External, DidlMode: null, Language: null, Container: null }, SubtitleProfile { Format: "srt", Method: External, DidlMode: null, Language: null, Container: null }, SubtitleProfile { Format: "ttml", Method: External, DidlMode: null, Language: null, Container: null }] }
[2021-11-16 04:11:38.095 +00:00] [INF] [61] MediaBrowser.Api.Playback.MediaInfoService: User policy for "Roku". EnablePlaybackRemuxing: True EnableVideoPlaybackTranscoding: True EnableAudioPlaybackTranscoding: True
[2021-11-16 04:11:38.095 +00:00] [INF] [61] MediaBrowser.Api.Playback.MediaInfoService: Profile: "Unknown Profile", Path: "/media/tv/Psych/Psych - Season 1/Psych - S01E02 - Spellingg Bee.mkv", isEligibleForDirectPlay: True, isEligibleForDirectStream: True
[2021-11-16 04:11:38.095 +00:00] [INF] [61] MediaBrowser.Api.Playback.MediaInfoService: Profile: "Unknown Profile", Path: "/media/tv/Psych/Psych - Season 1/Psych - S01E02 - Spellingg Bee.mkv", isEligibleForDirectPlay: True, isEligibleForDirectStream: True
[2021-11-16 04:11:38.095 +00:00] [INF] [61] MediaBrowser.Api.Playback.MediaInfoService: Profile: "Unknown Profile", Path: "/media/tv/Psych/Psych - Season 1/Psych - S01E02 - Spellingg Bee.mkv", isEligibleForDirectPlay: True, isEligibleForDirectStream: True
[2021-11-16 04:11:38.473 +00:00] [ERR] [19] Emby.Server.Implementations.HttpServer.HttpListenerHost: Error processing request: "The operation was canceled". URL: "http://jellyfin.line72.net/Videos/f6f7673843eaa5138502dd2f962c17f1/stream?AudioStreamIndex=1&Container=mkv&PlaySessionId=a53dfc1607ec44ea80a72fdebdab498a&Static=true"
[2021-11-16 04:11:38.653 +00:00] [ERR] [19] Emby.Server.Implementations.HttpServer.HttpListenerHost: Error processing request: "The operation was canceled". URL: "http://jellyfin.line72.net/Videos/f6f7673843eaa5138502dd2f962c17f1/stream?AudioStreamIndex=1&Container=mkv&PlaySessionId=a53dfc1607ec44ea80a72fdebdab498a&Static=true"
[2021-11-16 04:16:39.601 +00:00] [INF] [75] Emby.Server.Implementations.Session.SessionManager: Playback stopped reported by app "Jellyfin Roku" "1.4.9" playing "The Spellingg Bee". Stopped at "300000" ms
[2021-11-16 04:49:20.593 +00:00] [WRN] [69] Emby.Server.Implementations.HttpServer.HttpListenerHost: HTTP Response 206 to "192.168.1.216". Time (slow): 0:37:41.7260514. "http://jellyfin.line72.net/Videos/f6f7673843eaa5138502dd2f962c17f1/stream?AudioStreamIndex=1&Container=mkv&PlaySessionId=a53dfc1607ec44ea80a72fdebdab498a&Static=true"
[2021-11-16 04:54:49.993 +00:00] [INF] [40] Emby.Server.Implementations.Session.SessionManager: Playback stopped reported by app "Jellyfin Roku" "1.4.9" playing "The Spellingg Bee". Stopped at "2590000" ms
line72 commented 2 years ago

Upgrading my backend from 10.6.4 to 10.7.7 seems to have resolved most of my subtitle issues on my Roku!

neilsb commented 2 years ago

Just going to close this now, if your problems have been resolved. If you're still having problems just re-open this or create a new issue.

The Roku app should work with 10.7 and 10.8 now, but probably not fully working with 10.6, so best to upgrade anyhow.