Skip to content

Instantly share code, notes, and snippets.

View mmcc's full-sized avatar
📺
Movin vidja bits

Matthew McClure mmcc

📺
Movin vidja bits
View GitHub Profile
@mmcc
mmcc / authed_conn_case.ex
Last active October 26, 2023 00:05
Elixir test macros
defmodule AppWeb.AuthConnCase do
alias AppWeb.Router
use ExUnit.CaseTemplate
import Phoenix.ConnTest, only: [dispatch: 5, json_response: 2]
@doc """
Allows you to call the same set of tests with the same describe block
Setups is an array of named setups, i.e. [first_setup: [:setup_conn, :thing], second_setup: [:different_setup, :neato_setup]]
## Examples
@mmcc
mmcc / install-docker-mint.sh
Last active October 17, 2022 19:52 — forked from sirkkalap/Install-Docker-on-Linux-Mint.sh
Install Docker on Linux Mint 17
sudo apt-key adv --keyserver hkp://p80.pool.sks-keyservers.net:80 --recv-keys 58118E89F3A912897C070ADBF76221572C52609D
sh -c 'echo deb https://apt.dockerproject.org/repo ubuntu-trusty main > /etc/apt/sources.list.d/docker.list'
# Install docker
sudo apt-get update
sudo apt-get purge lxc-docker
sudo apt-get install linux-image-extra-$(uname -r)
sudo apt-get install docker-engine
sudo service docker start
@mmcc
mmcc / encrypted.md
Last active August 31, 2022 07:20
Encrypt / Decrypt MP3

Request

You can create an encrypted mp3 using Zencoder's encryption settings:

{
  "input": "s3://my-bucket/super-secret.mp3",
  "output": [
    {
      "format":"mp3",

"url":"s3://my-bucket/super-secret-encrypted.mp3",

@mmcc
mmcc / audio.html
Created October 3, 2014 00:47
Video.js Audio example
<audio id="audio_example" class="video-js vjs-default-skin" controls preload="auto"
width="600" height="600" poster="/img/awesome-album-art.png" data-setup='{}'>
<source src="/audio/awesome-music.mp3" type='audio/mp3'/>
</audio>
@mmcc
mmcc / b2dntp
Created September 11, 2014 16:49
boot2docker NTP update
#!/bin/sh
# Fix NTP/Time
# https://github.com/boot2docker/boot2docker/issues/290
boot2docker ssh -- sudo killall -9 ntpd
boot2docker ssh -- sudo ntpclient -s -h pool.ntp.org
boot2docker ssh -- sudo ntpd -p pool.ntp.org
@mmcc
mmcc / saga.ts
Last active June 28, 2019 22:48
Redux Confirmation Modal Examples
function *deleteAsset (action: Action<'AssetDeleteRequested'>) {
const { payload: { id }, meta: { callbackAction } } = action;
yield put({ type: 'ConfirmAction', payload: { actionType: action.type } });
const { canceled } = yield race({
confirmed: take('ActionConfirmed'),
canceled: take('ActionCanceled'),
});
if (canceled) {
@mmcc
mmcc / elixir-example.ex
Last active January 31, 2019 19:55
Node & Elixir Updates
# These examples assume you have your token id and secret in your Mix config:
# config :mux, token_id: 'your-token-id', token_secret: 'your-token-secret'
# Same as above, first we'll create a token with defaults: 7 day expiration for video
video_token = Mux.Token.sign('your-playback-id')
# https://stream.mux.com/your-playback-id.m3u8?token=#{token}
gif_token = Mux.Token.sign('your-playback-id',
type: :gif,
expiration: 60 * 60 * 3 # 3 hours
@mmcc
mmcc / access.ts
Created March 29, 2018 22:52
Simple example to show an issue with array index access.
interface IGenericThing {
bop: [string, string, string];
[key: string]: string | number | [string, string, string];
}
const foo: IGenericThing = {
bar: '#0000ff',
baz: 123,
bat: ['a', 'b', 'c'],
bop: ['d', 'e', 'f'],
@mmcc
mmcc / stream_to_akamai.md
Last active January 12, 2018 11:27
Stream directly to Akamai

Directly push to Akamai with FMLE

Assuming you already have the appropriate Akamai credentials, you should have some information like this:

Primary: rtmp://p.ep12345.i.akamaientrypoint.net/EntryPoint
Backup:  rtmp://b.ep12345.i.akamaientrypoint.net/EntryPoint
User: ######
Pass: ******
Stream: [EVENT_ANGLE_BITRATE]@12345

Playback: http://zencoder_hd1_1-lh.akamaihd.net/[EVENT_ANGLE_BITRATE]@12345

@mmcc
mmcc / bc-play-converter.js
Created January 24, 2014 21:35
Convert some BC Play videos.
var zc = require('zencoder')()
, request = require('request')
, options = {};
function initialize(output_location) {
var timestamp = new Date();
options.folder = timestamp.toISOString() + '/';
options.base_url = "s3://zencoder-jobs/"
console.log("Files will be placed in " + options.folder);
getRenditions();