jellyfin / jellyfin-android

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

2.3.0 crashes on any video play with native and external player #481

Closed Maxplosion closed 3 years ago

Maxplosion commented 3 years ago

Describe the bug New 2.3.0 version crashes when playing a video in native as well as external (VLC) player. I've been using jellyfin-android-v2.3.0-beta.3-libre-release since its release and that one worked fine without any issues.

To Reproduce

  1. go to any library that contains videos (doesn't matter if movies, shows, with or without subtitles, happens on any video)
  2. have client settings on native player or external player (in my case VLC)
  3. press play
  4. app crashes to homescreen

Expected behavior plays the video without crashing.

Logs

[2021-08-04 21:08:05.108 +02:00] [INF] [59] Jellyfin.Api.Controllers.MediaInfoController: GetPostedPlaybackInfo profile: DeviceProfile { Name: "Jellyfin Android", 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: 2147483647, MaxAlbumArtHeight: 2147483647, MaxIconWidth: null, MaxIconHeight: null, MaxStreamingBitrate: 8000000, MaxStaticBitrate: 8000000, MusicStreamingTranscodingBitrate: 128000, MaxStaticMusicBitrate: null, SonyAggregationFlags: null, ProtocolInfo: null, TimelineOffsetSeconds: 0, RequiresPlainVideoItems: False, RequiresPlainFolders: False, EnableMSMediaReceiverRegistrar: False, IgnoreTranscodeByteRangeRequests: False, XmlRootAttributes: [], DirectPlayProfiles: [DirectPlayProfile { Container: "mp4", AudioCodec: "mp3,aac", VideoCodec: "h263,mpeg4,h264,hevc,av1", Type: Video }, DirectPlayProfile { Container: "mp4", AudioCodec: "h263,mpeg4,h264,hevc,av1", VideoCodec: null, Type: Audio }, DirectPlayProfile { Container: "fmp4", AudioCodec: "", VideoCodec: "h263,mpeg4,h264,hevc,av1", Type: Video }, DirectPlayProfile { Container: "webm", AudioCodec: "vorbis,opus", VideoCodec: "vp8,vp9,av1", Type: Video }, DirectPlayProfile { Container: "webm", AudioCodec: "vp8,vp9,av1", VideoCodec: null, Type: Audio }, DirectPlayProfile { Container: "mkv", AudioCodec: "mp3,aac,vorbis,opus,flac", VideoCodec: "h263,mpeg4,h264,hevc,av1,vp8,vp9,av1", Type: Video }, DirectPlayProfile { Container: "mkv", AudioCodec: "h263,mpeg4,h264,hevc,av1,vp8,vp9,av1", VideoCodec: null, Type: Audio }, DirectPlayProfile { Container: "mp3", AudioCodec: "", VideoCodec: null, Type: Audio }, DirectPlayProfile { Container: "ogg", AudioCodec: "", VideoCodec: null, Type: Audio }, DirectPlayProfile { Container: "ts", AudioCodec: "mp3,aac", VideoCodec: "mpeg4,h264", Type: Video }, DirectPlayProfile { Container: "ts", AudioCodec: "mpeg4,h264", VideoCodec: null, Type: Audio }, DirectPlayProfile { Container: "m2ts", AudioCodec: "aac", VideoCodec: "mpeg4,h264", Type: Video }, DirectPlayProfile { Container: "m2ts", AudioCodec: "mpeg4,h264", VideoCodec: null, Type: Audio }, DirectPlayProfile { Container: "flv", AudioCodec: "mp3,aac", VideoCodec: "mpeg4,h264", Type: Video }, DirectPlayProfile { Container: "flv", AudioCodec: "mpeg4,h264", VideoCodec: null, Type: Audio }, DirectPlayProfile { Container: "aac", AudioCodec: "", VideoCodec: null, Type: Audio }, DirectPlayProfile { Container: "flac", AudioCodec: "", VideoCodec: null, Type: Audio }, DirectPlayProfile { Container: "3gp", AudioCodec: "3gpp,aac,flac", VideoCodec: "h263,mpeg4,h264,hevc", Type: Video }, DirectPlayProfile { Container: "3gp", AudioCodec: "h263,mpeg4,h264,hevc", VideoCodec: null, Type: Audio }], TranscodingProfiles: [TranscodingProfile { Container: "ts", Type: Video, VideoCodec: "h264", AudioCodec: "mp1,mp2,mp3,aac", Protocol: "hls", EstimateContentLength: False, EnableMpegtsM2TsMode: False, TranscodeSeekInfo: Auto, CopyTimestamps: False, Context: Streaming, EnableSubtitlesInManifest: False, MaxAudioChannels: null, MinSegments: 0, SegmentLength: 0, BreakOnNonKeyFrames: False }, TranscodingProfile { Container: "mkv", Type: Video, VideoCodec: "h264", AudioCodec: "mp1,mp2,mp3,aac,vorbis,opus,flac", Protocol: "hls", EstimateContentLength: False, EnableMpegtsM2TsMode: False, TranscodeSeekInfo: Auto, CopyTimestamps: False, Context: Streaming, EnableSubtitlesInManifest: False, MaxAudioChannels: null, 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: null, MinSegments: 0, SegmentLength: 0, BreakOnNonKeyFrames: False }], ContainerProfiles: [ContainerProfile { Type: Video, Conditions: [], Container: "mp4" }, ContainerProfile { Type: Audio, Conditions: [], Container: "mp4" }, ContainerProfile { Type: Video, Conditions: [], Container: "fmp4" }, ContainerProfile { Type: Video, Conditions: [], Container: "webm" }, ContainerProfile { Type: Audio, Conditions: [], Container: "webm" }, ContainerProfile { Type: Video, Conditions: [], Container: "mkv" }, ContainerProfile { Type: Audio, Conditions: [], Container: "mkv" }, ContainerProfile { Type: Audio, Conditions: [], Container: "mp3" }, ContainerProfile { Type: Audio, Conditions: [], Container: "ogg" }, ContainerProfile { Type: Video, Conditions: [], Container: "ts" }, ContainerProfile { Type: Audio, Conditions: [], Container: "ts" }, ContainerProfile { Type: Video, Conditions: [], Container: "m2ts" }, ContainerProfile { Type: Audio, Conditions: [], Container: "m2ts" }, ContainerProfile { Type: Video, Conditions: [], Container: "flv" }, ContainerProfile { Type: Audio, Conditions: [], Container: "flv" }, ContainerProfile { Type: Audio, Conditions: [], Container: "aac" }, ContainerProfile { Type: Audio, Conditions: [], Container: "flac" }, ContainerProfile { Type: Video, Conditions: [], Container: "3gp" }, ContainerProfile { Type: Audio, Conditions: [], Container: "3gp" }], CodecProfiles: [], ResponseProfiles: [], SubtitleProfiles: [SubtitleProfile { Format: "srt", Method: Embed, DidlMode: null, Language: null, Container: null }, SubtitleProfile { Format: "subrip", Method: Embed, DidlMode: null, Language: null, Container: null }, SubtitleProfile { Format: "ttml", Method: Embed, DidlMode: null, Language: null, Container: null }, SubtitleProfile { Format: "srt", Method: External, DidlMode: null, Language: null, Container: null }, SubtitleProfile { Format: "subrip", Method: External, DidlMode: null, Language: null, Container: null }, SubtitleProfile { Format: "ttml", Method: External, DidlMode: null, Language: null, Container: null }, SubtitleProfile { Format: "vtt", Method: External, DidlMode: null, Language: null, Container: null }, SubtitleProfile { Format: "webvtt", Method: External, DidlMode: null, Language: null, Container: null }] }
[2021-08-04 21:08:05.111 +02:00] [INF] [59] Jellyfin.Api.Helpers.MediaInfoHelper: User policy for "abc". EnablePlaybackRemuxing: True EnableVideoPlaybackTranscoding: True EnableAudioPlaybackTranscoding: True
[2021-08-04 21:08:05.111 +02:00] [INF] [59] Jellyfin.Api.Helpers.MediaInfoHelper: Profile: "Jellyfin Android", Path: "/data[...]/file.webm", isEligibleForDirectPlay: True, isEligibleForDirectStream: True
[2021-08-04 21:08:05.111 +02:00] [INF] [59] Jellyfin.Api.Helpers.MediaInfoHelper: Profile: "Jellyfin Android", Path: "/data[...]/file.webm", isEligibleForDirectPlay: True, isEligibleForDirectStream: True
[2021-08-04 21:08:05.111 +02:00] [INF] [59] Jellyfin.Api.Helpers.MediaInfoHelper: Profile: "Jellyfin Android", Path: "/data[...]/file.webm", isEligibleForDirectPlay: True, isEligibleForDirectStream: True
[2021-08-04 21:08:05.248 +02:00] [WRN] [116] Emby.Server.Implementations.HttpServer.WebSocketConnection: WS "192.168.0.94" error receiving data: "The remote party closed the WebSocket connection without completing the close handshake."
[2021-08-04 21:08:05.261 +02:00] [INF] [116] Emby.Server.Implementations.HttpServer.WebSocketManager: WS "192.168.0.94" closed

System (please complete the following information):

Additional context Works fine with HTML player. Logs are full after clean app start without any steps in between, starting app, navigating to video, clicking play. let me know if more information is required, happy to provide it.

Maxplosion commented 3 years ago

Had time to test and after full uninstall and install of v2.3.0-beta.6 it works fine there. I'll wait for the regular f-droid update to see if that fixes it, maybe the clean reinstall has helped and there were some issues going from beta.3 to full release v2.3.0.

Maxplosion commented 3 years ago

Seems to be connected to https://github.com/jellyfin/jellyfin-android/issues/480 as with a fresh install of 2.3.0 I cannot even connect, the upgrade from beta works, but results in crashes of the player, which could be connected due to the "The remote party closed the WebSocket connection without completing the close handshake." error message in the logs above.

Maxplosion commented 3 years ago

all works again with 2.3.1!