Skip to content

Instantly share code, notes, and snippets.

View robwalch's full-sized avatar

Rob Walch robwalch

View GitHub Profile
var RollingSpider = require('rolling-spider');
//discover.js
var drone = new RollingSpider({
// uuid: ['RS_W179234'],
logger: console.log
// forceConnect: true
});
console.log('drone', drone);
@robwalch
robwalch / tos-4k.sh
Last active July 6, 2020 07:00
Tears of Steal 4k multibitrate multitrack HLS encode
#!/bin/sh
mkdir -p variant_source
ffmpeg -y -i tearsofsteel_4k.mov -vcodec libx264 -preset veryfast -crf 18 -profile:v baseline -s 480x212 -aspect 9/4 -acodec aac -strict experimental -ac 2 -b:a 96k -ar 44100 -bufsize 360K -maxrate 360K variant_source/ld.mp4
ffmpeg -y -i tearsofsteel_4k.mov -vcodec libx264 -preset veryfast -crf 18 -profile:v main -s 640x288 -aspect 9/4 -an -bufsize 720K -maxrate 720K variant_source/sd.mp4
ffmpeg -y -i tearsofsteel_4k.mov -vcodec libx264 -preset veryfast -crf 18 -profile:v high -s 1280x572 -aspect 9/4 -an -bufsize 2400K -maxrate 2400K variant_source/hd.mp4
ffmpeg -y -i tearsofsteel_4k.mov -vcodec libx264 -preset veryfast -crf 18 -profile:v high -s 1920x856 -aspect 9/4 -an -bufsize 3200K -maxrate 3200K variant_source/fullhd.mp4
ffmpeg -y -i tearsofsteel_4k.mov -vcodec libx264 -preset veryfast -crf 18 -profile:v high -s 2560x1142 -aspect 9/4 -an -bufsize 4800K -maxrate 4800K variant_source/quadhd.mp4
@robwalch
robwalch / audio-levels.js
Last active January 7, 2016 21:03
Print out audio levels for all video / audio elements on the page
// audio-levels.js
// https://github.com/bgrins/devtools-snippets
// Print out audio levels for all video / audio elements on the page.
// Watch out for: "MediaElementAudioSource outputs zeroes due to CORS access restrictions" ...for x-origin media urls
(function() {
[].forEach.call(document.querySelectorAll("video,audio"), function(media) {
var splitPath = media.src.split('/');
@robwalch
robwalch / jw6-event-delegation.js
Last active August 29, 2015 14:06
JW Player event delegation example
var jw = jwplayer('jwplayer').setup({file:"videofile.mp4"});
var noop = function() {/* do nothing */}
var timeDelegate = noop;
jw.onTime(timeDelegate);
jw.onPlaylistItem(function(itemEvent) {
if (itemEvent.index === 1) {
@robwalch
robwalch / jwplayer-backbone-events.js
Last active April 25, 2017 20:38
JW Player with Backbone Events
// Extend JW Player instance with Backbone Events
// binds jw events to trigger using lowercase names 'ready', 'play', 'time', etc...
// allows us to add and remove listers using 'on', 'off', 'once', etc...
// Requires jwplayer.js and Backbone.js (which includes underscore)
// For more info see: http://backbonejs.org/#Events
// and http://support.jwplayer.com/customer/portal/articles/1413089-javascript-api-reference
// IMPORTANT: define listeners in the same scope as the new jw instance returned by setup
@robwalch
robwalch / playbackrate.js
Last active November 14, 2019 17:33
Modify playbackRate for all video / audio elements on the page.
// playbackrate.js
// https://github.com/bgrins/devtools-snippets
// Increase playbackRate for all video / audio elements on the page.
(function() {
console.group('playbackRate');
[].forEach.call(document.querySelectorAll("video,audio"), function(media) {
var splitPath = media.src.split('/');
# history options
export HISTCONTROL=erasedups
export HISTSIZE=10000
export HISTIGNORE='&:ls:[bf]g:'
shopt -s histappend
export COMMAND_MODE=unix2003
# colors for misc things
@robwalch
robwalch / robot.js
Created December 8, 2012 08:38
HAWTBAWT
var r = 19;//Math.ceil(Math.sqrt(27 * 27 + 24 * 24)/2); // Tank Dimensions: 27, 24
var Robot = function(robot) {
this.data = {};
// MOVE_INCREMENT = 1, ANG_INCREMENT = 1;
this.time = 0;
this.arenaTopLeft = {x: r, y: r};
this.arenaTopRight = {x: robot.arenaWidth -r, y: r};
this.arenaBottomLeft = {x: r, y: robot.arenaHeight -r};
@robwalch
robwalch / robot.js
Created December 4, 2012 13:49
Pretty
var r = 19, Robot = function(e) {
this.data = {}, this.time = 0, this.arenaTopLeft = {x: r,y: r}, this.arenaTopRight = {x: e.arenaWidth - r,y: r}, this.arenaBottomLeft = {x: r,y: e.arenaHeight - r}, this.arenaBottomRight = {x: e.arenaWidth - r,y: e.arenaHeight - r}, this.arenaCenter = {x: e.arenaWidth / 2,y: e.arenaHeight / 2}, this.target1 = null, this.target2 = null
}, p = Robot.prototype;
(function() {
var e = r, t = r * r, n = 20, i = 2, s = 50, o = 50;
p.sub = function(e, t) {
return {x: e.x - t.x,y: e.y - t.y}
}, p.add = function(e, t) {
return {x: e.x + t.x,y: e.y + t.y}
}, p.neg = function(e) {
@robwalch
robwalch / robot.js
Created December 2, 2012 00:15
B-BOT
var r = 19, Robot = function(e) {
this.data = {}, this.time = 0, this.arenaTopLeft = {x: r,y: r}, this.arenaTopRight = {x: e.arenaWidth - r,y: r}, this.arenaBottomLeft = {x: r,y: e.arenaHeight - r}, this.arenaBottomRight = {x: e.arenaWidth - r,y: e.arenaHeight - r}, this.arenaCenter = {x: e.arenaWidth / 2,y: e.arenaHeight / 2}, this.target1 = null, this.target2 = null
}, p = Robot.prototype;
(function() {
var e = r, t = r * r, n = 20, i = 2, s = 50, o = 50;
p.sub = function(e, t) {
return {x: e.x - t.x,y: e.y - t.y}
}, p.add = function(e, t) {
return {x: e.x + t.x,y: e.y + t.y}
}, p.neg = function(e) {