anonymous / GUIDE
Created

Embed URL

HTTPS clone URL

SSH clone URL

You can clone with HTTPS or SSH.

Download Gist

I found it hard to figure out how to stream to twitch.tv like i wanted to.. Here is a couple files with a guide on how to stream in linux. to start:: ./streamStart.sh & to stop:: ./streamStop.sh

View GUIDE
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78
############################# GUIDE #############################
#
#===== install required modules =====
#sudo apt-get install libavcodec-extra-53
#sudo apt-get install libav-tools
#sudo apt-get install pavucontrol
 
#===== set to duplex =====
#pavucontrol
##Go to Configuration tab, set to Analog Stereo Duplex
 
#===== set your twitch key =====
##Create a file ".twitch_key" in your home folder, paste your key from twitch.tv/broadcast
 
#===== fill parameteres =====
##Set INRES to area it will record on your screen (your LoL resolution)
##Set OUTRES to the resolution you want on your twitch stream (1280x720 is 720p)
##Set QUAL medium, fast, superfast (superfast for slow pc’s, medium for fast pc)
##go to http://obsproject.com/estimator
## Set FPS to recommend FPS
## Set BITRATE to recommended bitrate
## Set BUFSIZE to recommended buffer size
##Set AUDIODEVICE
#pactl list | grep -A2 'Source #' | grep 'Name: ' | cut -d" " -f2
# use the name of one with .monitor
#LOGLEVEL quiet OR info is for if you want to fill up your terminal with the log every second or not.
 
#===== Set position how you like it =====
#The program will record on the top left corner $INRES pixels of your screen...
#I record only part of my screen, so i need to set an offset to which part i want to record...
#
#Example positions:
#records full screen
#(stream0, -i :0.0+0,0)
#
#records top left, excludes the panel bar:
#(stream0, -i :0.0+0,24)
#
#records bottom left corner.. yoffset = screen resolution Y - inres resolution Y (1200 - 720):
#(stream0, -i :0.0+0,480)
#
#records top right corner.. xoffset = screen resolution x - inres resolution Y (1900-1280):
#(stream0, -i :0.0+620,0)
 
############################# EXTRA SOURCES #############################
#===== Add image overlay (for adverts / stream info) =====
#
# Easiest way = Make an image in gimp with transparent background same size as your OUTRES
#
# change below line streamoverlay.png to whatever file name.ext your file is(gif if you want animated)
# add below line before the last -f line(take off the # before it)::
# -vf "movie=streamoverlay.png [wm];[in][wm] overlay=0:0 [out] \
 
#===== Add webcam overlay (so people can see you being a dumbass) =====
#
#NOT TESTED
#add below line
#
#-vf "movie=/dev/video0:f=video4linux2, scale=240:-1, fps, setpts=PTS-STARTPTS [movie]; [in][movie] overlay=main_w-overlay_w-2:main_h-overlay_h-2 [out]"
#
#First we set a name for the input to be used, in this case "movie". This is just a name, and you can choose whatever you want. The name is then defined with an input, in our case the webcam.
#Next option is used to scale the input down to a certain size. I use -1 to keep the original aspect ratio of the input, and set the width to 240 pixels.
#the option fps to force a constant bitrate. I did this because I had issued with the webcam lagging behind the desktop causing it to be out of sync. It might not be necessary, but I have it there to be safe.
#The last option is used to set the presentation timestamp on the input, starting with 0.
#setpts=PTS-STARTPTS
#This concludes the input options, and we close it of with [movie]; followed by [in][movie]
#Here we place the actual overlay settings.
#overlay=main_w-overlay_w-2:main_h-overlay_h-2 [out]"
#This places the input as an overlay 2 pixels from the bottom right, and 2 pixels from bottom. We close it off with [out]
 
 
 
############################# REFERENCES #############################
# avconv documentation : http://libav.org/avconv.html
# Where i got the idea : https://gist.github.com/brodul/3178130
# pulse audio names : http://www.oz9aec.net/index.php/gstreamer/365-pulseaudio-device-names
# image overlay : http://www.youtube.com/watch?v=89uH9r2BSMs
# webcam overlay : http://www.howtoforge.com/streaming-your-desktop-with-audio-and-webcam-overlay-in-a-browser-using-ffmpeg-crtmpserver-and-flowplayer
View GUIDE
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27
#by twitch.tv/LOL1010101110 reddit.com/u/1010101110
#running on linux mint 15 (should work on ubuntu)
#
 
#parameters
INRES="1280x720" # input resolution
OUTRES="1280x720" # Output resolution
FPS="30" # target FPS
QUAL="fast" # Quality preset
BITRATE="1000k"
BUFSIZE="1000k"
AUDIODEVICE="alsa_output.pci-0000_00_1b.0.analog-stereo.monitor"
LOGLELVEL="quiet"
STREAM_KEY=$(cat ~/.twitch_key)
 
#functions
pactl load-module module-loopback
 
echo "stream starting..."
 
avconv \
-f x11grab -s $INRES -r "$FPS" -i :0.0+0,24 \
-f pulse -i $AUDIODEVICE \
-vcodec libx264 -s $OUTRES -preset $QUAL \
-acodec libmp3lame -ar 44100 -threads 6 -qscale 3 -b 1200k -bufsize 1200k \
-f flv "rtmp://live.justin.tv/app/$STREAM_KEY" \
-loglevel $LOGLELVEL
View GUIDE
1 2 3 4 5 6 7 8 9 10 11
#by twitch.tv/LOL1010101110 reddit.com/u/1010101110
#running on linux mint 15 (should work on ubuntu)
#
#to run:
#./streamStop.sh
 
pactl unload-module module-loopback
 
killall avconv
 
echo "stream stopped"
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Something went wrong with that request. Please try again.