WebRTC native c++ app as win10 service cannot access video source - c++

I have an webRTC (native c++ -> node.js) app which allows screensharing. I've tried to make a windows service from it for easy permissions elevation as well as simple auto-start. I've managed to rewrite it as service but to simplify my example I'll skip that. Let's just say I've used nssm service wrapper to run my app as service.
Whether I run service as local system or my own user, when it gets to the point where I request system for video sources, webRTC return nullptr.
SourceList* sources;
captureScreen = webrtc::DesktopCapturer::CreateScreenCapturer(options);
captureScreen->GetSourceList(&sources); //Return nullptr!
Exception thrown: read access violation.
sources._Mypair._Myval2._Myfirst was nullptr. occurred
When capturing camera instead of screen everything works fine according to this guy and only relevant thread in whole internet I found.
Is there a bug in webRTC/win10? Is there some kind of workaround I can use in order for this to work?

If you are making web based WebRTC app then i think everthing should work fine.
I don't thing there is bug in either WebRTC and Windows while screen sharing.
Make sure you are using Google Chrome for development. (Just an advice)
Your webapp app has permission for capturing windows.
If your are using Google Chrome then make sure you are running the chrome with command line flag "--enable-usermedia-screen-capturing" e.g. on Windows "Chrome.exe --enable-usermedia-screen-capturing"
Screensharing web app using WebRTC - https://www.webrtc-experiment.com/Pluginfree-Screen-Sharing/
Checkout WebRTC projects on GitHub - https://github.com/muaz-khan/WebRTC-Experiment
:)

Related

Expo publish - using a cached project alert

I wanted to make my app accessible without local connection via expo publish. After running the command i successfully get a link to the project page. But if i try to open the app via the project page in Expo Go, it displays this alert:
The project is loaded on my device(i suppose it is because it is cached in my device), but it is not opening for anyone else. How to load it with network instead of cache? My network is connected even though the alert tells to check it.
It was my mistake, had to go through the expo documentations to find a guide that simply states:
Invite your teammate to the Expo account that owns the project.
I thought since the project privacy is set to public, this was not mandatory. It is.
I had this problem today - for me the issue was being on a public WiFi network (at a co-working space) that I think must have some kind of network filtering that presumably blocked fetching new Expo packages.
Switching WiFi off on my phone and using cellular resolved the issue.

expo dev client application doesn't open

I'm trying to use expo-dev-client to add react-native-sms-retriever library to my project because expo doesn't have a library that supports reading sms messages. In expo documentation, it's suggested that I should use expo-dev-client to add custom native code. You can see the documentation here: https://docs.expo.dev/workflow/customizing/#developing-apps-with-custom-native-code
I followed all of the steps in starting guide for expo-dev-client. https://docs.expo.dev/clients/getting-started/
But when I start my app using "expo start --dev-client" and run on android, a white screen is shown for a second and then I'm redirected to expo go application page.
in console, the following 2 lines are written:
› Opening on Android...
› Opening com.droppgroup.masterclean://expo-development-client/?url=http%3A%2F%2F127.0.0.1%3A8081 on LDN_L21
I tried this on real device and 2 other emulators but I got the same result. I reinstalled expo go application and it still doesn't work.
Any suggestions on what I can do to make this work?
The issue may be a problem with Expo config plugins, which configure native code for an Expo project, by configuring Info.plist for example. I am currently experiencing a similar issue, though after scanning the QR code, I am directed to a black screen in my Expo Dev Client which crashes and takes me back to the home page. The Dev Client worked perfected until I ran expo add react-native-bluetooth-classic, since I am trying to access iOS bluetooth APIs. I am currently working on this issue, but I just wanted to point you in the direction of config plugins since the examples Expo gives for customizing your runtime have config plugins registred in the "plugins" property of app.json.
It may be necessary to create your own plugin, though I am unsure.
Please let me know if you come up with any fixes, and so will I.

Which Platform of Unity is best for Facebook Canvas App

I want to deploy my Unity3D game on Facebook as canvas App. There are two platforms in unity version 5:
WebPlayer
WebGL (Preview)
I have no idea about both of these builds. I am using Parse to store my user data. And Facebook Unity SDK for social gaming. I have built for IOS platform and now for Canvas App deployment I want to know:
which one of these would be best for Canvas App?
I want to know if there are any issues regarding Parse API or Facebook Unity SDK for
WebPlayer/WebGL build?
EDIT:
I have built for WebPlayer and i can not run it on Google Chrome.
does it have to do anything with Canvas App too?
I have built for WebGL and tried to run it on Google Chrome and got this alert:
( I am using Google Chrome Version 44.0.2403.107 (64-bit) )
Any suggestion/help is highly appreciated.
I will suggest you to not build your game in webplayer, because chrome is dropping support for unity webplayer(Google Chrome version 42 and later has disabled all NPAPI plugins), and other browser will also drop the support sooner or later. The best way forward is to use webGL. WebGL in unity is still getting evolved, but this is the future. I also have developed game for webGL, I didn't face much problems except data storage. Parse does not support webgl yet, you have to look for other services. In my case I have build my own php server and it is working fine. Anyways you have to choose what is best in your case. You should use webGL , but thats my opinion.
The error message is more or less self-explanatory: Chrome doesn't support running Unity WebGL when it is run from a local file on disk, because of Chrome security. This is not a real problem, as in production it will always be run from a webserver (http://).
During development, your options are:
Start chrome with access to local files: chrome.exe --allow-file-access-from-files
Host a local webserver (Apacha/WAMP, IIS, etc)
Use firefox
You are correct. Building the unity for the web is the way to go. You select web from the build settings and you can upload it to the facebook canvas. The thing with chrome is that it no longer supports NPAPI and that is what the Unity web players uses. You can manually enable it and try out your game in chrome. But for the majority of chrome users unity web player no longer works.

download and run exe from chrome browser using c++ plugin

I have a webpage where when I click a button, it should download an exe from a url and the exe should get automatically invoked without user intervention.
In Internet Explorer I achieved this through activex control ( .ocx ) deployed as a .cab file.
I am planning to extend this to chrome and firefox platform too. ( atleast chrome for the first step ).
I don't want to use Java applet ( need to remove java dependency ). I know I could achieve this through Firebreath plugin but clearly this is not a good time to dive into NPAPI plugin ( since NPAPI is already being fading out. Chrome has begun phasing out NPAPI ).
When I looked into alternative Plugin technologies to NPAPI, I stumbled upon Google Native Client. On further reading I got to know Nacl too won't fit my needs since os calls api will not work in nacl ( I hope URLDownloadToFile api or createprocess or shellexecute wouldn't work. Correct me if I am wrong ).
Should I go for Native Messaging? Is there anyother alternative technology am missing ? Guide me Please .
NPAPI until it goes away will let you do what you want; other than that Native Messaging is the only option.
As others have mentioned, this is a Really Bad Idea(tm).
Thanks all the people . I finally settled with Launch Application Using Custom Protocol Handler . http://msdn.microsoft.com/en-us/library/ie/aa767914(v=vs.85).aspx . This fitted my needs .
As suggested above, Chrome's native messaging appears to be the way to go - on Chrome.
First, have a look here: This blog entry shows that native messaging can be used to launch "calc.exe". I've yet to try it myself - but it looks promising:
https://plus.google.com/+FrancoisBeaufort/posts/jdTrmmZL9Xh
One thing to keep in mind is that the Native Messaging technique will only work from a Chrome Extension, which opens up an entire set of related questions.
(1) Can Chrome extensions be installed for all users using group policy? or via the registry?
-Yes, according to http://www.chromium.org/administrators/pre-installed-extensions
Later edit: only "published" extensions can be added via the registry. see - https://developer.chrome.com/extensions/external_extensions
(2) Can you detect whether an extension is already installed?
-Yes, Chrome Extension: How to detect if an extension is installed using Content Scripts
So maybe its possible to have a two-phase process:
-Your users will head to the web page, which will test for the extension (using #1 above)
-If its not there, have the users download and install the .exe (this will require interaction).
-The .exe will deploy the extension files and register it for Chrome (using #2 above)
-On subsequent visits, the already-installed extension can be used to launch/communicate with the now-already-installed .exe (using Native Messaging)

Host a c++ desktop application on a webpage

I am having a desktop application which having a UI interface made in Qt linked with a library which is doing all the calculation stuff. Values from UI is taken and pass to the API's in the DLL to get the output which is shown on Screen.
Now i want to do the same thing by transferring my application UI to a web page so that people can access the tool from anywhere without any installation process.
I want to retain my c++ DLL code so i don't have to do a lot of work. I am thinking of just converting this DLL to a C++ server by any communication Process(Sockets). I want to host this application on my company's website. (We have to make the website also so we are open to any set of tools).
I want to know what will be the best set of tools to do this stuff. Also there will be lot of data exchange between the webpage and server so the wholething should be optimized also. I goggled a bit and find stuff like silverlight and ASP.NET, But i am still not very clear which option will be more suitable.
I am a c++ programmer with no web application development experience. I am open to learn any new technology.
Thanks
Why not use Qt on the web directly? There are several projects like this one: http://qtwui.sourceforge.net/
There is a netscape plugin that will host a QT application and an ActiveX control wrapper on the QT website. You could use one of those to wrap your application. Note that this approach would require the user (or their administrator) to download and install the plugin.
An alternative approach might be to run your application through a remote desktop such as XVNC, NX or an RDP based layer. IIRC browser based remote desktop clients are available for most such protocols.
A few options:
pick a messaging/queue implementation (like http://www.zeromq.org/) and provide a service
implement a Windows Web Service if you want to be more enterprise friendly: http://msdn.microsoft.com/en-us/magazine/ee335693.aspx
I would not expose the implementation on the internet. Enough to have a simple buffer overflow and the machine can be taken over quickly. Adding a layer between the app and the web provides an easy way to validate input, access, stats ...
You should be able to use your DLL from an wt or cppcms application. Then you do not have to learn something new and can just use C++.
The way I'm currently doing this is with Boost.Python + django