[GH-ISSUE #253] [Feature]: Picture In Picture support #109

Closed
opened 2026-03-03 18:54:44 +03:00 by kerem · 21 comments
Owner

Originally created by @MingyaoLiu on GitHub (Aug 27, 2022).
Original GitHub issue: https://github.com/PlayCover/PlayCover/issues/253

I have twitch installed and sometimes I can trigger a picture in picture, but not always. So I guess it works just not sure how well it can be supported

Describe the solution you'd like

Best idea I can come up with is having a shortcut or button to trigger picture in picture for whatever content that may or may not support it

Anything else?

not really

Issue Language

  • Yes my issue is written in English
Originally created by @MingyaoLiu on GitHub (Aug 27, 2022). Original GitHub issue: https://github.com/PlayCover/PlayCover/issues/253 ### Is your feature request related to a problem? I have twitch installed and sometimes I can trigger a picture in picture, but not always. So I guess it works just not sure how well it can be supported ### Describe the solution you'd like Best idea I can come up with is having a shortcut or button to trigger picture in picture for whatever content that may or may not support it ### Anything else? not really ### Issue Language - [X] Yes my issue is written in English
kerem 2026-03-03 18:54:44 +03:00
Author
Owner

@Candygoblen123 commented on GitHub (Aug 27, 2022):

Not much we can really do about this one. Either PIP is available through catalyst (an apple technology) or PIP is not available.

In addition, this isn't exactly a high priority for us.

<!-- gh-comment-id:1229087800 --> @Candygoblen123 commented on GitHub (Aug 27, 2022): Not much we can really do about this one. Either PIP is available through catalyst (an apple technology) or PIP is not available. In addition, this isn't exactly a high priority for us.
Author
Owner

@MingyaoLiu commented on GitHub (Aug 27, 2022):

@Candygoblen123 yah I understand, I'm just wondering if there is some kind of condition that triggers the picture in picture mode, maybe that condition can be met somehow.
Feel free to close it if it's not important

<!-- gh-comment-id:1229088968 --> @MingyaoLiu commented on GitHub (Aug 27, 2022): @Candygoblen123 yah I understand, I'm just wondering if there is some kind of condition that triggers the picture in picture mode, maybe that condition can be met somehow. Feel free to close it if it's not important
Author
Owner

@KhoraLee commented on GitHub (Aug 29, 2022):

Not much we can really do about this one. Either PIP is available through catalyst (an apple technology) or PIP is not available.

In addition, this isn't exactly a high priority for us.

It looks like PIP is supported in catalyst. https://developer.apple.com/documentation/avkit/avpictureinpicturecontroller

<!-- gh-comment-id:1229592686 --> @KhoraLee commented on GitHub (Aug 29, 2022): > Not much we can really do about this one. Either PIP is available through catalyst (an apple technology) or PIP is not available. > > > > In addition, this isn't exactly a high priority for us. It looks like PIP is supported in catalyst. https://developer.apple.com/documentation/avkit/avpictureinpicturecontroller
Author
Owner

@MingyaoLiu commented on GitHub (Aug 29, 2022):

based on @KhoraLee 's link, there is a picture in picture controller that apps can call check whether device support pip?
@Candygoblen123 is it possible to intercept the picture in picture request and return true on all those conditions? might be the way to make pip work for ios app?

<!-- gh-comment-id:1230655744 --> @MingyaoLiu commented on GitHub (Aug 29, 2022): based on @KhoraLee 's link, there is a picture in picture controller that apps can call check whether device support pip? @Candygoblen123 is it possible to intercept the picture in picture request and return true on all those conditions? might be the way to make pip work for ios app?
Author
Owner

@Candygoblen123 commented on GitHub (Aug 29, 2022):

Theoretically yes, but in order to initialize the PIP controller, we would need direct access to the video player object itself. Because we have no idea what the structure of the running app looks like it isn’t easy to get the video player out of the app.

We could take some inspiration from https://github.com/PoomSmart/YouPiP/tree/main, but it would have to be modified to support any app instead of just YouTube

<!-- gh-comment-id:1230810839 --> @Candygoblen123 commented on GitHub (Aug 29, 2022): Theoretically yes, but in order to initialize the PIP controller, we would need direct access to the video player object itself. Because we have no idea what the structure of the running app looks like it isn’t easy to get the video player out of the app. We could take some inspiration from https://github.com/PoomSmart/YouPiP/tree/main, but it would have to be modified to support any app instead of just YouTube
Author
Owner

@KhoraLee commented on GitHub (Aug 31, 2022):

@Candygoblen123 I did not tested twitch but nPlayer(Video player)'s pip mode works without any modification.
스크린샷 2022-09-01 오전 1 02 13

<!-- gh-comment-id:1233133995 --> @KhoraLee commented on GitHub (Aug 31, 2022): @Candygoblen123 I did not tested twitch but nPlayer(Video player)'s pip mode works without any modification. <img width="1103" alt="스크린샷 2022-09-01 오전 1 02 13" src="https://user-images.githubusercontent.com/18005062/187725567-2acf29b6-51cb-444d-923f-50cd35e7ba42.png">
Author
Owner

@Candygoblen123 commented on GitHub (Aug 31, 2022):

@Candygoblen123 I did not tested twitch but nPlayer(Video player)'s pip mode works without any modification.
스크린샷 2022-09-01 오전 1 02 13

I think I see a pip button in that screenshot. Twitch does not have that, it goes into pip when you background the app, which isn’t possible on macOS.

<!-- gh-comment-id:1233136777 --> @Candygoblen123 commented on GitHub (Aug 31, 2022): > @Candygoblen123 I did not tested twitch but nPlayer(Video player)'s pip mode works without any modification. > <img alt="스크린샷 2022-09-01 오전 1 02 13" width="1103" src="https://user-images.githubusercontent.com/18005062/187725567-2acf29b6-51cb-444d-923f-50cd35e7ba42.png"> I think I see a pip button in that screenshot. Twitch does not have that, it goes into pip when you background the app, which isn’t possible on macOS.
Author
Owner

@MingyaoLiu commented on GitHub (Aug 31, 2022):

@KhoraLee that's good to know.
I tried plex which has a PIP button, but it doesn't work on mac.
for twitch on ipad and iphone, it doesn't have pip button, it only goes to pip when swipe to home from full screen view.

<!-- gh-comment-id:1233140792 --> @MingyaoLiu commented on GitHub (Aug 31, 2022): @KhoraLee that's good to know. I tried plex which has a PIP button, but it doesn't work on mac. for twitch on ipad and iphone, it doesn't have pip button, it only goes to pip when swipe to home from full screen view.
Author
Owner

@KhoraLee commented on GitHub (Sep 3, 2022):

https://user-images.githubusercontent.com/18005062/188273779-b4ea32c8-05d9-4863-972d-ddf9f0f38441.mp4

@MingyaoLiu I can force enable PIP in twitch but not all app is supported.
For me plex's PIP button is working without problem(on Ventura) and forcing pip mode worked in live videos but not worked in movies and dramas.

But is this feature really needed?

<!-- gh-comment-id:1236125934 --> @KhoraLee commented on GitHub (Sep 3, 2022): https://user-images.githubusercontent.com/18005062/188273779-b4ea32c8-05d9-4863-972d-ddf9f0f38441.mp4 @MingyaoLiu I can force enable PIP in twitch but not all app is supported. For me plex's PIP button is working without problem(on Ventura) and forcing pip mode worked in live videos but not worked in movies and dramas. But is this feature really needed?
Author
Owner

@MingyaoLiu commented on GitHub (Sep 3, 2022):

@KhoraLee what did you click to force PIP in twitch? I don't know how to do it at all.

<!-- gh-comment-id:1236190111 --> @MingyaoLiu commented on GitHub (Sep 3, 2022): @KhoraLee what did you click to force PIP in twitch? I don't know how to do it at all.
Author
Owner

@KhoraLee commented on GitHub (Sep 3, 2022):

@MingyaoLiu I built my own playtools to inject code.

<!-- gh-comment-id:1236190562 --> @KhoraLee commented on GitHub (Sep 3, 2022): @MingyaoLiu I built my own playtools to inject code.
Author
Owner

@MingyaoLiu commented on GitHub (Sep 3, 2022):

@KhoraLee oh nice, yah if you could share what you did, I could learn how to force it as well.

<!-- gh-comment-id:1236190837 --> @MingyaoLiu commented on GitHub (Sep 3, 2022): @KhoraLee oh nice, yah if you could share what you did, I could learn how to force it as well.
Author
Owner

@KhoraLee commented on GitHub (Sep 3, 2022):

@MingyaoLiu github.com/KhoraLee/PlayTools@0a17d0fc1d
This is how I made force enable pip

<!-- gh-comment-id:1236205261 --> @KhoraLee commented on GitHub (Sep 3, 2022): @MingyaoLiu https://github.com/KhoraLee/PlayTools/commit/0a17d0fc1d88d46948bbfa6dcf66c7156c51278c This is how I made force enable pip
Author
Owner

@amirsaam commented on GitHub (Sep 3, 2022):

Off topic question, do your Twitch stay logged in when SIP is on?

<!-- gh-comment-id:1236207043 --> @amirsaam commented on GitHub (Sep 3, 2022): Off topic question, do your Twitch stay logged in when SIP is on?
Author
Owner

@KhoraLee commented on GitHub (Sep 3, 2022):

Off topic question, do your Twitch stay logged in when SIP is on?

No twitch is always requiring me to login with SIP on

<!-- gh-comment-id:1236207324 --> @KhoraLee commented on GitHub (Sep 3, 2022): > Off topic question, do your Twitch stay logged in when SIP is on? No twitch is always requiring me to login with SIP on
Author
Owner

@MingyaoLiu commented on GitHub (Sep 3, 2022):

@amirsaam i have sip disabled always, along with nvram boot change.

@KhoraLee Thanks for the example, I haven't touched ios dev for a couple years, didn't know the way around pip haha. I will try something similar today.

<!-- gh-comment-id:1236211916 --> @MingyaoLiu commented on GitHub (Sep 3, 2022): @amirsaam i have sip disabled always, along with nvram boot change. @KhoraLee Thanks for the example, I haven't touched ios dev for a couple years, didn't know the way around pip haha. I will try something similar today.
Author
Owner

@MingyaoLiu commented on GitHub (Sep 4, 2022):

I added @KhoraLee 's code to my fork of the playtool, then updated carthage to point to my local repo, and build playcover and it's working. A nice little experience to get back to mac dev, a lot of things have changed

<!-- gh-comment-id:1236240301 --> @MingyaoLiu commented on GitHub (Sep 4, 2022): I added @KhoraLee 's code to my fork of the playtool, then updated carthage to point to my local repo, and build playcover and it's working. A nice little experience to get back to mac dev, a lot of things have changed
Author
Owner

@Depal1 commented on GitHub (Sep 14, 2022):

If anyone considers this could be an useful feature, it could be added to PlayCover as a toggle under App Settings > Misc.

<!-- gh-comment-id:1246973374 --> @Depal1 commented on GitHub (Sep 14, 2022): If anyone considers this could be an useful feature, it could be added to PlayCover as a toggle under App Settings > Misc.
Author
Owner

@MingyaoLiu commented on GitHub (Sep 14, 2022):

I think that's a good solution to add this to settings, I use it all the time, can't say the same for others.

<!-- gh-comment-id:1247402208 --> @MingyaoLiu commented on GitHub (Sep 14, 2022): I think that's a good solution to add this to settings, I use it all the time, can't say the same for others.
Author
Owner

@IsaacMarovitz commented on GitHub (Oct 7, 2022):

@KhoraLee This feature works on Netflix, please make a PR for the 2.0 branch

<!-- gh-comment-id:1272020608 --> @IsaacMarovitz commented on GitHub (Oct 7, 2022): @KhoraLee This feature works on Netflix, please make a PR for the 2.0 branch
Author
Owner

@IsaacMarovitz commented on GitHub (Dec 29, 2022):

Stale/ Waiting on updates to PlayTools https://github.com/PlayCover/PlayTools/pull/51

<!-- gh-comment-id:1367623450 --> @IsaacMarovitz commented on GitHub (Dec 29, 2022): Stale/ Waiting on updates to PlayTools https://github.com/PlayCover/PlayTools/pull/51
Sign in to join this conversation.
No milestone
No project
No assignees
1 participant
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set.

Reference
starred/PlayCover#109
No description provided.