jellyfin / jellyfin-androidtv

Android TV Client for Jellyfin
https://jellyfin.org
GNU General Public License v2.0
2.85k stars 488 forks source link

Since 0.17: Player erroring after trying to DirectPlay media with (presumably) unsupported ASS subtitles #3898

Closed anthonymag closed 2 months ago

anthonymag commented 2 months ago

Describe the bug

This seems to have started since the 0.17 update. In the past these were always burned in because the codec isn't supported on my Android TV device (special fonts? I guess?). By the logs it seems like they're trying to direct play now. As far as I know there isn't a way for me to just choose SRT subs before the media begins playing.

  1. Attempt to play media with ASS subtitles
  2. Get "Player error encountered"...."Too many errors, giving up"

Web and web wrapper clients work fine. This is happening on two different "Chromecast with Google TV" devices.

It also seems that if I start the episode on another device, then resume from the ATV, it works.

Logs

App:

08-13 19:02:07.592  7327  7327 D NavigationRepositoryImpl: Navigating to Fragment(fragment=class org.jellyfin.androidtv.ui.playback.CustomPlaybackOverlayFragment (Kotlin reflection is not available), arguments=Bundle[{Position=0}]) (via navigate function)
08-13 19:02:07.748  3918  5859 I MediaFocusControl: requestAudioFocus() from uid/pid 10071/7327 AA=USAGE_MEDIA/CONTENT_TYPE_MUSIC clientId=android.media.AudioManager@d791ee7org.jellyfin.androidtv.ui.playback.CustomPlaybackOverlayFragment$6@bc81a13 callingPack=org.jellyfin.androidtv req=1 flags=0x0 sdk=34
08-13 19:02:12.832  3918  5859 I MediaFocusControl: abandonAudioFocus() from uid/pid 10071/7327 clientId=android.media.AudioManager@d791ee7org.jellyfin.androidtv.ui.playback.CustomPlaybackOverlayFragment$6@bc81a13
08-13 19:02:12.834  3918  5859 I MediaFocusControl: abandonAudioFocus() from uid/pid 10071/7327 clientId=android.media.AudioManager@d791ee7org.jellyfin.androidtv.ui.playback.CustomPlaybackOverlayFragment$6@bc81a13
08-13 19:02:13.497  3918  5859 W NotificationService: Toast already killed. pkg=org.jellyfin.androidtv token=android.os.BinderProxy@65f7e82
08-13 19:02:17.557  3918  5859 W NotificationService: Toast already killed. pkg=org.jellyfin.androidtv token=android.os.BinderProxy@391b80b

Container:

[2024-08-14 00:01:09.899 +00:00] [INF] [19] Jellyfin.Plugin.PlaybackReporting.EventMonitorEntryPoint: Adding playback tracker : 3248a9408298f8caa11dc1cf0e1a409f31b9fd45-359d73f376e74e27a72d7bc8486cf11e-6ab75893b7fb314d9852f70545694757
[2024-08-14 00:01:09.900 +00:00] [INF] [19] Jellyfin.Plugin.PlaybackReporting.Data.PlaybackTracker: PlaybackTracker : Adding Start Event : 08/14/2024 00:01:09
[2024-08-14 00:01:09.900 +00:00] [INF] [19] Jellyfin.Plugin.PlaybackReporting.EventMonitorEntryPoint: Creating StartPlaybackTimer Task
[2024-08-14 00:01:09.900 +00:00] [INF] [19] Jellyfin.Plugin.PlaybackReporting.EventMonitorEntryPoint: StartPlaybackTimer : Entered
[2024-08-14 00:01:10.720 +00:00] [INF] [31] Jellyfin.Plugin.PlaybackReporting.EventMonitorEntryPoint: Processing playback tracker : "3248a9408298f8caa11dc1cf0e1a409f31b9fd45-359d73f376e74e27a72d7bc8486cf11e-6ab75893b7fb314d9852f70545694757"
[2024-08-14 00:01:29.899 +00:00] [INF] [19] Jellyfin.Plugin.PlaybackReporting.EventMonitorEntryPoint: session.RemoteEndPoint : "2600:1700:17cd:42f:f5f4:3344:7508:2e7b"
[2024-08-14 00:01:29.899 +00:00] [INF] [19] Jellyfin.Plugin.PlaybackReporting.EventMonitorEntryPoint: StartPlaybackTimer : event_playing_id     = "6ab75893b7fb314d9852f70545694757"
[2024-08-14 00:01:29.899 +00:00] [INF] [19] Jellyfin.Plugin.PlaybackReporting.EventMonitorEntryPoint: StartPlaybackTimer : event_user_id        = "359d73f376e74e27a72d7bc8486cf11e"
[2024-08-14 00:01:29.899 +00:00] [INF] [19] Jellyfin.Plugin.PlaybackReporting.EventMonitorEntryPoint: StartPlaybackTimer : event_user_id_int    = 3
[2024-08-14 00:01:29.899 +00:00] [INF] [19] Jellyfin.Plugin.PlaybackReporting.EventMonitorEntryPoint: StartPlaybackTimer : session_playing_id   = "6ab75893b7fb314d9852f70545694757"
[2024-08-14 00:01:29.899 +00:00] [INF] [19] Jellyfin.Plugin.PlaybackReporting.EventMonitorEntryPoint: StartPlaybackTimer : session_user_id      = "359d73f376e74e27a72d7bc8486cf11e"
[2024-08-14 00:01:29.899 +00:00] [INF] [19] Jellyfin.Plugin.PlaybackReporting.EventMonitorEntryPoint: StartPlaybackTimer : play_method          = "DirectPlay"
[2024-08-14 00:01:29.899 +00:00] [INF] [19] Jellyfin.Plugin.PlaybackReporting.EventMonitorEntryPoint: StartPlaybackTimer : e.ClientName         = "Android TV"
[2024-08-14 00:01:29.899 +00:00] [INF] [19] Jellyfin.Plugin.PlaybackReporting.EventMonitorEntryPoint: StartPlaybackTimer : e.DeviceName         = "Living Room Chromecast"
[2024-08-14 00:01:29.899 +00:00] [INF] [19] Jellyfin.Plugin.PlaybackReporting.EventMonitorEntryPoint: StartPlaybackTimer : ItemName             = "One Piece - s19e798 - An Enemy Worth 800 Million! Luffy vs. Thousand-Armed Cracker!"
[2024-08-14 00:01:29.899 +00:00] [INF] [19] Jellyfin.Plugin.PlaybackReporting.EventMonitorEntryPoint: StartPlaybackTimer : ItemId               = "6ab75893b7fb314d9852f70545694757"
[2024-08-14 00:01:29.899 +00:00] [INF] [19] Jellyfin.Plugin.PlaybackReporting.EventMonitorEntryPoint: StartPlaybackTimer : ItemType             = "Episode"
[2024-08-14 00:01:29.900 +00:00] [INF] [19] Jellyfin.Plugin.PlaybackReporting.EventMonitorEntryPoint: StartPlaybackTimer : All matches, playback registered
[2024-08-14 00:01:29.900 +00:00] [INF] [19] Jellyfin.Plugin.PlaybackReporting.EventMonitorEntryPoint: Playback tracker found, adding playback info : "3248a9408298f8caa11dc1cf0e1a409f31b9fd45-359d73f376e74e27a72d7bc8486cf11e-6ab75893b7fb314d9852f70545694757"
[2024-08-14 00:01:29.900 +00:00] [INF] [19] Jellyfin.Plugin.PlaybackReporting.EventMonitorEntryPoint: Saving playback tracking activity in DB
[2024-08-14 00:01:29.906 +00:00] [INF] [19] Jellyfin.Plugin.PlaybackReporting.EventMonitorEntryPoint: StartPlaybackTimer : Exited
[2024-08-14 00:01:31.147 +00:00] [INF] [33] Emby.Server.Implementations.ScheduledTasks.TaskManager: "Webhook Item Added Notifier" Completed after 0 minute(s) and 0 seconds

FFmpeg logs

https://pastebin.com/aQYU2Lb6

Media info of the file

Media Info
One Piece (1999) - S19E0798 - An Enemy Worth 800 Million! Luffy vs. Thousand-Armed Cracker! [HDTV-1080p][10bit][x265][AAC 2.0][EN+JA]-G
Containermkv
Path/media/anime/One Piece (1999) [tvdbid-81797]/Season 19/One Piece (1999) - S19E0798 - An Enemy Worth 800 Million! Luffy vs. Thousand-Armed Cracker! [HDTV-1080p][10bit][x265][AAC 2.0][EN+JA]-G.mkv
Size399 MB
Video
Title1080p HEVC SDR
CodecHEVC
AVCNo
ProfileMain 10
Level120
Resolution1920x1080
Aspect ratio16:9
AnamorphicNo
InterlacedNo
Framerate23.976025
Bitrate2348 kbps
Bit depth10 bit
Video rangeSDR
Video range typeSDR
Pixel formatyuv420p10le
Ref frames1
Audio
TitleEnglish - AAC - Stereo - Default
Languageeng
CodecAAC
AVCNo
ProfileLC
Layoutstereo
Channels2 ch
Bitrate177 kbps
Sample rate48000 Hz
DefaultYes
ForcedNo
ExternalNo
Subtitle
TitleSigns & Songs - English - Default - ASS
Languageeng
CodecASS
AVCNo
DefaultYes
ForcedNo
ExternalNo
Audio
TitleJapanese - AAC - Stereo
Languagejpn
CodecAAC
AVCNo
ProfileLC
Layoutstereo
Channels2 ch
Bitrate196 kbps
Sample rate48000 Hz
DefaultNo
ForcedNo
ExternalNo
Subtitle
TitleFull Subtitles [Hatsuyuki] - English - ASS
Languageeng
CodecASS
AVCNo
DefaultNo
ForcedNo
ExternalNo
Subtitle
TitleCrunchyroll Subtitles - English - ASS
Languageeng
CodecASS
AVCNo
DefaultNo
ForcedNo
ExternalNo
Subtitle
TitleFrench (Kaerizaki-Fansub) - ASS
Languagefre
CodecASS
AVCNo
DefaultNo
ForcedNo
ExternalNo
Subtitle
TitleSpanish - ASS
Languagespa
CodecASS
AVCNo
DefaultNo
ForcedNo
ExternalNo
Subtitle
TitleBrazilian Portuguese - ASS
Languagepor
CodecASS
AVCNo
DefaultNo
ForcedNo
ExternalNo
Subtitle
TitleArabic (KiyoshiiSubs) - ASS
Languageara
CodecASS
AVCNo
DefaultNo
ForcedNo
ExternalNo
Subtitle
TitlePob - SUBRIP - External
Languagepob
CodecSUBRIP
AVCNo
DefaultNo
ForcedNo
ExternalYes

Application version

0.17.3

Device information

Chromecast with Google TV 4K

Android version

Android 13

Jellyfin server version

10.9.9

VampiricAlien commented 2 months ago

Any ffmpeg logs?

anthonymag commented 2 months ago

I included them but they're long so I added a link:

https://pastebin.com/aQYU2Lb6

VampiricAlien commented 2 months ago
Stream mapping:
  Stream #0:0 -> #0:0 (copy)
  Stream #0:2 -> #0:1 (copy)

Packet duration: -32 / dts: 67726264 is out of range FFmpeg has encountered a packet with an invalid duration or timestamp (DTS - Decode Time Stamp) value. Specifically:

The packet duration is negative (-32), which is invalid.
The DTS value (67726264) is considered out of range for the output format.

There was some changes for HEVC, I wonder if that is what's causing the errors.

Going to /web/index.html?#/dashboard/playback/transcoding in Jellyfin web, is encoding unticked?

anthonymag commented 2 months ago
Stream mapping:
  Stream #0:0 -> #0:0 (copy)
  Stream #0:2 -> #0:1 (copy)

Packet duration: -32 / dts: 67726264 is out of range FFmpeg has encountered a packet with an invalid duration or timestamp (DTS - Decode Time Stamp) value. Specifically:

The packet duration is negative (-32), which is invalid.
The DTS value (67726264) is considered out of range for the output format.

There was some changes for HEVC, I wonder if that is what's causing the errors.

Going to /web/index.html?#/dashboard/playback/transcoding in Jellyfin web, is encoding unticked?

Thanks! Here are my settings.

Screenshot_20240814-230704~2.png

anthonymag commented 2 months ago

Note for others seeing this: my workaround for now is to set my default bitrate super low (like below 1mbps for anime) to force transcoding, which then lets me select the subtitles causing them to burn in as expected. I can then turn the bitrate back up.

flubbacrud commented 2 months ago

i'm pretty sure this was the issue I am facing https://github.com/jellyfin/jellyfin-androidtv/issues/3913

Rollback to 0.16.11 client and set player to LibVLC, see if it works for you

anthonymag commented 2 months ago

I'm no longer experiencing this since https://github.com/jellyfin/jellyfin-androidtv/pull/3916

When a subtitle codec is unsupported, the video is transcoding as expected now.