|
|
|
|
|
by shellkr
2708 days ago
|
|
I have the below for cases when I have to make a quick screencast. It needs ffmpeg and I am not sure how well the yt flag works as I don't really use Youtube any longer. Anyway.. first I do 'ffsc sc' and if I want that video to be smaller I do 'ffsc yt <path_to_file>'. ## Make screencast or convert to yt ffsc () { vid_name="$HOME/Videos/Screencasts/screencast_$(date +'%y%m%d-%H%M%S')" case $1 in
sc) ffmpeg -f x11grab -s 1920x1080 -i $DISPLAY -r 30 -f alsa -i default -preset ultrafast \
-c:v ffvhuff -c:a flac ${vid_name}.mkv
printf "${vid_name}.mkv" | xsel -i
echo
echo "- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -"
echo "Output file name: ${vid_name}.mkv"
echo "- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -"
echo
[ -e /tmp/ffsc.tmp ] && { rm /tmp/ffsc.tmp }
printf "${vid_name}.mkv" > /tmp/ffsc.tmp
;;
yt) ffmpeg -i $2 -c:v libx264 -crf 18 -preset slow -pix_fmt rgb24 -c:a copy ${2/scr/yt_scr}
yt_name=$(cat /tmp/ffsc.tmp)
printf "${yt_name/scr/yt_scr}" | xsel -i
echo
echo "- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -"
echo "Output file name: ${yt_name/scr/yt_scr}"
echo "- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -"
echo
;;
mini) ffmpeg -i $2 -strict -2 -s 1680x1050 -r 60 -c:v libx264 -b:v 164 -crf 22 -preset slow \
-pix_fmt yuv420p -c:a copy -an ${2/scr/mini_scr}
mini_name=${2/scr/mini_scr}
ffmpeg -i ${mini_name} -filter:v "setpts=0.5*PTS" -an ${mini_name/.mkv/.mp4}
rm ${mini_name}
printf "${mini_name/.mkv/.mp4}" | xsel -i
echo
echo "- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -"
echo "Output file name: ${mini_name/.mkv/.mp4}"
echo "- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -"
echo
;;
esac
}And another nice one I didn't see here.. # Python as a calculator pc() { python -c "print($*)"; } |
|