Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Black Screen During Playback - Affecting Multiple Devices - ONLY in Jellfyin for Android TV App #3859

Closed
zkhcohen opened this issue Aug 7, 2024 · 4 comments
Labels
bug Something isn't working playback Issue related to media playback

Comments

@zkhcohen
Copy link
Contributor

zkhcohen commented Aug 7, 2024

Describe the bug

Issue:

  • A lot of my media library (mostly HEVC + AAC) no longer plays in the Jellyfin for Android TV App.

Symptoms:

  • When I go to play an affected file, I see a black screen in the app, and the play button doesn't work.
  • When I look at the "dashboard" page through the UI on another device, the media is allegedly direct-playing, and you can see the seconds tick upwards.

Notes:

  • This is only affecting Jellyfin for Android TV
  • This is definitely an issue with the app, not the platform --
    • I can replicate the issue both on my CCwGTV and in the Jellyfin for Android TV app installed on my Galaxy S24.
    • The files which play on the CCwGTV, also play on my phone, and the files that don't play on CCwGTV, don't play on my phone.
    • Every other Jellyfin app plays all of the files correctly. Other video players play the files correctly.
  • Inspecting both files with MediaInfo shows no differences other than some inconsequential variations in bitrate and length.
  • Forcing transcoding by lowering the bitrate allows the files to play in 0.17.1 which forces the use of Exoplayer.
  • If I install an older APK and use LibVLC + Downmix to stereo, the files play.

Logs

[2024-08-07 14:45:12.568 -07:00] [INF] [41] Jellyfin.Api.Helpers.MediaInfoHelper: User policy for "chromecast". EnablePlaybackRemuxing: True EnableVideoPlaybackTranscoding: True EnableAudioPlaybackTranscoding: True
[2024-08-07 14:45:12.742 -07:00] [INF] [49] Jellyfin.Plugin.PlaybackReporting.EventMonitorEntryPoint: Adding playback tracker : 0c48e38a281ab1a4a6716ebca6c3b4d4dace7db6-f9b8134cb3b14c0f9166a88a52bbdc9e-cfc6707d6093a7a356c5baaf4f59fed8
[2024-08-07 14:45:12.742 -07:00] [INF] [49] Jellyfin.Plugin.PlaybackReporting.Data.PlaybackTracker: PlaybackTracker : Adding Start Event : 08/07/2024 14:45:12
[2024-08-07 14:45:12.742 -07:00] [INF] [49] Jellyfin.Plugin.PlaybackReporting.EventMonitorEntryPoint: Creating StartPlaybackTimer Task
[2024-08-07 14:45:12.742 -07:00] [INF] [48] Jellyfin.Plugin.PlaybackReporting.EventMonitorEntryPoint: StartPlaybackTimer : Entered
[2024-08-07 14:45:13.733 -07:00] [INF] [48] Jellyfin.Plugin.PlaybackReporting.EventMonitorEntryPoint: Processing playback tracker : "0c48e38a281ab1a4a6716ebca6c3b4d4dace7db6-f9b8134cb3b14c0f9166a88a52bbdc9e-cfc6707d6093a7a356c5baaf4f59fed8"
[2024-08-07 14:45:32.744 -07:00] [INF] [21] Jellyfin.Plugin.PlaybackReporting.EventMonitorEntryPoint: session.RemoteEndPoint : "<IP_ADDRESS>"
[2024-08-07 14:45:32.744 -07:00] [INF] [21] Jellyfin.Plugin.PlaybackReporting.EventMonitorEntryPoint: StartPlaybackTimer : event_playing_id     = "cfc6707d6093a7a356c5baaf4f59fed8"
[2024-08-07 14:45:32.744 -07:00] [INF] [21] Jellyfin.Plugin.PlaybackReporting.EventMonitorEntryPoint: StartPlaybackTimer : event_user_id        = "f9b8134cb3b14c0f9166a88a52bbdc9e"
[2024-08-07 14:45:32.744 -07:00] [INF] [21] Jellyfin.Plugin.PlaybackReporting.EventMonitorEntryPoint: StartPlaybackTimer : event_user_id_int    = 4
[2024-08-07 14:45:32.744 -07:00] [INF] [21] Jellyfin.Plugin.PlaybackReporting.EventMonitorEntryPoint: StartPlaybackTimer : session_playing_id   = "cfc6707d6093a7a356c5baaf4f59fed8"
[2024-08-07 14:45:32.744 -07:00] [INF] [21] Jellyfin.Plugin.PlaybackReporting.EventMonitorEntryPoint: StartPlaybackTimer : session_user_id      = "f9b8134cb3b14c0f9166a88a52bbdc9e"
[2024-08-07 14:45:32.744 -07:00] [INF] [21] Jellyfin.Plugin.PlaybackReporting.EventMonitorEntryPoint: StartPlaybackTimer : play_method          = "DirectPlay"
[2024-08-07 14:45:32.744 -07:00] [INF] [21] Jellyfin.Plugin.PlaybackReporting.EventMonitorEntryPoint: StartPlaybackTimer : e.ClientName         = "Android TV"
[2024-08-07 14:45:32.744 -07:00] [INF] [21] Jellyfin.Plugin.PlaybackReporting.EventMonitorEntryPoint: StartPlaybackTimer : e.DeviceName         = "Chromecast"
[2024-08-07 14:45:32.744 -07:00] [INF] [21] Jellyfin.Plugin.PlaybackReporting.EventMonitorEntryPoint: StartPlaybackTimer : ItemName             = "<FILE_NAME>"
[2024-08-07 14:45:32.744 -07:00] [INF] [21] Jellyfin.Plugin.PlaybackReporting.EventMonitorEntryPoint: StartPlaybackTimer : ItemId               = "cfc6707d6093a7a356c5baaf4f59fed8"
[2024-08-07 14:45:32.744 -07:00] [INF] [21] Jellyfin.Plugin.PlaybackReporting.EventMonitorEntryPoint: StartPlaybackTimer : ItemType             = "Episode"
[2024-08-07 14:45:32.744 -07:00] [INF] [21] Jellyfin.Plugin.PlaybackReporting.EventMonitorEntryPoint: StartPlaybackTimer : All matches, playback registered
[2024-08-07 14:45:32.744 -07:00] [INF] [21] Jellyfin.Plugin.PlaybackReporting.EventMonitorEntryPoint: Playback tracker found, adding playback info : "0c48e38a281ab1a4a6716ebca6c3b4d4dace7db6-f9b8134cb3b14c0f9166a88a52bbdc9e-cfc6707d6093a7a356c5baaf4f59fed8"
[2024-08-07 14:45:32.744 -07:00] [INF] [21] Jellyfin.Plugin.PlaybackReporting.EventMonitorEntryPoint: Saving playback tracking activity in DB
[2024-08-07 14:45:32.750 -07:00] [INF] [21] Jellyfin.Plugin.PlaybackReporting.EventMonitorEntryPoint: StartPlaybackTimer : Exited
[2024-08-07 14:45:33.734 -07:00] [INF] [49] Jellyfin.Plugin.PlaybackReporting.EventMonitorEntryPoint: Processing playback tracker : "0c48e38a281ab1a4a6716ebca6c3b4d4dace7db6-f9b8134cb3b14c0f9166a88a52bbdc9e-cfc6707d6093a7a356c5baaf4f59fed8"
[2024-08-07 14:45:53.736 -07:00] [INF] [49] Jellyfin.Plugin.PlaybackReporting.EventMonitorEntryPoint: Processing playback tracker : "0c48e38a281ab1a4a6716ebca6c3b4d4dace7db6-f9b8134cb3b14c0f9166a88a52bbdc9e-cfc6707d6093a7a356c5baaf4f59fed8"
[2024-08-07 14:46:14.735 -07:00] [INF] [48] Jellyfin.Plugin.PlaybackReporting.EventMonitorEntryPoint: Processing playback tracker : "0c48e38a281ab1a4a6716ebca6c3b4d4dace7db6-f9b8134cb3b14c0f9166a88a52bbdc9e-cfc6707d6093a7a356c5baaf4f59fed8"
[2024-08-07 14:46:35.730 -07:00] [INF] [41] Jellyfin.Plugin.PlaybackReporting.EventMonitorEntryPoint: Processing playback tracker : "0c48e38a281ab1a4a6716ebca6c3b4d4dace7db6-f9b8134cb3b14c0f9166a88a52bbdc9e-cfc6707d6093a7a356c5baaf4f59fed8"
[2024-08-07 14:46:55.769 -07:00] [INF] [48] Jellyfin.Plugin.PlaybackReporting.EventMonitorEntryPoint: Processing playback tracker : "0c48e38a281ab1a4a6716ebca6c3b4d4dace7db6-f9b8134cb3b14c0f9166a88a52bbdc9e-cfc6707d6093a7a356c5baaf4f59fed8"
[2024-08-07 14:47:15.828 -07:00] [INF] [41] Jellyfin.Plugin.PlaybackReporting.EventMonitorEntryPoint: Processing playback tracker : "0c48e38a281ab1a4a6716ebca6c3b4d4dace7db6-f9b8134cb3b14c0f9166a88a52bbdc9e-cfc6707d6093a7a356c5baaf4f59fed8"

FFmpeg logs

No response

Media info of the file

General
Unique ID                                : 105903635135777928328199922778442239003 (0x4FAC4C57ABA52185F37C67696CAF0C1B)
Complete name                            : \\<IP_ADDRESS>\media_storage\tv\<TV_SHOW>\Season 9\<EPISODE>.mkv
Format                                   : Matroska
Format version                           : Version 4
File size                                : 2.39 GiB
Duration                                 : 54 min 4 s
Overall bit rate                         : 6 322 kb/s
Frame rate                               : 23.976 FPS
Writing application                      : Lavf60.3.100
Writing library                          : Lavf60.3.100
ErrorDetectionType                       : Per level 1
JBDONEDATE                               : 2024-07-02T09:53:46.912Z
JBDONEVERSION                            : 1

Video
ID                                       : 1
Format                                   : HEVC
Format/Info                              : High Efficiency Video Coding
Format profile                           : Main 10@L4@Main
Codec ID                                 : V_MPEGH/ISO/HEVC
Duration                                 : 54 min 4 s
Bit rate                                 : 6 188 kb/s
Width                                    : 1 920 pixels
Height                                   : 1 080 pixels
Display aspect ratio                     : 16:9
Frame rate mode                          : Constant
Frame rate                               : 23.976 (24000/1001) FPS
Color space                              : YUV
Chroma subsampling                       : 4:2:0 (Type 0)
Bit depth                                : 10 bits
Bits/(Pixel*Frame)                       : 0.124
Stream size                              : 2.34 GiB (98%)
Writing library                          : Lavc60.3.100 hevc_vaapi
Language                                 : English
Default                                  : Yes
Forced                                   : No
Color range                              : Limited
Color primaries                          : BT.709
Transfer characteristics                 : BT.709
Matrix coefficients                      : BT.709

Audio
ID                                       : 2
Format                                   : AAC LC
Format/Info                              : Advanced Audio Codec Low Complexity
Codec ID                                 : A_AAC-2
Duration                                 : 54 min 4 s
Bit rate                                 : 132 kb/s
Channel(s)                               : 2 channels
Channel layout                           : L R
Sampling rate                            : 48.0 kHz
Frame rate                               : 46.875 FPS (1024 SPF)
Compression mode                         : Lossy
Stream size                              : 50.4 MiB (2%)
Writing library                          : Lavc60.3.100 aac
Language                                 : English
Default                                  : Yes
Forced                                   : No

Text #1
ID                                       : 3
Format                                   : UTF-8
Codec ID                                 : S_TEXT/UTF8
Codec ID/Info                            : UTF-8 Plain Text
Duration                                 : 53 min 58 s
Bit rate                                 : 98 b/s
Frame rate                               : 0.404 FPS
Count of elements                        : 1308
Stream size                              : 38.8 KiB (0%)
Language                                 : English
Default                                  : Yes
Forced                                   : No

Text #2
ID                                       : 4
Format                                   : UTF-8
Codec ID                                 : S_TEXT/UTF8
Codec ID/Info                            : UTF-8 Plain Text
Duration                                 : 54 min 0 s
Bit rate                                 : 99 b/s
Frame rate                               : 0.411 FPS
Count of elements                        : 1331
Stream size                              : 39.3 KiB (0%)
Title                                    : SDH
Language                                 : English
Default                                  : No
Forced                                   : No

Menu
00:00:00.000                             : en:CHAPTER 1
00:10:00.000                             : en:CHAPTER 2
00:20:00.000                             : en:CHAPTER 3
00:30:00.000                             : en:CHAPTER 4
00:40:00.000                             : en:CHAPTER 5
00:50:00.000                             : en:CHAPTER 6
00:54:03.000                             : en:CHAPTER 7

Application version

0.17.1

Device information

CCwGTV - Patch June 1, 2024 - Kernel Version 4.9.269

Android version

Android TV OS version 12

Jellyfin server version

10.9.9

@zkhcohen zkhcohen added bug Something isn't working playback Issue related to media playback labels Aug 7, 2024
@CasuallyFilthy
Copy link

CasuallyFilthy commented Aug 8, 2024

I'm having a sorta similar issue. In version 0.17+, video playback on Android TVs will pause after a minute or so while the audio keeps playing. Downgrading to 0.16.11 is the only fix I've found. No amount of settings fiddling in 0.17 or 0.17.1 was able to resolve the issue

Server on version 10.9.9 as well

@zkhcohen
Copy link
Contributor Author

zkhcohen commented Aug 8, 2024

Upon further inspection, this seems to be caused by an Exoplayer issue with media converted using
Docker x64 Jellyfin FFmpeg v6.0.1-7
mkvtoolnix v85.0.0

This affects all media transcoded after Tdarr updated from 2.20.01 to 2.22.01.

Closing this issue.

@zkhcohen zkhcohen closed this as completed Aug 8, 2024
@errror
Copy link

errror commented Aug 8, 2024

I can confirm, that it only affects files created with ffmpeg6 (creator: Lavf60.3.100). However I do not understand why you closed the issue, @zkhcohen ?

I think jellyfin-androidtv 0.17 and higher should support those files. I am still willing to provide assistance in solving this issue if some dev could give me some hints how!

I can provide affected files (recordings from German television). I'm also able to connect to my FireTV now via adb and provide catlog output but would prefer not to upload these logs unfiltered in public here.

@zkhcohen
Copy link
Contributor Author

zkhcohen commented Aug 8, 2024

I can confirm, that it only affects files created with ffmpeg6 (creator: Lavf60.3.100). However I do not understand why you closed the issue, @zkhcohen ?

I think jellyfin-androidtv 0.17 and higher should support those files. I am still willing to provide assistance in solving this issue if some dev could give me some hints how!

This is a very contentious issue in this space, unfortunately.

I agree that Jellyfin for Android TV should compensate for errors found in playback due to Exoplayer incompatibilities, but the root issue isn't in Jellyfin for Android TV, hence my closure of the bug report.

I have a busy day at work today, but I'm running my broken media through a variety of transcoding pipelines to pinpoint the issue.

I have some ideas of what the cause may be, and they mostly revolve around metadata that FFMPEG-6 is attaching in certain scenarios.

If you want to get back up and running immediately, you can remux your media (even using FFMPEG-6!) and it should play correctly:

ffmpeg -i input.mkv -c copy output.mkv

I'll continue updating this issue in the other thread: #3830 (comment)

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
bug Something isn't working playback Issue related to media playback
Projects
None yet
Development

No branches or pull requests

3 participants