Video recording process - easysoa/EasySOA GitHub Wiki
Recording process used for videos (on a Linux environment)
- Record desktop with recordMyDesktop
-
ffmpeg out.ogv out.avito get a video in a more reusable format (or, better, with custom script here) - Edit with software of choice (ex: OpenShot Video Editor)
- Export to a good quality video (got good results with little configuration with high-quality WMV exports)
- FLV conversion with customized BinKit script (see below)
#!/bin/bash
IFS=$'\t\n'
# Copyright 2010 by RodrigoPolo.com
# This program is free software; you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
# the Free Software Foundation; either version 2 of the License, or
# (at your option) any later version.
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU General Public License for more details.
# You should have received a copy of the GNU General Public License
# along with this program; if not, write to the Free Software
# Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
# Video Size - Dimensions divisible by 16
# Use 848x480 for widescreen video and 640x480 for standard 4:3 video
SIZE=800x600
# Image Aspect Ratio
# use 16:9 for widescreen video and 4:3 for standar video
ASPECT=4:3
# Frame Rate - for 29.97 use 30000/1001 and for 23.976 use 24000/1001
FRAME_RATE=15
# Keyframe every # frames, recomended use the same frame rate value but as an integer
KEYFRAME=24
# Bitrate in kilobites per second, NOT kilobytes, 1 kilobyte = 8 kilobits
BITRATE=1600
# Max bit rate
MAXRATE=2500
# Audio channels, use 1 for mono and 2 for stereo
AUDIO_CHANNELS=0
# Audio rate, Flash can handle up to 44100
AUDIO_RATE=44100
# Audio bitrate in kilobites
AUDIO_BITRATE=128
# ----------------------------------------------------------------------------
# WARNING!
# DONT TOUCH OR CHANGE NOTHING BELOW THIS LINE!
# ----------------------------------------------------------------------------
if [ -z "$1" ]
then
echo
echo ERROR!
echo No input file specified.
echo You can an input by draggin a video file to this script or by calling
echo the script on the command prompt and setting the full file path as
echo the first param.
echo
sleep 5
else
# Input File:
INPUT=$1
# File paths
I_PATH=${1%/*}
I_FILE=${1##*/}
BASE=${I_FILE%%.*}
EXT=${I_FILE#*.}
# Output
OUTPUT_FILE_NAME_NOT_INJECTED=$I_PATH/$BASE.480pni.flv
OUTPUT_FILE_NAME_INJECTED=$I_PATH/$BASE.480p.flv
# Buffer size
let BUFSIZE=$MAXRATE*2
# Batch path
THIS_PATH=${0%/*}/..
# Bin path
BIN_PATH=$THIS_PATH/bin
# FFmpeg command
echo First Pass Encoding.
$BIN_PATH/ffmpeg -y -i $INPUT -threads 0 -s $SIZE -aspect $ASPECT -r $FRAME_RATE -b "$BITRATE"k -maxrate "$MAXRATE"k -bufsize "$BUFSIZE"k -vcodec libx264 -g $KEYFRAME -pass 1 -vpre $BIN_PATH/fastfirstpass.ffpreset -an -f rawvideo /dev/null
echo Second Pass Encoding.
$BIN_PATH/ffmpeg -y -i $INPUT -threads 0 -s $SIZE -aspect $ASPECT -r $FRAME_RATE -b "$BITRATE"k -maxrate "$MAXRATE"k -bufsize "$BUFSIZE"k -vcodec libx264 -g $KEYFRAME -pass 2 -vpre $BIN_PATH/hq.ffpreset -an $OUTPUT_FILE_NAME_NOT_INJECTED
# Remove the logs
echo Removing pass logs.
rm ffmpeg2pass-0.log
rm x264_2pass.log
# inject the FLV video with metadata
echo Injecting metadata
$BIN_PATH/flvmeta $OUTPUT_FILE_NAME_NOT_INJECTED $OUTPUT_FILE_NAME_INJECTED && rm $OUTPUT_FILE_NAME_NOT_INJECTED
echo Creation of $OUTPUT_FILE_NAME_INJECTED Done!
fi