基礎統計学の準備
そろそろ4月です。また講義のシーズンがやってきます。
29年度の基礎統計学では、動画もとりいれて、RStudioの使い方を説明したいと思っています。そのため、パソコン上の画面 (ブラウザのウィンドウ)を録画しながら、マイクからの音声も録音しなければならない。最初は既存のソフトを使おうと思っていたが、やりたかったことができない。何よやりたかったのかんというと、
29年度の基礎統計学では、動画もとりいれて、RStudioの使い方を説明したいと思っています。そのため、パソコン上の画面 (ブラウザのウィンドウ)を録画しながら、マイクからの音声も録音しなければならない。最初は既存のソフトを使おうと思っていたが、やりたかったことができない。何よやりたかったのかんというと、
- ブラウザのサイズを1280x720に固定する
- ffmpeg を使って、選んだウィンドウを録画する
- マイクからの音声を同時に録音する。
- マイクの音声をヘッドフォンを使ってミニたリングする。
#!/bin/bash # This script is used to resize and select a window for recording. # It will also setup the mic so that you can monitor the output # with headphones. I am running this on Debian Wheezy # 2017-03-16 if [ -n "$1" ]; then OUTFILE="initial_$1.mkv" OUTFILE2="final_$1.mkv" else TIME=$(date +%d-%b-%y_%H%M-%Z) OUTFILE="initial_recording_$TIME.mkv" OUTFILE2="final_recording_$TIME.mkv" fi FPS=30 MAX_WIDTH=1920 MAX_HEIGHT=1080 MIC_DEV='AT2020USB' # This is the name of the mic echo "Choose the window to resize. It will resize to 1280x720" # This command is used to choose the size of the window. wmctrl -r :SELECT: -e 0,-1,-1,1280,720 echo "Choose the window to record." # This command is used to select the window to record. INFO=$(xwininfo) WIN_GEOM=$(echo $INFO | grep -oEe 'geometry [0-9]+x[0-9]+' | \ grep -oEe '[0-9]+x[0-9]+') WIN_XY=$(echo $INFO | grep -oEe 'Corners:\s+\+[0-9]+\+[0-9]+' | \ grep -oEe '[0-9]+\+[0-9]+' | sed -e 's/\+/,/' ) # Set up the mic monitor with pactl. ID=$(pactl load-module module-loopback) # Run ffmpeg twice. The first time will save the x11 output to a # lossless uncompressed file. The second time, it will compress # the file in a lossless format. ffmpeg -thread_queue_size 512 -f pulse -ac 2 -i default \ -video_size $WIN_GEOM -framerate $FPS -f x11grab \ -i :0.0+$WIN_XY -vcodec libx264 -crf 0 \ -preset ultrafast -acodec pcm_s16le -framerate $FPS $OUTFILE -y ffmpeg -i $OUTFILE \ -vf scale="iw*sar*min($MAX_WIDTH/(iw*sar)\,$MAX_HEIGHT/ih):\ ih*min($MAX_WIDTH/(iw*sar)\,$MAX_HEIGHT/ih),pad=$MAX_WIDTH:\ $MAX_HEIGHT:(ow-iw)/2:(oh-ih)/2" -vcodec libx264 -qp 0 \ -preset veryslow -acodec copy $OUTFILE2 -y # wait a few seconds before unloading the loopback module. sleep 5 pactl unload-module $ID # Remove the initial mkv file made by the first instance of ffmpeg. rm $OUTFILE
コメント