jellyfin-androidtv icon indicating copy to clipboard operation
jellyfin-androidtv copied to clipboard

Strange Transcoding behavior with NVIDIA Shield Pro

Open lordratner opened this issue 7 months ago • 3 comments

Describe the bug

When the Bitrate limit is set to "Auto," videos are randomly transcoded at 26.3Mbps. If the file is huge (for example a 93GB MKV) then forcing the bitrate to 120 will crash Jellyfin. Depending on the movie, it will stop crashing once I set it to around 60 or 70 Mbps.

On a movie around 20-25GB, the same weird 26.3Mbps transcoding happens with the bitrate set to "auto." But now the bitrate can be set as high as 120 and the video will direct stream as long as the bitrate is set above the native bitrate of the file.

The Transcoding reasons as viewed in the Dashboard is not consistent either. Sometimes it is because the max bitrate is exceeded, other times because the format isn't supported, or the audio codec isn't supported. The reason will change as the bitrate is set at different values.

I'm running the Shield on gigabit ethernet, with speeds over 800Mbps recorded.

Logs

client: Jellyfin for Android TV client_version: 0.16.11 client_repository: https://github.com/jellyfin/jellyfin-androidtv type: crash_report format: markdown

Logs

Stack Trace:

java.lang.NullPointerException: Attempt to get length of null array
	at org.jellyfin.androidtv.ui.playback.VideoManager.setVLCAudioTrack(VideoManager.java:677)
	at org.jellyfin.androidtv.ui.playback.PlaybackController.switchAudioStream(PlaybackController.java:933)
	at org.jellyfin.androidtv.ui.playback.PlaybackController.onPrepared(PlaybackController.java:1472)
	at org.jellyfin.androidtv.ui.playback.VideoManager.lambda$setupVLCListeners$3$org-jellyfin-androidtv-ui-playback-VideoManager(VideoManager.java:993)
	at org.jellyfin.androidtv.ui.playback.VideoManager$$ExternalSyntheticLambda10.onEvent(Unknown Source:2)
	at org.jellyfin.androidtv.ui.playback.VlcEventHandler.onEvent(VlcEventHandler.kt:14)
	at org.jellyfin.androidtv.ui.playback.VlcEventHandler.onEvent(VlcEventHandler.kt:5)
	at org.videolan.libvlc.VLCObject$1EventRunnable.run(VLCObject.java:170)
	at android.os.Handler.handleCallback(Handler.java:938)
	at android.os.Handler.dispatchMessage(Handler.java:99)
	at android.os.Looper.loop(Looper.java:223)
	at android.app.ActivityThread.main(ActivityThread.java:7668)
	at java.lang.reflect.Method.invoke(Native Method)
	at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:592)
	at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:947)

Logcat:

06-25 13:30:29.820 W/MediaCodecCapabilitiesTest(15910): 	at org.jellyfin.androidtv.ui.playback.PlaybackController.play(PlaybackController.java:438)
06-25 13:30:29.820 W/MediaCodecCapabilitiesTest(15910): 	at org.jellyfin.androidtv.ui.playback.CustomPlaybackOverlayFragment.onActivityCreated(CustomPlaybackOverlayFragment.java:351)
06-25 13:30:29.820 W/MediaCodecCapabilitiesTest(15910): 	at androidx.fragment.app.Fragment.performActivityCreated(Fragment.java:3156)
06-25 13:30:29.820 W/MediaCodecCapabilitiesTest(15910): 	at androidx.fragment.app.FragmentStateManager.activityCreated(FragmentStateManager.java:619)
06-25 13:30:29.820 W/MediaCodecCapabilitiesTest(15910): 	at androidx.fragment.app.FragmentStateManager.moveToExpectedState(FragmentStateManager.java:275)
06-25 13:30:29.820 W/MediaCodecCapabilitiesTest(15910): 	at androidx.fragment.app.FragmentManager.executeOpsTogether(FragmentManager.java:1943)
06-25 13:30:29.820 W/MediaCodecCapabilitiesTest(15910): 	at androidx.fragment.app.FragmentManager.removeRedundantOperationsAndExecute(FragmentManager.java:1839)
06-25 13:30:29.820 W/MediaCodecCapabilitiesTest(15910): 	at androidx.fragment.app.FragmentManager.execPendingActions(FragmentManager.java:1782)
06-25 13:30:29.820 W/MediaCodecCapabilitiesTest(15910): 	at androidx.fragment.app.FragmentManager$5.run(FragmentManager.java:565)
06-25 13:30:29.820 W/MediaCodecCapabilitiesTest(15910): 	at android.os.Handler.handleCallback(Handler.java:938)
06-25 13:30:29.820 W/MediaCodecCapabilitiesTest(15910): 	at android.os.Handler.dispatchMessage(Handler.java:99)
06-25 13:30:29.820 W/MediaCodecCapabilitiesTest(15910): 	at android.os.Looper.loop(Looper.java:223)
06-25 13:30:29.820 W/MediaCodecCapabilitiesTest(15910): 	at android.app.ActivityThread.main(ActivityThread.java:7668)
06-25 13:30:29.820 W/MediaCodecCapabilitiesTest(15910): 	at java.lang.reflect.Method.invoke(Native Method)
06-25 13:30:29.820 W/MediaCodecCapabilitiesTest(15910): 	at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:592)
06-25 13:30:29.820 W/MediaCodecCapabilitiesTest(15910): 	at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:947)
06-25 13:30:29.823 I/ProfileHelper$deviceAV1CodecProfile(15910): *** Does NOT support AV1
06-25 13:30:29.843 D/jellyfin-apiclient(15910): Adding request to queue: https://jellyfin.ratner.com/Items/33160096-c244-9466-358c-21072682a228/PlaybackInfo?format=json
06-25 13:30:29.850 W/AudioManager(15910): Use of stream types is deprecated for operations other than volume control
06-25 13:30:29.850 W/AudioManager(15910): See the documentation of requestAudioFocus() for what to use instead with android.media.AudioAttributes to qualify your playback use case
06-25 13:30:29.899 I/jellyfin-apiclient(15910): Response received from: https://jellyfin.ratner.com/Items/33160096-c244-9466-358c-21072682a228/PlaybackInfo?format=json
06-25 13:30:29.903 I/PlaybackController(15910): VLC would direct stream
06-25 13:30:29.907 D/jellyfin-apiclient(15910): Adding request to queue: https://jellyfin.ratner.com/Items/33160096-c244-9466-358c-21072682a228/PlaybackInfo?format=json
06-25 13:30:29.961 I/jellyfin-apiclient(15910): Response received from: https://jellyfin.ratner.com/Items/33160096-c244-9466-358c-21072682a228/PlaybackInfo?format=json
06-25 13:30:29.964 I/PlaybackController(15910): Internal player would transcode
06-25 13:30:29.964 I/PlaybackController(15910): Explicit deinterlacing will NOT be used
06-25 13:30:29.965 I/PlaybackController(15910): User preferred player is: AUTO
06-25 13:30:29.965 I/PlaybackController(15910): Preferring VLC
06-25 13:30:29.998 I/VideoManager(15910): Network buffer set to 600
06-25 13:30:30.000 E/VLC     (15910): [00000023d984a820/3e26] libvlc audio output: GetStaticFieldID(AudioFormat.ENCODING_PCM_32BIT) failed
06-25 13:30:30.002 D/VideoManager(15910): Surface attached
06-25 13:30:30.004 D/PlaybackController(15910): default audio index set to 1
06-25 13:30:30.004 D/PlaybackController(15910): default audio index set to 1 remote default 1
06-25 13:30:30.005 D/PlaybackController(15910): default sub index set to -1 remote default -1
06-25 13:30:30.005 I/PlaybackController(15910): Playing back in VLC.
06-25 13:30:30.006 D/VideoManager(15910): Setting playback speed: 1.000000
06-25 13:30:30.011 I/VideoManager(15910): Video path set to: https://jellyfin.ratner.com/Videos/33160096-c244-9466-358c-21072682a228/stream.mpegts?api_key=90601c29439c4b939069caae13e7026e&DeviceId=69ddffe1dfc32f51f21d6187eddfaa15672b7640&MediaSourceId=33160096c2449466358c21072682a228&Tag=a05431c383f3b9644b2c4fa3553a0a60&Static=true
06-25 13:30:30.013 D/VideoManager(15910): Setting video index to: 0
06-25 13:30:30.015 D/jellyfin-apiclient(15910): Adding request to queue: https://jellyfin.ratner.com/Sessions/Playing
06-25 13:30:30.016 I/ReportingHelper(15910): Playback of Avatar: The Way of Water started.
06-25 13:30:30.080 I/jellyfin-apiclient(15910): Response received from: https://jellyfin.ratner.com/Sessions/Playing
06-25 13:30:30.567 I/org.jellyfin.sdk.api.sockets.OkHttpWebsocketSession(15910): Receiving (raw) message {"MessageId":"aa9bdcceebda4c8691fd4c8b8e2c5488","Data":{"UserId":"3636693f5d414b17914b354badc9ad91","UserDataList":[{"PlaybackPositionTicks":0,"PlayCount":9,"IsFavorite":false,"LastPlayedDate":"2024-06-25T18:30:31.3573656Z","Played":false,"Key":"33160096-c244-9466-358c-21072682a228","ItemId":"33160096c2449466358c21072682a228"},{"UnplayedItemCount":669,"PlaybackPositionTicks":0,"PlayCount":0,"IsFavorite":false,"Played":false,"Key":"c0830691-392f-b8d9-0b5b-290cf4462736","ItemId":"c0830691392fb8d90b5b290cf4462736"}]},"MessageType":"UserDataChanged"}
06-25 13:30:30.835 W/VLC     (15910): [00000023a986c440/3e88] libvlc demux: this does not look like a TS stream, continuing
06-25 13:30:30.835 W/VLC     (15910): [00000023a986c440/3e88] libvlc demux: lost synchro
06-25 13:30:30.836 D/VideoManager(15910): re-retrieved libVLC audio track index -1
06-25 13:30:30.837 D/jellyfin-apiclient(15910): Adding request to queue: https://jellyfin.ratner.com/Sessions/Playing/Progress
06-25 13:30:30.837 I/PlaybackController(15910): Play method: Direct
06-25 13:30:30.837 I/PlaybackController(15910): Turning off subs
06-25 13:30:30.837 D/PlaybackController(15910): Setting subtitle index to: -1
06-25 13:30:30.839 D/VideoManager(15910): re-retrieved libVLC audio track index -1
06-25 13:30:30.839 D/PlaybackController(15910): trying to switch audio stream from -1 to 1
06-25 13:30:30.839 D/VideoManager(15910): Setting VLC audio track index to: 1
06-25 13:30:30.839 D/AndroidRuntime(15910): Shutting down VM
--------- beginning of crash
06-25 13:30:30.840 E/AndroidRuntime(15910): FATAL EXCEPTION: main
06-25 13:30:30.840 E/AndroidRuntime(15910): Process: org.jellyfin.androidtv, PID: 15910
06-25 13:30:30.840 E/AndroidRuntime(15910): java.lang.NullPointerException: Attempt to get length of null array
06-25 13:30:30.840 E/AndroidRuntime(15910): 	at org.jellyfin.androidtv.ui.playback.VideoManager.setVLCAudioTrack(VideoManager.java:677)
06-25 13:30:30.840 E/AndroidRuntime(15910): 	at org.jellyfin.androidtv.ui.playback.PlaybackController.switchAudioStream(PlaybackController.java:933)
06-25 13:30:30.840 E/AndroidRuntime(15910): 	at org.jellyfin.androidtv.ui.playback.PlaybackController.onPrepared(PlaybackController.java:1472)
06-25 13:30:30.840 E/AndroidRuntime(15910): 	at org.jellyfin.androidtv.ui.playback.VideoManager.lambda$setupVLCListeners$3$org-jellyfin-androidtv-ui-playback-VideoManager(VideoManager.java:993)
06-25 13:30:30.840 E/AndroidRuntime(15910): 	at org.jellyfin.androidtv.ui.playback.VideoManager$$ExternalSyntheticLambda10.onEvent(Unknown Source:2)
06-25 13:30:30.840 E/AndroidRuntime(15910): 	at org.jellyfin.androidtv.ui.playback.VlcEventHandler.onEvent(VlcEventHandler.kt:14)
06-25 13:30:30.840 E/AndroidRuntime(15910): 	at org.jellyfin.androidtv.ui.playback.VlcEventHandler.onEvent(VlcEventHandler.kt:5)
06-25 13:30:30.840 E/AndroidRuntime(15910): 	at org.videolan.libvlc.VLCObject$1EventRunnable.run(VLCObject.java:170)
06-25 13:30:30.840 E/AndroidRuntime(15910): 	at android.os.Handler.handleCallback(Handler.java:938)
06-25 13:30:30.840 E/AndroidRuntime(15910): 	at android.os.Handler.dispatchMessage(Handler.java:99)
06-25 13:30:30.840 E/AndroidRuntime(15910): 	at android.os.Looper.loop(Looper.java:223)
06-25 13:30:30.840 E/AndroidRuntime(15910): 	at android.app.ActivityThread.main(ActivityThread.java:7668)
06-25 13:30:30.840 E/AndroidRuntime(15910): 	at java.lang.reflect.Method.invoke(Native Method)
06-25 13:30:30.840 E/AndroidRuntime(15910): 	at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:592)
06-25 13:30:30.840 E/AndroidRuntime(15910): 	at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:947)
06-25 13:30:30.840 E/ACRA    (15910): ACRA caught a NullPointerException for org.jellyfin.androidtv
06-25 13:30:30.840 E/ACRA    (15910): java.lang.NullPointerException: Attempt to get length of null array
06-25 13:30:30.840 E/ACRA    (15910): 	at org.jellyfin.androidtv.ui.playback.VideoManager.setVLCAudioTrack(VideoManager.java:677)
06-25 13:30:30.840 E/ACRA    (15910): 	at org.jellyfin.androidtv.ui.playback.PlaybackController.switchAudioStream(PlaybackController.java:933)
06-25 13:30:30.840 E/ACRA    (15910): 	at org.jellyfin.androidtv.ui.playback.PlaybackController.onPrepared(PlaybackController.java:1472)
06-25 13:30:30.840 E/ACRA    (15910): 	at org.jellyfin.androidtv.ui.playback.VideoManager.lambda$setupVLCListeners$3$org-jellyfin-androidtv-ui-playback-VideoManager(VideoManager.java:993)
06-25 13:30:30.840 E/ACRA    (15910): 	at org.jellyfin.androidtv.ui.playback.VideoManager$$ExternalSyntheticLambda10.onEvent(Unknown Source:2)
06-25 13:30:30.840 E/ACRA    (15910): 	at org.jellyfin.androidtv.ui.playback.VlcEventHandler.onEvent(VlcEventHandler.kt:14)
06-25 13:30:30.840 E/ACRA    (15910): 	at org.jellyfin.androidtv.ui.playback.VlcEventHandler.onEvent(VlcEventHandler.kt:5)
06-25 13:30:30.840 E/ACRA    (15910): 	at org.videolan.libvlc.VLCObject$1EventRunnable.run(VLCObject.java:170)
06-25 13:30:30.840 E/ACRA    (15910): 	at android.os.Handler.handleCallback(Handler.java:938)
06-25 13:30:30.840 E/ACRA    (15910): 	at android.os.Handler.dispatchMessage(Handler.java:99)
06-25 13:30:30.840 E/ACRA    (15910): 	at android.os.Looper.loop(Looper.java:223)
06-25 13:30:30.840 E/ACRA    (15910): 	at android.app.ActivityThread.main(ActivityThread.java:7668)
06-25 13:30:30.840 E/ACRA    (15910): 	at java.lang.reflect.Method.invoke(Native Method)
06-25 13:30:30.840 E/ACRA    (15910): 	at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:592)
06-25 13:30:30.840 E/ACRA    (15910): 	at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:947)
06-25 13:30:30.840 D/ACRA    (15910): Building report
06-25 13:30:30.841 D/ACRA    (15910): Starting collectors with priority FIRST
06-25 13:30:30.841 D/ACRA    (15910): Calling collector org.acra.collector.DropBoxCollector
06-25 13:30:30.842 D/ACRA    (15910): Calling collector org.acra.collector.LogCatCollector
06-25 13:30:30.842 D/ACRA    (15910): Collector org.acra.collector.DropBoxCollector completed
06-25 13:30:30.842 D/ACRA    (15910): Calling collector org.acra.collector.StacktraceCollector
06-25 13:30:30.842 D/ACRA    (15910): Collector org.acra.collector.StacktraceCollector completed
06-25 13:30:30.849 D/ACRA    (15910): Retrieving logcat output (buffer:default)...
06-25 13:30:30.856 W/VLC     (15910): [00000023a986c440/3e88] libvlc demux: discontinuity indicator (pid=2048) 
06-25 13:30:30.856 W/VLC     (15910): [00000023a986c440/3e88] libvlc demux: lost synchro

App information

App version: 0.16.11 (161199)
Package name: org.jellyfin.androidtv
Build:

{"BOARD":"darcy","BOOTLOADER":"32.00.2019.50-t210-69ebfcbe","BRAND":"NVIDIA","CPU_ABI":"arm64-v8a","CPU_ABI2":"","DEVICE":"mdarcy","DISPLAY":"RQ1A.210105.003.7825230_3167.5736","FINGERPRINT":"NVIDIA\/mdarcy\/mdarcy:11\/RQ1A.210105.003\/7825230_3167.5736:user\/release-keys","HARDWARE":"darcy","HOST":"mobile-u64-5308-d7000","ID":"RQ1A.210105.003","IS_DEBUGGABLE":false,"IS_EMULATOR":false,"MANUFACTURER":"NVIDIA","MODEL":"SHIELD Android TV","PERMISSIONS_REVIEW_REQUIRED":true,"PRODUCT":"mdarcy","RADIO":"unknown","SUPPORTED_32_BIT_ABIS":["armeabi-v7a","armeabi"],"SUPPORTED_64_BIT_ABIS":["arm64-v8a"],"SUPPORTED_ABIS":["arm64-v8a","armeabi-v7a","armeabi"],"TAGS":"release-keys","TIME":1665975826000,"TYPE":"user","UNKNOWN":"unknown","USER":"NVIDIA","VERSION":{"ACTIVE_CODENAMES":[],"BASE_OS":"","CODENAME":"REL","INCREMENTAL":"7825230_3167.5736","PREVIEW_SDK_FINGERPRINT":"REL","PREVIEW_SDK_INT":0,"RELEASE":"11","RELEASE_OR_CODENAME":"11","SDK":"30","SDK_INT":30,"SECURITY_PATCH":"2022-04-05"}}

Build config:

{"APPLICATION_ID":"org.jellyfin.androidtv","BUILD_TYPE":"release","DEBUG":false,"DEVELOPMENT":false,"VERSION_CODE":161199,"VERSION_NAME":"0.16.11"}

Device information

Android version: 11
Device brand: NVIDIA
Device product: mdarcy
Device model: SHIELD Android TV

Crash information

Start time: 2024-06-25T13:30:20.059-05:00
Crash time: 2024-06-25T13:30:30.882-05:00

FFmpeg logs

No response

Media info of the file

Avatar The Way of Water (2022) - BR-DISK/Bluray
Container: mpegts
Path: /mnt/theater/movies/Avatar The Way of Water (2022)/Avatar The Way of Water (2022) - BR-DISK.iso
Size: 81014 MB

Video
Title: 4K HEVC HDR
Codec: HEVC
Codec tag: HDMV
AVC: No
Profile: Main 10
Level: 153
Resolution: 3840x2160
Aspect ratio: 16:9
Anamorphic: No
Interlaced: No
Framerate: 23.976025
Bitrate: 58852 kbps
Bit depth: 10 bit
Video range: HDR
Video range type: HDR10
Color space: bt2020nc
Color transfer: smpte2084
Color primaries: bt2020
Pixel format: yuv420p10le
Ref frames: 1

Audio
Title: TRUEHD - 7.1
Codec: TRUEHD
Codec tag: AC-3
AVC: No
Layout: 7.1
Channels: 8 ch
Sample rate: 48000 Hz
Bit depth: 24 bit
Default: No
Forced: No
External: No

Audio
Title: Dolby Digital - 5.1
Codec: AC3
Codec tag: AC-3
AVC: No
Layout: 5.1
Channels: 6 ch
Bitrate: 640 kbps
Sample rate: 48000 Hz
Default: No
Forced: No
External: No

Audio
Title: DTS-HD MA - Stereo
Codec: DTS
AVC: No
Profile: DTS-HD MA
Layout: stereo
Channels: 2 ch
Sample rate: 48000 Hz
Bit depth: 24 bit
Default: No
Forced: No
External: No

Audio
Title: Dolby Digital - Stereo
Codec: AC3
Codec tag: AC-3
AVC: No
Layout: stereo
Channels: 2 ch
Bitrate: 320 kbps
Sample rate: 48000 Hz
Default: No
Forced: No
External: No

Audio
Title: Dolby Digital - 5.1
Codec: AC3
Codec tag: AC-3
AVC: No
Layout: 5.1
Channels: 6 ch
Bitrate: 640 kbps
Sample rate: 48000 Hz
Default: No
Forced: No
External: No

Audio
Title: Dolby Digital - 5.1
Codec: AC3
Codec tag: AC-3
AVC: No
Layout: 5.1
Channels: 6 ch
Bitrate: 640 kbps
Sample rate: 48000 Hz
Default: No
Forced: No
External: No

Audio
Title: Dolby Digital+ - 7.1
Codec: EAC3
Codec tag: AC-3
AVC: No
Layout: 7.1
Channels: 8 ch
Bitrate: 1024 kbps
Sample rate: 48000 Hz
Default: No
Forced: No
External: No

Audio
Title: Dolby Digital+ - 7.1
Codec: EAC3
Codec tag: AC-3
AVC: No
Layout: 7.1
Channels: 8 ch
Bitrate: 1024 kbps
Sample rate: 48000 Hz
Default: No
Forced: No
External: No

Subtitle
Title: Undefined - PGSSUB
Codec: PGSSUB
AVC: No
Resolution: 1920x1080
Default: No
Forced: No
External: No

Subtitle
Title: Undefined - PGSSUB
Codec: PGSSUB
AVC: No
Resolution: 1920x1080
Default: No
Forced: No
External: No

Subtitle
Title: Undefined - PGSSUB
Codec: PGSSUB
AVC: No
Resolution: 1920x1080
Default: No
Forced: No
External: No

Subtitle
Title: Undefined - PGSSUB
Codec: PGSSUB
AVC: No
Resolution: 1920x1080
Default: No
Forced: No
External: No

Subtitle
Title: Undefined - PGSSUB
Codec: PGSSUB
AVC: No
Resolution: 1920x1080
Default: No
Forced: No
External: No

Subtitle
Title: Undefined - PGSSUB
Codec: PGSSUB
AVC: No
Resolution: 1920x1080
Default: No
Forced: No
External: No

Subtitle
Title: Undefined - PGSSUB
Codec: PGSSUB
AVC: No
Resolution: 1920x1080
Default: No
Forced: No
External: No

Audio
Title: Dolby Digital - 0 ch
Codec: AC3
AVC: No
Bitrate: 192 kbps
Default: No
Forced: No
External: No

Application version

0.16.11

Device information

Nvidia Shield Pro 2019

Android version

Android 11

Jellyfin server version

10.9.6

lordratner avatar Jun 25 '24 19:06 lordratner