# and microphone in separate audio streams.
#
# You also get to choose to record from the whole screen or just a specified
-# window. It has been tested on Fedora 18 and CrunchBang Waldorf (and thus
-# should work on Debian Wheezy as well).
+# window. It has been tested on Fedora 18, Ubuntu 13.04 and CrunchBang Waldorf
+# (and thus should work on Debian Wheezy as well).
#
# It dumps the recording in your $HOME directory with a filename like
# screencast-YYYY-MM-DD-HH-MM-SS.mp4
# Set file name.
FILENAME="screencast-$(date +%F-%H-%M-%S).mp4"
+# Determine if we have ffenc_aac or avenc_aac available
+AACENC="ffenc_aac"
+if gst-inspect-1.0 --exists avenc_aac; then
+ AACENC="avenc_aac"
+fi
+
# Enable inputs as suitable
if [ ${PLAYMON} != "none" ]; then
MONITORARG="pulsesrc device=${PLAYMON} slave-method=0 provide-clock=false \
- ! audiorate ! audioconvert ! ffenc_aac bitrate=256000 ! queue2 ! mux."
+ ! audiorate ! audioconvert ! ${AACENC} bitrate=256000 ! queue2 ! mux."
fi
if [ ${MIC} != "none" ]; then
MICARG="pulsesrc device=${MIC} slave-method=0 provide-clock=false \
- ! audiorate ! audioconvert ! ffenc_aac bitrate=256000 ! queue2 ! mux."
+ ! audiorate ! audioconvert ! ${AACENC} bitrate=256000 ! queue2 ! mux."
fi
# Launch gstreamer
-gst-launch -q -e ximagesrc xid="${WID}" do-timestamp=1 use-damage=0 \
- ! video/x-raw-rgb,framerate=30/1 ! ffmpegcolorspace ! videoscale method=0 \
- ! video/x-raw-yuv,width=${WIDTH},height=${HEIGHT} \
+gst-launch-1.0 -q -e ximagesrc xid="${WID}" do-timestamp=1 use-damage=0 \
+ ! video/x-raw,framerate=30/1 ! videoscale method=0 \
+ ! video/x-raw,width=${WIDTH},height=${HEIGHT} ! videoconvert \
! x264enc speed-preset=veryfast bitrate=${BITRATE} ! queue2 \
! mp4mux name="mux" \
- ! filesink location="${HOME}/${FILENAME}" $MONITORARG $MICARG
+ ! filesink location="${HOME}/${FILENAME}" ${MONITORARG} ${MICARG}
echo "Recording done, file is ${FILENAME}"