A simple TVStatic like animation I made for sfc.fm, not very realistic but might expand it in the future. If you want to take it further have a look at the CRT Simulation library.

class TVStatic {
  constructor(options = {}) {
    this.canvas = options.canvas;

    if (!this.canvas) {
      throw new Error('No canvas element provided.');
    }

    this.ctx = this.canvas.getContext('2d');
    this.toggle = true;
    this.pause = options.pause || false;

    this.loop = this.loop.bind(this);
    this.noise = this.noise.bind(this);
    this.pauseLoop = this.pauseLoop.bind(this);

    return this;
  }

  noise() {
    const w = this.ctx.canvas.width;
    const h = this.ctx.canvas.height;
    const image_data = this.ctx.createImageData(w, h);
    const buffer32 = new Uint32Array(image_data.data.buffer);
    const len = buffer32.length;

    for (let i = 0; i < len; i++) {
      if (Math.random() < 0.5) {
        buffer32[i] = 0xff000000; // 4278190080
      }
    }

    this.ctx.putImageData(image_data, 0, 0);
  }

  pauseLoop() {
    return this.pause = !this.pause;
  }

  loop() {
    if (this.pause) {
      return;
    }

    // added toggle to get 30 FPS instead of 60 FPS
    this.toggle = !this.toggle;
    if (this.toggle) {
      requestAnimationFrame(this.loop);
      return;
    }
    this.noise();
    requestAnimationFrame(this.loop);
  }
}

Example