Releases: shinyoshiaki/werift-webrtc
Releases · shinyoshiaki/werift-webrtc
Specify static PayloadType
const pc = new RTCPeerConnection({
codecs: {
audio: [
new RTCRtpCodecParameters({
mimeType: "PCMU",
clockRate: 8000,
channels: 1,
payloadType: 0
}),
],
},
});BundlePolicy
How to specify BundlePolicy
const pc = new RTCPeerConnection({
bundlePolicy: "disable" or "max-compat" or "max-bundle",
});Default value is max-compat
Suppor RED (RTP Payload for Redundant Audio Data)
v0.13.6 v0.13.6
MediaRecorder now supports AV1
MediaRecorder now supports VP9
v0.13.2 v0.13.2
MediaRecorder now supports h264
v0.13.1 v0.13.1
Support MediaRecorder API
Video and Audio can be saved to a webm file using Node.js alone, without the need for gStreamer.
example
import { MediaRecorder, RTCPeerConnection } from "werift";
import { Server } from "ws";
// open ./answer.html
const server = new Server({ port: 8888 });
console.log("start");
server.on("connection", async (socket) => {
const recorder = new MediaRecorder([], "./test.webm", {
width: 640,
height: 360,
});
const pc = new RTCPeerConnection();
{
const transceiver = pc.addTransceiver("video");
transceiver.onTrack.subscribe((track) => {
recorder.addTrack(track);
if (recorder.tracks.length === 2) {
recorder.start();
}
setInterval(() => {
transceiver.receiver.sendRtcpPLI(track.ssrc);
}, 15_000);
});
}
{
const transceiver = pc.addTransceiver("audio");
transceiver.onTrack.subscribe((track) => {
recorder.addTrack(track);
if (recorder.tracks.length === 2) {
recorder.start();
}
});
}
await pc.setLocalDescription(await pc.createOffer());
const sdp = JSON.stringify(pc.localDescription);
socket.send(sdp);
socket.on("message", (data: any) => {
pc.setRemoteDescription(JSON.parse(data));
});
});Support SRTP_AEAD_AES_128_GCM
v0.12.9 v0.12.9
Fixed some bugs
v0.12.8 v0.12.8
Improve DTLS negotiation
v0.12.6 v0.12.6