Skip to content

Instantly share code, notes, and snippets.

@kilork
Created January 4, 2018 08:31
Show Gist options
  • Select an option

  • Save kilork/2572440206e34460c2780ce6e36d8697 to your computer and use it in GitHub Desktop.

Select an option

Save kilork/2572440206e34460c2780ce6e36d8697 to your computer and use it in GitHub Desktop.
DEVICE=${DEVICE:-video0}
WATERMARK=`date +%s`
CAPTURE_FILE=${WATERMARK}_screencast.mp4
CAPTURE_FILE_CAM=${WATERMARK}_capture_${DEVICE}_tmp.mp4
CAPTURE_FILE_SCREENGRAB=${WATERMARK}_screencast_tmp.mp4
echo Start capture $WATERMARK with cam $CAPTURE_FILE_CAM and screengrab $CAPTURE_FILE_SCREENGRAB
DEVICE=$DEVICE ./capture_cam.sh $WATERMARK $CAPTURE_FILE_CAM &> /dev/null &
ID_CAM=$!
./capture_screen.sh $WATERMARK $CAPTURE_FILE_SCREENGRAB &> /dev/null &
ID_SCREEN=$!
echo "Press 'Enter' to finish capture..."
read
echo "Signaling child capture processes to finish..."
pkill -P $ID_CAM
pkill -P $ID_SCREEN
echo "Signaled. Waiting for child processes to finish converting..."
wait
echo "Finished. Creating picture in picture version from two inputs..."
#ffmpeg -i sample-video1.mp4 -i sample-video2.mp4 -filter_complex “[1]scale=iw/4:ih/4 [pip]; [0][pip] overlay=main_w-overlay_w-10:main_h-overlay_h-10″ -ar 44100 -f flv rtmp://localhost:1935/live/myOutStream
#ffmpeg -i $CAPTURE_FILE_SCREENGRAB -i $CAPTURE_FILE_CAM -filter_complex "[1]scale=iw/4:ih/4 [pip]; [0][pip] overlay=main_w-overlay_w-10:main_h-overlay_h-10" -c:v libx264rgb -crf 10 -preset:v ultrafast $CAPTURE_FILE
ffmpeg -y -i $CAPTURE_FILE_SCREENGRAB -i $CAPTURE_FILE_CAM -filter_complex "[0][1] overlay=main_w-overlay_w-10:main_h-overlay_h-10" -c:v libx264rgb -crf 10 -preset:v ultrafast -r 25 $CAPTURE_FILE
echo "Done, enjoy!"
echo mplayer $CAPTURE_FILE
DEVICE=${DEVICE:-video0}
WATERMARK=${1:-`date +%s`}
FILE_NAME=${WATERMARK}_capture_$DEVICE
FILE_NAME_TMP=${FILE_NAME}.mkv
FILE_NAME_OUT=${2:-${FILE_NAME}.mp4}
ffmpeg -f v4l2 -framerate 25 -video_size 640x360 -i /dev/$DEVICE $FILE_NAME_TMP
ffmpeg -i $FILE_NAME_TMP -vcodec libx264 -qscale 0 -r 25 $FILE_NAME_OUT && rm $FILE_NAME_TMP
WATERMARK=${1:-`date +%s`}
FILE_NAME=${WATERMARK}_screencast
FILE_NAME_OUT=${2-:${FILE_NAME}.mp4}
#ffmpeg -f x11grab -y -r 25 -s 2560x1440 -i :0.0 -vcodec huffyuv $FILE_NAME.avi
#ffmpeg -i $FILE_NAME.avi -vcodec libx264 -qscale 0 $FILE_NAME.mp4
#ffmpeg -f x11grab -r 25 -s 2560x1440 -i :0.0 -vcodec libx264 $FILE_NAME.mp4
ffmpeg -y -r 25 -f x11grab -s 2560x1440 -i :0.0 -c:v libx264rgb -crf 10 -preset:v ultrafast $FILE_NAME_OUT
# From here: https://panthema.net/2014/0630-Frame-Perfect-Linux-Screencasts-in-the-Year-2014.html
#ffmpeg -y -f alsa -i default -r 30 -f x11grab -s 1920x1080 -i ${DISPLAY} -c:v libx264rgb -crf 0 -preset:v ultrafast -c:a pcm_s16le -af aresample=async=1:first_pts=0 out.mkv
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment