どうもこんにちは。
趣味で録画サーバー作ったりエンコードしたりしていたら、それが上司にバレて本職でも動画の配信基盤を作るようになり、気がついたら配信基盤のプロダクトオーナーになっていたyanoshiです。
突然寒くなりましたね。
冬といえばエンコードが捗る季節!エンコードしまくって部屋を温めよう!!!!!
とはいえ近頃はパブリッククラウド全盛期。一時的なコンピューティングリソースであればコスパ良くボタンポチで用意できる時代です。
突然AV1のエンコードをしてみたくなったのですが、手元にある環境はクソ非力で、流石にAV1の劇遅エンコードを耐えられる環境ではありません。
ならばAWS上でエンコードしようと思ったのですが、環境構築がめんどくさい…
あーーボタンポチで追加コストも無く各種エンコーダーがビルド済みで設置できるソリューションがあれば良いのになぁー
使い方
詳しくはREADME.mdを読んでね!って感じなんだけど、ちらっとだけ説明を書いておきます。
AWS上への展開はVagrantとVagrant 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
注意点
活用例
最後に
みんなも使ってね!あと何か気になることがあればプルリクどうぞ。