I use Namecheap.com as a registrar, and they resale SSL Certs from a number of other companies, including Comodo.
These are the steps I went through to set up an SSL cert.
| Frame-type options: | |
| • --keyint <integer> (x264) | |
| • -g <integer> (FFmpeg) | |
| • Keyframe interval, also known as GOP length. This determines the maximum distance between I-frames. Very high GOP lengths will result in slightly more efficient compression, but will make seeking in the video somewhat more difficult. Recommended default: 250 | |
| • --min-keyint <integer> (x264) | |
| • -keyint_min <integer> (FFmpeg) | |
| • Minimum GOP length, the minimum distance between I-frames. Recommended default: 25 | |
| • --scenecut <integer> (x264) |
| var BASE64_MARKER = ';base64,'; | |
| function convertDataURIToBinary(dataURI) { | |
| var base64Index = dataURI.indexOf(BASE64_MARKER) + BASE64_MARKER.length; | |
| var base64 = dataURI.substring(base64Index); | |
| var raw = window.atob(base64); | |
| var rawLength = raw.length; | |
| var array = new Uint8Array(new ArrayBuffer(rawLength)); | |
| for(i = 0; i < rawLength; i++) { |
| #! /usr/bin/python2 | |
| import gtk.gdk | |
| w = gtk.gdk.window_foreign_new( gtk.gdk.get_default_root_window().property_get("_NET_ACTIVE_WINDOW")[2][0] ) | |
| w.set_decorations( (w.get_decorations()+1)%2 ) # toggle between 0 and 1 | |
| gtk.gdk.window_process_all_updates() | |
| gtk.gdk.flush() | |
| # now bind this to super-r or something |
| #!/bin/bash | |
| ADB="/home/mrenouf/bin/adb" | |
| # We need root on the host to mess with networking | |
| if [[ $(whoami) != "root" ]]; then | |
| echo "You must be root to run this script!" | |
| exit 1 | |
| fi; |
I use Namecheap.com as a registrar, and they resale SSL Certs from a number of other companies, including Comodo.
These are the steps I went through to set up an SSL cert.
| See my DASH-IF presentation from October, 2014: | |
| https://s3.amazonaws.com/misc.meltymedia/dash-if-reveal/index.html#/ | |
| 1. encode multiple bitrates with keyframe alignment: | |
| ffmpeg -i ~/Movies/5D2_Portrait.MOV -s 1280x720 -c:v libx264 -b:v 1450k -bf 2 \ | |
| -g 90 -sc_threshold 0 -c:a aac -strict experimental -b:a 96k -ar 32000 out.mp4 | |
| My input was 30 fps = 3000 ms. If it were 29.97, then a GOP size of 90 frames will yield a base segment | |
| size of 3003 milliseconds. You can make the segment size some multiple of this, e.g.: 6006, 9009, 12012. |
| user web; | |
| # One worker process per CPU core. | |
| worker_processes 8; | |
| # Also set | |
| # /etc/security/limits.conf | |
| # web soft nofile 65535 | |
| # web hard nofile 65535 | |
| # /etc/default/nginx |
| # Vncserver service file for Debian or Ubuntu with systemd | |
| # | |
| # Install vncserver and tools | |
| # e.g. apt-get install tightvncserver autocutsel gksu | |
| # | |
| # 1. Copy this file to /etc/systemd/system/vncserver@:1.service | |
| # 2. Edit User= | |
| # e.g "User=paul" | |
| # 3. Edit the vncserver parameters appropriately in the ExecStart= line! | |
| # e.g. the -localhost option only allows connections from localhost (or via ssh tunnels) |
| var ctx = null, usingWebAudio = true; | |
| try { | |
| if (typeof AudioContext !== 'undefined') { | |
| ctx = new AudioContext(); | |
| } else if (typeof webkitAudioContext !== 'undefined') { | |
| ctx = new webkitAudioContext(); | |
| } else { | |
| usingWebAudio = false; | |
| } |
Streaming your Linux desktop to Youtube and Twitch via Nvidia's NVENC and VAAPI:
Considerations to take when live streaming:
The following best practice observations apply when using a hardware-based encoder for live streaming to any platform:
Set the buffer size (-bufsize:v) equal to the target bitrate (-b:v). You want to ensure that you're encoding in CBR mode.
Set up the encoders as shown: