Compare commits

..

No commits in common. "e871d5c268cff5babfff5c9211e2fa52d1613c64" and "dda3328667d15dfcf22d1630899c4fab8f2ae516" have entirely different histories.

2 changed files with 11 additions and 51 deletions

View File

@ -1,20 +1,8 @@
const isSecure = window.location.protocol === 'https:'; const host = window.location.hostname
const host = window.location.hostname; const ws0 = new WebSocket(`ws://${host}:3001`);
const ws0builder = isSecure ? `wss://${host}/ws0` : `ws://${host}:3001`; const ws1 = new WebSocket(`ws://${host}:3002`);
const ws1builder = isSecure ? `wss://${host}/ws1` : `ws://${host}:3002`; const pc0 = new RTCPeerConnection({ iceServers: [] });
const ws0 = new WebSocket(ws0builder); const pc1 = new RTCPeerConnection({ iceServers: [] });
const ws1 = new WebSocket(ws1builder);
const config = {
iceServers: [
{
urls: ['stun:dwestgate.us:3478','turn:dwestgate.us:3478?transport=udp'],
username: 'webrtcuser',
credential: 'webrtccred'
}
]
};
const pc0 = new RTCPeerConnection(config);
const pc1 = new RTCPeerConnection(config);
const video0 = document.getElementById('video0') as HTMLVideoElement; const video0 = document.getElementById('video0') as HTMLVideoElement;
const video1 = document.getElementById('video1') as HTMLVideoElement; const video1 = document.getElementById('video1') as HTMLVideoElement;
@ -77,20 +65,3 @@ ws1.onmessage = async (message) => {
await pc1.addIceCandidate(msg.data); await pc1.addIceCandidate(msg.data);
} }
}; };
// TODO: Not yet working
// const dc0 = pc0.createDataChannel("keepalive");
// dc0.onopen = () =>{
// console.log("Data channel 0 open");
// setInterval(()=>{
// dc0.send("ping");
// },10000)
// }
// const dc1 = pc1.createDataChannel("keepalive");
// dc1.onopen = () =>{
// console.log("Data channel 1 open");
// setInterval(()=>{
// dc1.send("ping");
// },10000)
// }

View File

@ -9,14 +9,14 @@ const FRAME_SIZE = WIDTH * HEIGHT * 1.5; // YUV420p frame size (460800 bytes)
export default class TVWebSocket { export default class TVWebSocket {
videoDevice: string; videoDevice: string;
public constructor(port: number, videoDevice) { public constructor(port: number, videoDevice) {
this.videoDevice = videoDevice this.videoDevice = videoDevice
const ffmpegProcess = this.startFFmpeg(); const ffmpegProcess = this.startFFmpeg();
const videoTrack = this.createVideoTrack(ffmpegProcess); const videoTrack = this.createVideoTrack(ffmpegProcess);
const audioTrack = this.createAudioTrack(ffmpegProcess); const audioTrack = this.createAudioTrack(ffmpegProcess);
ffmpegProcess.stdio[2].on('data', data => { ffmpegProcess.stdio[2].on('data',data=>{
// console.log("stdio[2] ",data.toString()) // console.log("stdio[2] ",data.toString())
}) })
@ -24,7 +24,7 @@ export default class TVWebSocket {
const wss = new ws.WebSocketServer({ port }); const wss = new ws.WebSocketServer({ port });
wss.on('connection', async (ws: ws.WebSocket) => { wss.on('connection', async (ws: ws.WebSocket) => {
const peerConnection: RTCPeerConnection = this.createPeerConnection(videoTrack, audioTrack); const peerConnection: RTCPeerConnection = this.createPeerConnection(videoTrack, audioTrack);
ws.on('message', async (message: Buffer) => { ws.on('message', async (message: Buffer) => {
const { type, data } = JSON.parse(message.toString()); const { type, data } = JSON.parse(message.toString());
@ -113,7 +113,7 @@ export default class TVWebSocket {
return p; return p;
} }
createVideoTrack = (ffmpegProcess: ChildProcessWithoutNullStreams) => { createVideoTrack = (ffmpegProcess: ChildProcessWithoutNullStreams) => {
let videoBuffer = Buffer.alloc(0); let videoBuffer = Buffer.alloc(0);
const videoSource = new nonstandard.RTCVideoSource(); const videoSource = new nonstandard.RTCVideoSource();
@ -185,18 +185,7 @@ export default class TVWebSocket {
} }
createPeerConnection = (videoTrack: MediaStreamTrack, audioTrack: MediaStreamTrack): RTCPeerConnection => { createPeerConnection = (videoTrack: MediaStreamTrack, audioTrack: MediaStreamTrack): RTCPeerConnection => {
const peerConnection = new RTCPeerConnection({ const peerConnection = new RTCPeerConnection({ iceServers: [] });
iceServers: [
{
urls: 'stun:192.168.0.3:3478'
},
{
urls: 'turn:192.168.0.3:3478?transport=udp',
username: 'webrtcuser',
credential: 'webrtccred'
}
]
});
const stream = new MediaStream() const stream = new MediaStream()
stream.addTrack(videoTrack) stream.addTrack(videoTrack)
stream.addTrack(audioTrack); stream.addTrack(audioTrack);