Provide encryption/decryption features compatible with Vonage sframe-core native package.
npm install @vonage/js-sframeProvide encryption/decryption features compatible with Vonage sframe-core native package.
``bash`
npm i @vonage/js-sframe
`typescript
import {
AudioCodec,
Client,
KidType,
KeyContentType,
VideoCodec
} from "@vonage/js-sframe";
async function encryptConnection(
kid:KidType,
key:KeyContentType,
connection: RTCPeerConnection
) {
const [sender] = connection.getSenders();
const client = await Client.create();
await client.setCodecs(AudioCodec.OPUS, VideoCodec.VP8); // Setting codecs is mandatory for Safari.
await client.setReceiverEncryptionKey(kid, key);
await client.encrypt(kid, sender);
}
`
`typescript
import {
AudioCodec,
Client,
KidType,
KeyContentType,
VideoCodec
} from "@vonage/js-sframe";
async function decrypt(
kid:KidType,
key:KeyContentType,
connection: RTCPeerConnection
) {
const [receiver] = connection.getReceivers();
const client = await Client.create();
await client.setCodecs(AudioCodec.OPUS, VideoCodec.VP8); // Setting codecs is mandatory for Safari.
await client.setReceiverEncryptionKey(kid, key);
await client.decrypt(kid, receiver);
}
`
@vonage/js-sframe version 1.5.0 added a workaround for this issue, setting codec explicitly is no longer required
@vonage/js-sframe version < 1.5.0 only: Media codecs used could not be automatically known on Safari (WebKit).
Therefore, if you want to support Safari (WebKit), you need to explicitly set them.
This could be achieve via client.setCodecs` method.
https://vonage.github.io/embedded-media-processing-docs/js-sframe/1.5.2/