- Clone this repo and open terminal.
cd
to the directory of README.md.- run
yarn install
. - run
yarn start-app
, this will host the app in local environment or you can host theapp
folder on other place can access. - copy
https://localhost:8000/index.html
or URL if you host on the place to test-app 'Video app url' input box and then click 'Load' button. - change
videoFrameHandler
function inapp/index.js
- This sample processes the video frame in main thread for simplicity, you can move the frame processing to worker thread if needed.
You can find the Teams video extensibility API link
There are three API for video extensibility
registerForVideoFrame(frameCallback, config)
- video frames from video pipeline.
- a callback to return processed video frames to video pipeline.
- a callback to notify error
registerForVideoEffect(callback)
- Get notification that the selected effect in video app’s UI should be applied
notifySelectedVideoEffectChanged(
effectChangeType,
effectId,
)
- Whenever the user selects a different effect in a video app, the video app should call this API to notify Teams client.
- Test-app was used to develop/verify video app, you can find the test-app under the
test-app
folder, copy and unzip to other folder. Ensure you are in Windows, and your computer has a camera. Use OBS virtual camera if you don't have a camera. - After the application is opened, select a camera device in the 'Camera' drop down.
- Input your video app's URL. Deploying the video app in https server is preferred.
- Click
Load video app
. The sample video app will be loaded if theVideo app url
is blank.
- Load video app following commands in the above section.
- To evaluate processing time, click
Real-time Evaluation
orFull Evaluation
under `Time per Frame'.Real-time Evaluation
logs the average and range of processing time in millisecond in each second.Full Evaluation
logs both the processing time and the distribution of processing time.
- To evaluate memory usage, click
Real-time Evaluation
orFull Evaluation
under `Memory Usage'.Real-time Evaluation
logs the average and range of both active heap size and total heap size for each frame.Full Evaluation
logs both the heap size and the distribution of heap size.
- To test video app under different resolutions, click
Reduce the resolution by half
,Same
, orDouble the resolution
.
- Click
Destroy video app
if you have already loaded the sample video app. - Input your video app's URL.
- Click
Load video app
.
We can change the video frame resolution by changing this configuration file: %appdata%\Roaming\Microsoft\electron\SkypeRT\persistent.conf
Please append the following key-value to the json file: "RtmCodecsConfig": {"MinVideoSourceResolution":"83886800", "MaxVideoSourceResolution":"83886800"}
Here are the allowed number corresponding to specific resolution:
(640, 360) = 0x02800168 = 41943400
(1280, 720) = 0x050002D0 = 83886800
(1920, 1080) = 0x07800438 = 125830200
After saving the persistent.conf, restart the test-app, it should grab video frame from camera with the given resolution.
The RtmCodecsConfig key-value will be removed every time restarting the test-app, it's expected. But the resolution will be remembered in the test-app future running.
- Make sure your camera has been plugged into your computer.
- Delete
%appdata%\Microsoft\electron
folder.
- Host the app directory in a public accessible HTTPS server. You can use github page as the host.
- Replace the
name
,appId
, andcontentUrl
inmanifest/manifest.json
.- The contentUrl should point to your app directory, like
https://github.com/microsoft/teams-videoapp-sample/app/
- appId can be any unique GUID
- The contentUrl should point to your app directory, like
- zip the manifest directory, choose the zip file after clicking Upload a custom app
- Go to a teams meeting, enable the video, and activate the video app.
- You can get more information on Video app developer guide
This project welcomes contributions and suggestions. Most contributions require you to agree to a Contributor License Agreement (CLA) declaring that you have the right to, and actually do, grant us the rights to use your contribution. For details, visit https://cla.opensource.microsoft.com.
When you submit a pull request, a CLA bot will automatically determine whether you need to provide a CLA and decorate the PR appropriately (e.g., status check, comment). Simply follow the instructions provided by the bot. You will only need to do this once across all repos using our CLA.
This project has adopted the Microsoft Open Source Code of Conduct. For more information see the Code of Conduct FAQ or contact [email protected] with any additional questions or comments.
This project may contain trademarks or logos for projects, products, or services. Authorized use of Microsoft trademarks or logos is subject to and must follow Microsoft's Trademark & Brand Guidelines. Use of Microsoft trademarks or logos in modified versions of this project must not cause confusion or imply Microsoft sponsorship. Any use of third-party trademarks or logos are subject to those third-party's policies.