2018年8月27日月曜日

ffmpegで指定秒数だけキャプチャを撮る+α

調べてもドバーンと出てこなかったのでメモ。
ffmpegで画面を録画する時に「あらかじめ何秒録画するかを決めて自動で録画終了してもらう」感じのやつです。
画面操作チュートリアル用の画像とかワンドロの録画とかに使えるかもしれない。

やるぞ

レートやキャプチャサイズ、拡張子などなどは適宜変更してください。

10秒録画

(sleep 10; ps ax | grep ffmpeg | cut -c 1-6 | xargs kill) & ffmpeg -y -f x11grab -video_size 1920x1080 -i :0.0+0,0 -framerate 20 test.mp4

ffmpegをバックグラウンドでやると録画準備だけ入って始まらなかったので、とりあえずこういう形になりました……。
秒数変更したい場合はsleepの秒数を変更します(微妙な遅れがあるので正確に10秒録画とはいかないかもしれない)

3秒後に通知音を鳴らしつつ開始して10秒録画

↑のやつの手前にsleep 3と再生コマンドを挟んだだけです。 
sleep 3; ogg123 /usr/share/sounds/freedesktop/stereo/complete.oga & (sleep 10; ps ax | grep ffmpeg | cut -c 1-5 | xargs kill) & ffmpeg -y -f x11grab -video_size 1920x1080 -i :0.0+0,0 -framerate 20 test.mp4

おまけ

もうちょっと便利にしますよ。

秒数をその都度指定できるようにする

read rectime ; (sleep $rectime; ps ax | grep ffmpeg | cut -c 1-6 | xargs kill) & ffmpeg -y -f x11grab -video_size 1920x1080 -i :0.0+0,0 -framerate 20 test.mp4

ファイル名を事前に指定して10秒録画

echo "Filename: "; read filename; (sleep 10; ps ax | grep ffmpeg | cut -c 1-5 | xargs kill) & ffmpeg -y -f x11grab -video_size 1920x1080 -i :0.0+0,0 -framerate 20 $filename.mp4

日付をファイル名にする

dateコマンドで取得して変数にします。
↑のechoとreadを撤廃して filename=`date "+%F"`; に変更。

日付をファイル名にした後、3秒後にビープ音を鳴らしながら開始して10秒録画したものを投稿用GIF(横600px)へ変換

filename=`date "+%F"` ; sleep 3; (sleep 10; ps ax | grep ffmpeg | cut -c 1-5 | xargs kill) & ogg123 /usr/share/sounds/freedesktop/stereo/complete.oga & ffmpeg -y -f x11grab -video_size 1920x1080 -i :0.0+0,0 -framerate 20 $filename.mp4 ; ffmpeg -i $filename.mp4 -vf scale=600:-1 -r 10 $filename.gif

参考

date コマンド

コマンドラインで音声再生:aplay/mpg321/ogg123

ffmpegを使ってCLIからスクリーンキャストを撮影する (Ubuntu) https://qiita.com/ma2shita/items/cf37f252452d9bd6e7ec

FFmpegで動画をGIFに変換

0 件のコメント:

コメントを投稿