1.4.0 • Published 2 months ago

@microsoft/live-share-media v1.4.0

Weekly downloads
-
License
SEE LICENSE IN LI...
Repository
github
Last release
2 months ago

Microsoft Live Share Media

Easily add media synchronization to your Teams meeting app, powered by Fluid Framework.

This package is an extension of Microsoft Live Share, and requires the @microsoft/live-share extension. You can find it on NPM here.

You can find our API reference documentation at aka.ms/livesharedocs.

Installing

To add the latest version of the SDK to your application using NPM:

npm install @microsoft/live-share --save
npm install @microsoft/live-share-media --save

or using Yarn:

yarn add @microsoft/live-share
yarn add @microsoft/live-share-media

Building package

After cloning the GitHub repository, navigate to the root folder and perform:

npm install
npm run build

This will use lerna to hoist and build all dependencies.

How to use this extension

<body>
  <video id="player">
    <source src="YOUR_VIDEO_SRC" type="video/mp4" />
  </video>
  <div class="player-controls">
    <button id="play-button">Play</button>
    <button id="pause-button">Pause</button>
    <button id="restart-button">Restart</button>
    <button id="change-track-button">Change track</button>
  </div>
</body>
import * as microsoftTeams from "@microsoft/teams-js";
import { TeamsFluidClient } from "@microsoft/live-share";
import { LiveMediaSession } from "@microsoft/live-share-media";

// Initialize the Teams Client SDK
await microsoftTeams.app.initialize();

// Setup the Fluid container
const client = new TeamsFluidClient();
const schema = {
  initialObjects: {
    mediaSession: LiveMediaSession,
    ...,
  },
};
const { container } = await client.joinContainer(schema);
const { mediaSession } = container.initialObjects;

// Get the player from your document and create synchronizer
const player = document.getElementById("player");
const synchronizer = mediaSession.synchronize(player);

// Define roles you want to allow playback control and initialize sync
const allowedRoles = ["Organizer", "Presenter"];
await mediaSession.initialize(allowedRoles);

// Intercept user play, pause, seek, and set track actions through synchronizer

document.getElementById("play-button").onclick = () => {
  synchronizer.play();
};

document.getElementById("pause-button").onclick = () => {
  synchronizer.pause();
};

document.getElementById("restart-button").onclick = () => {
  synchronizer.seekTo(0);
};

document.getElementById("change-track-button").onclick = () => {
  synchronizer.setTrack({
    trackIdentifier: "SOME_OTHER_VIDEO_SRC",
  });
};

Code samples

There are several code samples that are hosted in a separate GitHub repository.

Sample nameDescriptionJavascript
React VideoBasic example showing how the LiveMediaSession object works with HTML5 video.View
React Media TemplateEnable all connected clients to watch videos together, build a shared playlist, transfer whom is in control, and annotate over the video.View

Package Compatibility

The Live Share SDK contains dependencies for @microsoft/teams-js and fluid-framework packages among others. Both of these packages are sensitive to the package version your app any libraries use. You will likely run into issues if the package version your app uses doesn't match the version other libraries you depend on use.

It is critical that your app use the package dependencies listed in the table below. Lookup the version of the @microsoft/live-share you're using and set any other dependencies in your package.json file to match:

@microsoft/live-share@microsoft/teams-jsfluid-framework@microsoft/live-share-(media or canvas)@fluidframework/azure-client@microsoft/TeamsFx@microsoft/TeamsFx-react
1.0.0-preview.12.0.0-experimental.1~1.2.31.0.0-preview.1 (optional)~1.0.2 (optional)2.0.0-experimental.0 (optional)2.0.0-experimental.0 (optional)
~0.5.12.0.0-experimental.1~1.2.3~0.5.1 (optional)~1.0.2 (optional)2.0.0-experimental.0 (optional)2.0.0-experimental.0 (optional)
~0.3.12.0.0-experimental.0~0.59.0~0.3.1 (optional)~0.59.0 (optional)2.0.0-experimental.0 (optional)2.0.0-experimental.0 (optional)

Contributing

There are several ways you can contribute to this project:

This project has adopted the Microsoft Open Source Code of Conduct. For more information see the Code of Conduct FAQ or contact opencode@microsoft.com with any additional questions or comments.

Reporting Security Issues

Security issues and bugs should be reported privately, via email, to the Microsoft Security Response Center (MSRC) at secure@microsoft.com. You should receive a response within 24 hours. If for some reason you do not, please follow up via email to ensure we received your original message. Further information, including the MSRC PGP key, can be found in the Security TechCenter.

Copyright (c) Microsoft Corporation. All rights reserved.

Licensed under a special Microsoft License.

2.0.0-internal.5

2 months ago

2.0.0-internal.4

2 months ago

2.0.0-internal.3

2 months ago

2.0.0-internal.2

3 months ago

2.0.0-internal.1

3 months ago

1.4.0

3 months ago

1.3.1

3 months ago

1.3.0

4 months ago

1.2.0

8 months ago

1.0.2

9 months ago

1.2.2

7 months ago

1.2.1

7 months ago

1.1.0

9 months ago

1.0.1

12 months ago

1.0.0

12 months ago

1.0.0-preview.5

1 year ago

1.0.0-preview.6

1 year ago

1.0.0-preview.7

1 year ago

1.0.0-preview.8

1 year ago

1.0.0-preview.9

1 year ago

1.0.0-preview.4

2 years ago

0.5.0-beta.1

2 years ago

0.5.0-beta

2 years ago

0.5.0-beta.5

2 years ago

0.5.0-beta.4

2 years ago

0.5.0-beta.3

2 years ago

0.5.0-beta.2

2 years ago

1.0.0-preview.1

2 years ago

1.0.0-preview.2

2 years ago

1.0.0-preview.3

2 years ago

0.5.0

2 years ago

0.5.1

2 years ago

0.4.1

2 years ago

0.4.0

2 years ago

0.3.1

2 years ago

0.3.0

2 years ago

0.2.8

2 years ago

0.2.7

2 years ago

0.2.6

2 years ago

0.2.5

2 years ago

0.2.4

2 years ago

0.2.3

2 years ago

0.2.2

2 years ago

0.2.1

2 years ago

0.2.0

2 years ago

0.1.2

2 years ago

0.1.1

2 years ago

0.1.0

2 years ago