さわっても熱くない花火

ちょっとした驚きを食べながら生きています

急にクラウドリソースを使って高品質エンコードをしたくなった時のためにVagrantfileを作った

どうもこんにちは。
趣味で録画サーバー作ったりエンコードしたりしていたら、それが上司にバレて本職でも動画の配信基盤を作るようになり、気がついたら配信基盤のプロダクトオーナーになっていたyanoshiです。


突然寒くなりましたね。
冬といえばエンコードが捗る季節!エンコードしまくって部屋を温めよう!!!!!


とはいえ近頃はパブリッククラウド全盛期。一時的なコンピューティングリソースであればコスパ良くボタンポチで用意できる時代です。

突然AV1のエンコードをしてみたくなったのですが、手元にある環境はクソ非力で、流石にAV1の劇遅エンコードを耐えられる環境ではありません。
ならばAWS上でエンコードしようと思ったのですが、環境構築がめんどくさい…

あーーボタンポチで追加コストも無く各種エンコーダーがビルド済みで設置できるソリューションがあれば良いのになぁー

ということで作った

AV1をエンコードしたいなーと思っていたので、とりあえずAV1がエンコードできる子たちを作ってみました!
github.com
github.com


使い方

詳しくはREADME.mdを読んでね!って感じなんだけど、ちらっとだけ説明を書いておきます。

AWS上への展開はVagrantVagrant Pluginであるvagrant-awsを利用して行っています。
初期設定ではオレゴンリージョン(us-west-2)にc4.8xlargeインスタンス(1.591USD/時間)を展開します。

予め下記の5つをAWSコンソール上で設定及び取得しておいてください。

  • アクセスキー
  • シークレットアクセスキー
  • EC2用のキーペア
  • 上記キーペアに対応するプライベートキーファイル
  • オレゴンリージョン上に存在するデフォルトVPCとデフォルトセキュリティグループの設定でSSH(22番ポート)が疎通するようにしておく

デフォルトVPCとデフォルトセキュリティグループについては、存在しなければ自動的に作成されます。が、初期で作られる子はSSHが疎通しないのでよしなに設定変更してください(その場合一番最初のvagrant upは中途半端に失敗しちゃうかも)


あとは上記設定に従って .env ファイルを記載し…

echo EOF > .env
# EC2 Auth Config
EC2_ACCESS_KEY_ID="アクセスキー"
EC2_SECRET_ACCESS_KEY="シークレットアクセスキー"
EC2_KEYPAIR="キーペア名"
SSH_KEY_PATH="キーペアに対応するpemファイルのパス"

# VM Config(下記は変更不要)
EC2_REGION="us-west-2" # US West Oregon
EC2_INSTANCE_TYPE="c4.8xlarge"
EC2_AMI="ami-01ed306a12b7d1c96" # CentOS 7
EC2_USERNAME="centos"
EOF


起動するだけ!

vagrant up

込み入った使い方

vagrant sshすれば色々とできるわけですが「さっと上げてエンコード終えたらすぐインスタンス削除したい!」って場合は下記みたいコマンドを叩きましょう。
(予めsync_folderに動画ファイルを設置しておく必要があります)

vagrant up \
&& vagrant ssh -- -t \
'ffmpeg \\
  -i /sync_folder/test_input.mp4 \\
  -c:v libaom-av1 \\
  -strict experimental \\
  -row-mt 1 \\
  -cpu-used 1 \\
  -crf 30 \\
  -b:v 2000k \\
  -c:a libopus \\
  -ac 2 \\
  -ar 48000 \\
  -b:a 128k \\
  /sync_folder/test_output.mp4' \
&& vagrant rsync-back \
&& vagrant destroy -f

注意点

EBSについて

vagrant-awsの仕様でvagrant destroyしてもEBSは残っちゃいます。EBSのお掃除はAWSコンソールでどうぞ。

プロビジョニングにかかる時間

時は金なり。
ffmpegの方で20分程かかりました。

なのでPackerとかでAMIに固めるほうが本当は良いのかもしれませんね。それはまた後日必要に迫られたら以下略

活用例

qiita.com

最後に

みんなも使ってね!あと何か気になることがあればプルリクどうぞ。