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

M1 iPad Pro - Latest testflight refuses to play any video #293

Closed
harryofbath opened this issue Jan 13, 2022 · 27 comments
Closed

M1 iPad Pro - Latest testflight refuses to play any video #293

harryofbath opened this issue Jan 13, 2022 · 27 comments
Labels
bug Something isn't working

Comments

@harryofbath
Copy link

Updated from 67 to 68 and now videos no longer play. This is independent of encoding or container, and effects my entire library. I get a strange result in my log every time I go to play a video, seen below.

2022-01-13 04:55:21.229 +00:00] [INF] [21] Jellyfin.Api.Controllers.MediaInfoController: 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: null, MaxAlbumArtHeight: null, MaxIconWidth: null, MaxIconHeight: null, MaxStreamingBitrate: 60000000, MaxStaticBitrate: 60000000, MusicStreamingTranscodingBitrate: 60000000, MaxStaticMusicBitrate: 8000000, SonyAggregationFlags: null, ProtocolInfo: null, TimelineOffsetSeconds: 0, RequiresPlainVideoItems: False, RequiresPlainFolders: False, EnableMSMediaReceiverRegistrar: False, IgnoreTranscodeByteRangeRequests: False, XmlRootAttributes: [], DirectPlayProfiles: [DirectPlayProfile { Container: "mov,mp4,mkv,webm", AudioCodec: "aac,mp3,wav,ac3,eac3,flac,truehd,dts,dca,opus", VideoCodec: "h264,hevc,dvhe,dvh1,h264,hevc,hev1,mpeg4,vp9", Type: Video }], TranscodingProfiles: [TranscodingProfile { Container: "ts", Type: Video, VideoCodec: "hevc,h264,mpeg4", AudioCodec: "aac,mp3,wav,ac3,eac3,flac,opus", Protocol: "hls", EstimateContentLength: False, EnableMpegtsM2TsMode: False, TranscodeSeekInfo: Auto, CopyTimestamps: False, Context: Streaming, EnableSubtitlesInManifest: False, MaxAudioChannels: "6", MinSegments: 2, SegmentLength: 0, BreakOnNonKeyFrames: True }], ContainerProfiles: [], CodecProfiles: [CodecProfile { Type: Video, Conditions: [], ApplyConditions: [ProfileCondition { Condition: NotEquals, Property: IsAnamorphic, Value: "true", IsRequired: False }, ProfileCondition { Condition: EqualsAny, Property: VideoProfile, Value: "high|main|baseline|constrained baseline", IsRequired: False }, ProfileCondition { Condition: LessThanEqual, Property: VideoLevel, Value: "80", IsRequired: False }, ProfileCondition { Condition: NotEquals, Property: IsInterlaced, Value: "true", IsRequired: False }], Codec: "h264", Container: null }, CodecProfile { Type: Video, Conditions: [], ApplyConditions: [ProfileCondition { Condition: NotEquals, Property: IsAnamorphic, Value: "true", IsRequired: False }, ProfileCondition { Condition: EqualsAny, Property: VideoProfile, Value: "high|main|main 10", IsRequired: False }, ProfileCondition { Condition: LessThanEqual, Property: VideoLevel, Value: "175", IsRequired: False }, ProfileCondition { Condition: NotEquals, Property: IsInterlaced, Value: "true", IsRequired: False }], Codec: "hevc", Container: null }], ResponseProfiles: [ResponseProfile { Container: "m4v", AudioCodec: null, VideoCodec: null, Type: Video, OrgPn: null, MimeType: "video/mp4", Conditions: [] }], SubtitleProfiles: [SubtitleProfile { Format: "ass", Method: Embed, DidlMode: null, Language: null, Container: null }, SubtitleProfile { Format: "ssa", Method: Embed, DidlMode: null, Language: null, Container: null }, SubtitleProfile { Format: "subrip", Method: Embed, DidlMode: null, Language: null, Container: null }, SubtitleProfile { Format: "sub", Method: Embed, DidlMode: null, Language: null, Container: null }, SubtitleProfile { Format: "pgssub", Method: Embed, DidlMode: null, Language: null, Container: null }, SubtitleProfile { Format: "subrip", Method: External, DidlMode: null, Language: null, Container: null }, SubtitleProfile { Format: "sub", Method: External, DidlMode: null, Language: null, Container: null }, SubtitleProfile { Format: "ass", Method: External, DidlMode: null, Language: null, Container: null }, SubtitleProfile { Format: "ssa", Method: External, DidlMode: null, Language: null, Container: null }, SubtitleProfile { Format: "vtt", Method: External, DidlMode: null, Language: null, Container: null }, SubtitleProfile { Format: "ass", Method: External, DidlMode: null, Language: null, Container: null }, SubtitleProfile { Format: "ssa", Method: External, DidlMode: null, Language: null, Container: null }] }

On M1 iPad Pro, with Jellyfin on 10.8.0 alpha 5, however issue existed on 10.7.7. In the dashboard, it shows the video as actively playing, but paused, and reports it as direct playing. However the video never begins.

@LePips
Copy link
Member

LePips commented Jan 13, 2022

We have to send a request to the server for the media streams for the item and we have to tell them what device we're using. I think this may be because we don't have the M1 iPad Pro in our device list due to the DeviceProfile dictionary having a bunch of nulls, but I also don't get why it broke from 67 to 68 if it wasn't there before. I don't have an M1 iPad Pro to test with. If I were able to try some things, would you be able to test on my branch/PR?

@LePips LePips added the bug Something isn't working label Jan 13, 2022
@LePips LePips changed the title Latest testflight refuses to play any video M1 iPad Pro - Latest testflight refuses to play any video Jan 13, 2022
@harryofbath
Copy link
Author

I would be willing to test, but I don't have a Mac, which I assume I would need. If it works through TestFlight then sure.

@LePips
Copy link
Member

LePips commented Jan 13, 2022

That should be okay then. A new build will be out soon with a bunch of small things, I'll make sure this gets in.

@hendrik1120
Copy link
Contributor

Hi, I was able to reproduce the exact same error message with TestFlight version 68 on my M1 MBP as it's also not listed in the Device Profile dictionary. But I am still able to playback all my content.
I rather think it's the same issue I experienced which now magically fixed itself.

@harryofbath Let me guess if you touch on the black screen after you pressed play, you can see the media controls e.g. progressbar, subtitles, etc. but nothing happens?

If thats the case the following steps might resolve the issue:

  1. Delete the app and reinstall it from TestFlight again.
  2. Restart your yellyfin server or if in docker: rebuild container.
  3. Try again.

@harryofbath
Copy link
Author

@hendrik1120 Thanks for the suggestion. Unfortunately your fix did not work in my case.

@LePips
Copy link
Member

LePips commented Jan 13, 2022

Along with putting the device profiles, transcoding was fixed also so I do expect this to be fixed then. However M1 should direct play everything, so I actually ask anyone with M1 devices to report whether streams are transcoded or direct play on the next build (after 68)

@hendrik1120
Copy link
Contributor

Just got it to bug the crap out again on tvOS but with the xcode build and #294 merged.

The same as @harryofbath experiences but only for mkv this time (player showing blackscreen and app still sending player progress to the server).
Playing through the continue watching view creates the above mentioned.
However trying to play a new series in mkv from the library freezes the app instantly:

[🔵 DEBUG] SeriesItemViewModel#91:requestSeasons() Retrieved 8 seasons
Swiftfin_tvOS/MediaPlayButtonRowView.swift:23: Fatal error: Unexpectedly found nil while unwrapping an Optional value
2022-01-13 19:38:20.416192+0100 Swiftfin tvOS[43018:1014580] Swiftfin_tvOS/MediaPlayButtonRowView.swift:23: Fatal error: Unexpectedly found nil while unwrapping an Optional value

mp4 seems to be working fine.
Everything in H.265
Also tried various new builds and removed the app multiple times. Should be repeatable.

Btw @LePips I got the app to crash multiple times and also some small ui and navigation issues. If you are interested let me know.

@LePips
Copy link
Member

LePips commented Jan 13, 2022

I know why that happens and the only thing I would recommend is to use the "CinematicViews" enabled in the settings. The fix for this is quick (and previously known but I've just been lazy) but those views will be phased out for better "Compact" views.

@hendrik1120
Copy link
Contributor

Yes, can confirm. Cinematic view prevents me from playing the file.

@LePips
Copy link
Member

LePips commented Jan 13, 2022

Is the Play button grayed out at that moment?

@hendrik1120
Copy link
Contributor

Yes. But not on all mkv files.

@hendrik1120
Copy link
Contributor

Apparently playing the file on the testflight version makes the greyed out button go away and lets me playback the blackscreen again :D
Even after marking it as unplayed on the server.
Now I only got one show left with the grey button and it says:
[🔴 ERROR] CinematicItemViewTopRow#65:body Attempted to play item but no playback information available

@LePips
Copy link
Member

LePips commented Jan 13, 2022

First, the grayed out button and the logging error is the (new) expected behavior. This is because it doesn't have a stream to, well, stream from. Going one step back, this means that there aren't any media sources to play the item from.

By chance, does the specific media item have multiple version by chance? (1080p, 720p, etc.) Just narrowing down with some work I've done.

Notice, I'm not asking about files, I'm asking about items. The item is telling us that it doesn't have a proper file to create a stream from.

@LePips
Copy link
Member

LePips commented Jan 13, 2022

This error has encouraged me to put a lot more logging in, which we do need

@hendrik1120
Copy link
Contributor

I hope I understand correctly. There would be no way for the item to have multiple versions. It has only been indexed once by jellyfin and never been played or transcoded by jellyfin before. I also only have one resolution per movie. Either 1080p or 4k but never both at the same time. There are also no duplicates of any kind.

All my media is also encoded in the same way. All underlying files have H.265 and the video in the first stream.

Yes, more logging would be really great because you will have all kinds of media being played by the app.

@hendrik1120
Copy link
Contributor

I found a way to toggle the grey button. If I mark the whole series as played in the web interface it turns grey which should mean that it cant get a stream. If I mark it as unplayed it turns normal again XD. It makes no sense at all.
But playback still doesnt work.

@LePips
Copy link
Member

LePips commented Jan 13, 2022

Oh, is it a series you're trying to play from? Not the episode page?

If so, this is (currently) expected as the correct logic for getting the "Next Up" item in a series isn't complete.

@hendrik1120
Copy link
Contributor

Ok, the grey button ofc only appears on the show in: top slider -> tvShows -> Game of Thrones for example.

The following ways show the regular play button with time stamp in it.
top slider -> home -> first row -> Game of Thrones (with the big wp)
top slider -> home -> second row -> play next -> Game of Thrones
top slider -> home -> latest "series" -> GoT

no matter which button I press its still the same black screen.

I also found this probably related issue https://github.com/jellyfin/jellyfin/issues/3815 that might help.

@LePips
Copy link
Member

LePips commented Jan 13, 2022

The gray button isn't currently the problem, that behavior will be polished over time and not something I'm worried about at the moment.

To relate to the current issue and the "black screen when playing", what Apple TV Hardware are you using? This may be a transcoding issue which relates to the original issue, and transcoding was fixed however the Apple TV you are using may not be constructing the device profile correctly since you mention this is all H.265 content.

If so, this problem extends more than I thought with per-device support and actually may not be addressable in the next build.

@hendrik1120
Copy link
Contributor

hendrik1120 commented Jan 13, 2022

I am using the 1st gen Apple TV 4K with the touch remote. I was only referring to the UI and the button at all because it sometimes just magically starts playing and I didnt change anything.
For example I am currently watching a show perfectly fine on testflight version 68 for which I even opened issue #272 but thought it was a network problem. But now it even works on different subnets and everything without changing anything.

@harryofbath
Copy link
Author

harryofbath commented Jan 15, 2022

Got version 69 today, and no change. Device still reported as null and videos do not play.

Edit: I also ruled out a server issue by trying to play videos from demo.jellyfin.org/stable. Exact same result, video opens, black screen, doesn't play.

@LePips
Copy link
Member

LePips commented Jan 17, 2022

This may be fixed thanks to #309, test in next build (after 69)

@LePips
Copy link
Member

LePips commented Jan 20, 2022

The new TestFlight was released, please test this and report back whether playback is fixed.

@harryofbath
Copy link
Author

harryofbath commented Jan 21, 2022

The new TestFlight was released, please test this and report back whether playback is fixed.

Yes! Everything plays! Thank you so much. Chapter selecting also works well.
Edit: You might also consider adding chapter selection for TV shows too.
Edit 2: Oh you already did. Only works on some of my shows though, probably something my end though.

@LePips
Copy link
Member

LePips commented Jan 21, 2022

Chapters only show if they have chapters that the server recognizes, not from the media

@harryofbath
Copy link
Author

For the episodes where I cannot select chapters, they appear at the bottom of the webUI where you would expect them, however the chapters button within Swiftfin is not listed for them during playback.

@harryofbath
Copy link
Author

Upon further inspection, it seems that it is merely inconsistent on whether chapters should be accessible or not. I can load an episode, and see chapters, then load a different episode, no chapters, go back to the first episode, chapters gone.

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

No branches or pull requests

3 participants