X-Git-Url: https://git.slaskete.net/einar-bin/blobdiff_plain/8fe179bf10755f62d84787333724c4f7272885b6..61690daa9b77c717dc82f26c81696449140ebded:/screencast.sh diff --git a/screencast.sh b/screencast.sh index a207dde..7a06a8c 100755 --- a/screencast.sh +++ b/screencast.sh @@ -11,8 +11,8 @@ # 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 @@ -112,22 +112,28 @@ BITRATE=$(echo "${WIDTH} * ${HEIGHT} * 0.0075" | bc | cut -d "." -f 1 ) # 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}"