AdvancedSharpAdbClient
AdvancedSharpAdbClient copied to clipboard
Can Screen Capture be improved?
Describe your feature request
Is it possible to capture screen devices faster?Feature title
static async void Main(string[] args)
{
...
System.Drawing.Image img = client.GetFrameBufferAsync(device, CancellationToken.None).GetAwaiter().GetResult();
...
}
Specifically, it currently takes 180 ~ 200ms for 1 screen capture
How important is this to you?
Nice-to-have
Describe the solution you'd like
No response
Describe alternatives you've considered
No response
Additional context
No response
hi @vuduong1124 Can you share block code to convert FrameBuffer to image It seems this tutorial is not correct System.Drawing.Image img = client.GetFrameBufferAsync(device, CancellationToken.None).GetAwaiter().GetResult();
It seems this tutorial is not correct
(Well, I just tried this library out, I have been using python and an adb library for python before but wanted to give this library a shot).
About the tutorial not being correct, I assume you're reffering to the examples and that you get an error that FrameBuffer
can't be made into an Image
? There's an explicit conversion implemented (there seems to be other conversions too , depending on need, not only Image
).
You can do either of this to get around this problem and make the compiler happy:
Image image = (Image) client.GetFrameBufferAsync(device, CancellationToken.None).GetAwaiter().GetResult();
or
Image image = client.GetFrameBufferAsync(device, CancellationToken.None).GetAwaiter().GetResult().ToImage();
This will, in theory, make it work - I assume this is the intended way to do it.
However, I get an exception when I execute the above code, trying to grab a screenshot (from a device with verified working ADB connection). The Framebuffer
gets disposed at some point and the library throws exception about. I haven't tested much so I might as well mention it.
I can see in the source code of the library where it does this but I haven't tried to understand why this happen. Also noted that there's no unit test implemented for GetFrameBufferAsync
so maybe the error is actually a bug not being detected. But honestly, I don't know. (Actually, this is why I ended up here, to see if anyone else have mentioned this exception or if created an issue ticket for it.)
https://github.com/yungd1plomat/AdvancedSharpAdbClient/commit/fa1087f24492fda333bc5561fbadfe0550570efb
fa1087f
Nice one! Started diggin into the workings and realized there were plenty of stuff probably missing. Interesting to see what it actually was. Great work!
https://github.com/yungd1plomat/AdvancedSharpAdbClient/releases/tag/v2.5.7