Skip to content

Instantly share code, notes, and snippets.

View robwalch's full-sized avatar

Rob Walch robwalch

View GitHub Profile
@robwalch
robwalch / gist:6324bd94dddb49bfd4696745796b9002
Created March 2, 2020 17:04
Detect audio playback in video element
// Use WebAudio API to detect audio playback with volume
// Returns early with false when audio could not be playing
// Returns null if WebAudio API cannot be used while media is in a playing state
function isMediaPlayingAudio(mediaElement) {
if (media.paused || media.muted || media.volume === 0 || media.played.length < 1) {
return false;
}
let analyser = media.audioAnalyser;
let audioCtx = media.audioCtx;
if (!analyser) {
@robwalch
robwalch / sync_test.sh
Created July 25, 2020 00:21 — forked from elv-peter/sync_test.sh
Generate live HLS stream that causes audio to be out-of-sync for HLS.js
#!/bin/bash
#
# https://github.com/terabit-software/dynamic-stream-server/blob/master/scripts/sync_test.sh
#
# Tool to check video and audio sync.
# Loop with 1 beep per second with 4 increasing frequencies.
# Can be used to measure delays up to 4 seconds.
# The grid is accurate to about 1ms.
#
# Beep duration: 0.125s
@robwalch
robwalch / jw-ima-waterfall-hidden-setup-remove-on-ad-error.js
Last active December 17, 2020 18:05
JW Player Google IMA (bad) waterfall setup, with player that is hidden/removed unless ad break begins
const correlator = Math.floor(Date.now() / 1000 / 60); // changes every 60s
jwplayer('jwplayer_1').setup({
file: 'https://cdn.jwplayer.com/manifests/LQQpmqYT.m3u8',
autostart: true,
advertising: {
preloadAds: true,
autoplayadsmuted: true,
client: 'googima',
@robwalch
robwalch / HLS.js-talk.md
Last active May 17, 2021 20:52
HLS.js v1.0 talk outline