Windows 8, MediaCapture.StopPreviewAsync from javascript - windows-8

I'm using the Window's MediaCapture class from a Win8 html/javascript application. When I stop displaying the preview video in a <video /> tag, I figured I'd need to use the StopPreviewAsync method to end the preview stream. However, the MediaCapture.StopPreviewAsync method doesn't appear to be available from javascript. It's not documented on MSDN for javascript and attempting to call it results in a runtime error:
Object doesn't support property or method 'stopPreviewAsync'.
Is it not necessary to close the stream when using a MediaCapture instance from javascript? Why does it exist for only C#/C++/VB?

I ended up getting an answer from the Microsoft team that develops the Media Capture API. There is no guaranteed method of closing the stream and giving up the camera. The only option is to remove all references to the stream and then call CollectGarbage(). The camera will be released whenever the associated memory is reclaimed. Apparently a more explicit method of releasing the camera will be coming at some point for Windows 8.1.

Related

When having a p2p webtrc connection, how to use different resolutions for the video call and the photo capture?

I'm working on a p2p webtrc video call between HoloLens2 and PC. I also need to support the capturing of photos(and send photos to the server). Now the video and photo can be supported with a resolution of 2272x1278, but I need the photo resolution of 3904x2196(the highest value that HoloLens2 provides).
The problem is when I am trying to change the resolutions, I found I had no limit when the call continues.
I use MediaCapture to take a photo. And the WebcamSource based on MixedReality-WebRTC running on the SharedReadOnly mode. I thought of one way to solve this: shut the call down when taking a photo, and restart it after capturing finished. But the problem is
How can I set the mode to exclusive WebcamSource when just capturing the photo?
Can I make sure when the call had been shut down, the WebcamSource is released?
Or if there is another way to use different resolutions for the video call and the photo capture? Thanks a lot.
How can I set the mode to exclusive WebcamSource when just capturing the photo?
No, SharingMode has hardcoded in the UwpUtils and does not expose any API to access.
Can I make sure when the call had been shut down, the WebcamSource is released?
To make sure dispose of audio and video tracks and media sources last, please reference the following code:
localAudioTrack?.Dispose();
localVideoTrack?.Dispose();
microphoneSource?.Dispose();
webcamSource?.Dispose();

Show webcam stream in CEF 1 / appjs?

I'm running appjs and I'm thinking of showing live content from the local webcam in the html and would like some hints on how to do this.
/Kristofer
Appjs is built on top of CEF so I think I am correct in saying that at the moment this functionality is not available out of the box. However the next version of AppJS will use content api which means that media and video should be available.
For now I would suggest that you develop your application in HTML5 using chrome and then run it inside AppJS later on when it catches up and provides these functions out of the box.

How to intercept didStartLoad in web view (metro apps)

I have been developing iOS and Mac OSX apps since years. So, I was pretty surprised to find no method for Windows 8 Metro WebView to intercept when it starts loading a new page, but only when it finishes loading.
Is there really any workaround for this? I could not find anything both in the docs and on the web...
Thank you very much!
Fabio
You can use the Window.External.Notify() method to trigger an event back in your C# or whatnot. You can also use the Webview.InvokeScript() to activate scripts from outside the control. You can write a script as a string outside the WebView and use the WebView.InvokeScript() with "eval" as the first arg to run that script inside the control.
ScriptNotify
This shows how to use both ScriptNotify and InvokeScript

Window.Current in a WinJS application

I have a Window Runtime Component that accesses the Window.Current object, to add an handler on the VisibilityChanged event.
If I run that code in a C# Windows Store App, it runs perfectly (as soon as I do that in a method where the Window has been initialized).
Unfortunately, I am unable to do that in a WinJS app. It breaks when I launch the app.
Why ?
Thanks !
Window.Current is a XAML concept. It simply doesn't exist in an HTML/JS app. You can't host or use XAML objects in a WinJS app.
You need to attach to the corresponding browser events instead, in Javascript.

Embedded video in WinForms (AxShockwaveFlash)

I have uploaded a couple of tutorial videos in youtube.
In my winforms application (by using the AxShockwaveFlash object) i reproduce the selected video by the user.
AxShockwaveFlash1.LoadMovie(http://www.youtube ..video1)
Here comes the story.
The first time the user selects a video, reproduction works like a charm.
When the user selects to see the second video
AxShockwaveFlash1.LoadMovie(http://www.youtube ..video2)
the ShockwaveFlash continues the reproduction of the first selection
Try to use
AxShockwaveFlash1.Stop();
AxShockwaveFlash1.Movie = "Your source";
AxShockwaveFlash1.Play();
Pattern to avoid leaving flash arguments behind.
Without knowing how you have integrated the video in your form, the method I would do is using a webBrowsercontrol in the form and embed the video in the control.
msdn on webBrowsercontrol
I had encountered this problem and resolved it by changing the Embed property of the Ax object control to False.
I embed the videos via the movie URL each time as follows:
http://www.youtube.com/v/targetmovie&feature=player_embedded
Works a treat
Tamir,
the video is embedded. Not stored locally
This is because your application is loading flash player loader from the cache and then it's loading the real player from the site , finally this yield a security exception.
In internet explorer , in internet options set to check for new versions of the documents each time you visit the page.
You first need to extract the FLV file like here:
Getting an FLV from YouTube in .NET