HyperionScreenCap
HyperionScreenCap copied to clipboard
Request : simultaneous multiscreen
Hi sabaat.
Thank you for your release of HSC.
I saw that we can use different screen but not simultaneous so I would like to know if you can adjust your software to use multi screen at the same time like Synlight does https://github.com/Synless/SynLight
This is the only one I found, Ambibox, prismatik or Adrilight don’t do the same and I think it will be a good thing if we can use this feature with Hyperion NG or HyperHDR.
I don’t know if it’s possible but it will be a great addon, a lot of people ask for this.
Thank you again for what you provided.
See you my friend. 🙂
Regards.
The software does capture multiple screens at the same time. Does it not work for you?
Ah ok.
Someone told me that he can’t do it on his installation, he already have 3 screens with extended desktop option enabled ( I cannot test on my side, i only have 1 screen ) and can only make working one at the time.
If you confirm me that we can do it, you can close or delete this issue 😁 or maybe not, I have another question.
Your software didn’t work with DRM apps, you can do something for that ? Or we need to still use navigator to bypass it.
Thanks.
Happy New Year’s Eve
Actually I have never been able to test out multi screen with Hyperion. I've only tested that the software has the ability to support that.
I thought there is no way to bypass DRM. Can you tell me more about navigator?
Hi there,
I'm struggling with the same issue and I have no idea how to grab 3 screens at the same time.
When I configure a new connection, I need to specify a Monitor Index, and it's impossible to choose more than one.
If I make 3 different instances, one for each monitor, how do I send the data to Hyperion? Do I need to have a different RPi for each screen? Can Hyperion receive 3 different buffers and merge them to control one large LED Strip? My setup would be something like this:
Is it even possible with current software?
Actually I have never been able to test out multi screen with Hyperion. I've only tested that the software has the ability to support that.
I thought there is no way to bypass DRM. Can you tell me more about navigator?
Without ambilight yes. No way to bypass without material capture as you know.
As @a14219 i’m asking how we can get working this setup. It’s possible with your software or you need to add this features ?
Thank you ☺️
Hi guys,
For your information I made it work for dual screen using two instance of Dx11ScreenCapture. You can take a look at it here : https://github.com/parazite13/HyperionScreenCap
I won't make a PR to merge it back here beacause there is certainly a better way to integrate it for N monitors (especially in terms of UI), but if you'are interested @sabaatworld I can make a PR anyway.
I see that a could of files have been changed? Can you please summarize your changes so that I can understand them?
The main thing is that I've implemented the IScreenCapture interface in the Dx11DualScreenCapture.cs file so that I can run two instance of the Dx11ScreenCapture inside. After that I have juste merged the output of the two byte[] from the Dx11ScreenCapture.Capture() into a new byte[] that is twice the size to implement the Dx11DualScreenCapture.Capture() method. All of the others modifications are just to select this new option and save it in the preference, so that is what I meant when I said there is probably a better way to integrate it in terms of Ui.
The main thing is that I've implemented the IScreenCapture interface in the Dx11DualScreenCapture.cs file so that I can run two instance of the Dx11ScreenCapture inside. After that I have juste merged the output of the two byte[] from the Dx11ScreenCapture.Capture() into a new byte[] that is twice the size to implement the Dx11DualScreenCapture.Capture() method. All of the others modifications are just to select this new option and save it in the preference, so that is what I meant when I said there is probably a better way to integrate it in terms of Ui.
@parazite13 I tested your fork and I got this issue and no capture found when 2 screens have different resolusions. When they have same resolution, it works.
2022-01-10 20:27:45 [INFO] [9] HyperionScreenCap.Helper.HyperionTask.StartCapture:0 - HyperionTask[ConfigurationId: b035de]: Waiting before next screen capture attempt
2022-01-10 20:27:46 [ERROR] [9] HyperionScreenCap.Helper.HyperionTask.StartCapture:0 - HyperionTask[ConfigurationId: b035de]: Exception in screen capture attempt: 14
System.Exception: Error occured while sending image to server: Index was outside the bounds of the array. ---> System.IndexOutOfRangeException: Index was outside the bounds of the array.
at HyperionScreenCap.Capture.Dx11DualScreenCapture.Capture()
at HyperionScreenCap.Helper.HyperionTask.TransmitNextFrame()
--- End of inner exception stack trace ---
at HyperionScreenCap.Helper.HyperionTask.TransmitNextFrame()
at HyperionScreenCap.Helper.HyperionTask.StartCapture()
Thanks! I'll explore this for the next release.
Thanks! I'll explore this for the next release.
no, your newest release is good. above issue is of DualScreen fork of @parazite13
I was aware of this when I've implemented this myself. Things gets trickier when not using the same resolution. I'll try to spend a bit of time on it the upcoming days.
I was aware of this when I've implemented this myself. Things gets trickier when not using the same resolution. I'll try to spend a bit of time on it the upcoming days.
That's sound great!
I've pushed a fix on my fork if you want to check @tihoangyeudau
I've pushed a fix on my fork if you want to check @tihoangyeudau
Ok i will check it right now!
@parazite13 Work perfect! Thank you for your effort and processing speed! next updates of you and @sabaatworld are is very valuable!
@sabaatworld we know Hyperionscreencap can generate multiple screens to capture and set priorities accordingly, but for Hyperion.ng users always have to set the priorities again every time Hyperion.ng restarts without being able to save that priorities setting after each reboot.
@parazite13 but wait, it can't work with lanscape screen + portrait screen. it seems that hyperionscreencap captures the portrait screen incorrectly
my log
2022-01-13 09:53:28 [ERROR] [7] HyperionScreenCap.Helper.HyperionTask.StartCapture:176 - HyperionTask[ConfigurationId: c25ed5]: Exception in screen capture attempt: 1
System.Exception: Error occured while sending image to server: Unable to write data to the transport connection: An existing connection was forcibly closed by the remote host. ---> System.IO.IOException: Unable to write data to the transport connection: An existing connection was forcibly closed by the remote host. ---> System.Net.Sockets.SocketException: An existing connection was forcibly closed by the remote host
at System.Net.Sockets.Socket.Send(Byte[] buffer, Int32 offset, Int32 size, SocketFlags socketFlags)
at System.Net.Sockets.NetworkStream.Write(Byte[] buffer, Int32 offset, Int32 size)
--- End of inner exception stack trace ---
at System.Net.Sockets.NetworkStream.Write(Byte[] buffer, Int32 offset, Int32 size)
at HyperionScreenCap.Networking.HyperionClient.sendMessageSize(Int32 size) in C:\Users\tuant\Documents\GitHub\HyperionScreenCap\HyperionScreenCap\Networking\HyperionClient.cs:line 111
at HyperionScreenCap.Networking.FbsClinet.SendFinishedMessage(FlatBufferBuilder finaliedBuilder) in C:\Users\tuant\Documents\GitHub\HyperionScreenCap\HyperionScreenCap\Networking\FbsClinet.cs:line 56
at HyperionScreenCap.Networking.FbsClinet.SendImageDataMessage(Byte[] pixeldata, Int32 width, Int32 height) in C:\Users\tuant\Documents\GitHub\HyperionScreenCap\HyperionScreenCap\Networking\FbsClinet.cs:line 30
at HyperionScreenCap.Networking.HyperionClient.SendImageData(Byte[] pixeldata, Int32 width, Int32 height) in C:\Users\tuant\Documents\GitHub\HyperionScreenCap\HyperionScreenCap\Networking\HyperionClient.cs:line 85
at HyperionScreenCap.Helper.HyperionTask.TransmitNextFrame() in C:\Users\tuant\Documents\GitHub\HyperionScreenCap\HyperionScreenCap\Helper\HyperionTask.cs:line 147
--- End of inner exception stack trace ---
at HyperionScreenCap.Helper.HyperionTask.TransmitNextFrame() in C:\Users\tuant\Documents\GitHub\HyperionScreenCap\HyperionScreenCap\Helper\HyperionTask.cs:line 154
at HyperionScreenCap.Helper.HyperionTask.StartCapture() in C:\Users\tuant\Documents\GitHub\HyperionScreenCap\HyperionScreenCap\Helper\HyperionTask.cs:line 170
2022-01-13 09:56:13 [ERROR] [9] HyperionScreenCap.Helper.HyperionTask.StartCapture:176 - HyperionTask[ConfigurationId: c25ed5]: Exception in screen capture attempt: 1
System.Exception: Error occured while sending image to server: Unable to write data to the transport connection: An existing connection was forcibly closed by the remote host. ---> System.IO.IOException: Unable to write data to the transport connection: An existing connection was forcibly closed by the remote host. ---> System.Net.Sockets.SocketException: An existing connection was forcibly closed by the remote host
at System.Net.Sockets.Socket.Send(Byte[] buffer, Int32 offset, Int32 size, SocketFlags socketFlags)
at System.Net.Sockets.NetworkStream.Write(Byte[] buffer, Int32 offset, Int32 size)
--- End of inner exception stack trace ---
at System.Net.Sockets.NetworkStream.Write(Byte[] buffer, Int32 offset, Int32 size)
at HyperionScreenCap.Networking.ProtoClient.SendRequest(IMessageLite request) in C:\Users\tuant\Documents\GitHub\HyperionScreenCap\HyperionScreenCap\Networking\ProtoClient.cs:line 56
at HyperionScreenCap.Networking.ProtoClient.SendImageDataMessage(Byte[] pixeldata, Int32 width, Int32 height) in C:\Users\tuant\Documents\GitHub\HyperionScreenCap\HyperionScreenCap\Networking\ProtoClient.cs:line 29
at HyperionScreenCap.Networking.HyperionClient.SendImageData(Byte[] pixeldata, Int32 width, Int32 height) in C:\Users\tuant\Documents\GitHub\HyperionScreenCap\HyperionScreenCap\Networking\HyperionClient.cs:line 85
at HyperionScreenCap.Helper.HyperionTask.TransmitNextFrame() in C:\Users\tuant\Documents\GitHub\HyperionScreenCap\HyperionScreenCap\Helper\HyperionTask.cs:line 147
--- End of inner exception stack trace ---
at HyperionScreenCap.Helper.HyperionTask.TransmitNextFrame() in C:\Users\tuant\Documents\GitHub\HyperionScreenCap\HyperionScreenCap\Helper\HyperionTask.cs:line 154
at HyperionScreenCap.Helper.HyperionTask.StartCapture() in C:\Users\tuant\Documents\GitHub\HyperionScreenCap\HyperionScreenCap\Helper\HyperionTask.cs:line 170
Let's discuss the portrait issue over on https://github.com/sabaatworld/HyperionScreenCap/issues/57
status on implementing this feature?
@parazite13 is you version working for different resolutions (i evan got a 5120x1440 screen) ?. I plan to set up hyperion i the next month's, schould i download your one, or will this get mearchd to this repo (@sabaatworld)?
Different resolution should be fine as soon as you don't have a multi orientation setup
@parazite13 sorry to resurrect an old issue, but do you have a compiled build of your fork available anywhere? I cannot get visual studio to build it on my end.
Since quite recently the official Hue sync app has released the dual screen feature so I'm not using this tool anymore sorry.