Edited at

flvファイルをS3へアーカイブ


はじめに

streampackのメンバーになって2ヶ月目のrisakoです。

今回の記事は、理解に苦しんだ仕組みの一つである「S3へのアーカイブ」をテーマにしました!

これから、S3で動画配信をしてみたいと思っている方のヒントになれば幸いです。


S3とは?

S3 はSimple Storage Service の略称のことをいう。

クラウド型オブジェクトストレージサービスで、東京リージョン・スタンダードストレージの場合、1GBあたり0.025ドルで利用できる。

公式には99.999999999%の耐久性で、安さと高可用性を兼ね備えている。


イメージ

今回は、点線で囲まれている部分について説明します。

s3.jpeg

出典:https://qiita.com/khagi/items/1e88f21b027b115a4ac7


nginx.confの編集

flvファイルを作成できるようにnginx.conf内に追記する。

下記の設定をすることで、flvファイルを作成できるようになる。

                application live {

live on;
record all;
record_path /var/video_recordings_flv;
               record_unique on;
}

今回の設定では

record all オーディオ、ビデオ共に全てをレコードする

record_path flvファイルの場所を指定する。今回は、/var/video_recordings_flvにflvファイルが保存されるように指定。

record_unique on常に新しい状態のファイルに更新される設定。デフォルトではoffになっている。


確認

OBSで配信した動画ファイルが指定した場所に作成できているか確認する。

#ls -l /var/video_recordings_flv/

total 6144
-rw-r--r-- 1 nobody nobody 6289402 Jul 17 19:09 test-1563416738.flv

作成できているので、このファイルをS3にアップロードする。


S3へのアップロード

AWS CLI でアップロードを行う。

事前準備として、#aws configure でアクセスキー・シークレットキー・リージョン名・出力形式を入力する。この作業をしていないと、Unable to locate credentials. You can configure credentials by running "aws configure".このようなエラーで怒られてしまうので注意。


確認

OBSで配信し、指定の場所に作成できているflvファイルをaws s3コマンドでアップロードしてみる。

作成されているflvファイルがtest-1563416738.flvなので、まずは、これをアップロードしてみる。

#aws s3 cp test-1563416738.flv s3://<S3バケット名>/

【S3上でアップロードがされているか確認する】

スクリーンショット 2019-07-18 12.06.59.png


incrontabを使ってアップロードする

作業
コマンド

インストール
yum --enablerepo=epel install incron

起動
/etc/init.d/incrond start

停止
/etc/init.d/incrond stop


スクリプト作成

スクリプトに書き込むための権限変更を行います。

#chmod 755 aws_test.sh

#ls -l
total 4
-rwxr-xr-x 1 root root 0 Jul 18 14:54 aws_test.sh

   

作成したスクリプト内を変更。


#!/bin/bash

aws s3 sync /var/video_recordings_flv s3://<S3バケット名>/

反映させます。

#aws_test.sh


incrontab設定

#incrontab -e

/var/video_recordings_flv IN_MOVED_TO,IN_CREATE,IN_CLOSE_WRITE,IN_NO_LOOP /root/bin/aws_test.sh

#incrontab -d

#incrontab -l
/var/video_recordings_flv IN_CREATE,IN_CLOSE_WRITE,IN_MOVED_TO,IN_NO_LOOP /root/bin/aws_test.sh


OBSで配信・確認

#tail -f /var/log/cron 

Jul 18 17:17:23 ip-10-15-0-165 incrond[4135]: (root) CMD (/root/bin/aws_test.sh)

#ls /var/video_recordings_flv/
test-1563358109.flv test-1563419519.flv test-1563433417.flv test-1563437843.flv


S3上での確認

スクリーンショット 2019-07-18 17.20.33.png

/var/video_recording_flv/ の配下に作成されているflvファイル名と、S3上にアップロードされているファイル名が一致していることから、正しくアップロードできていることが確認できます。


最後に

S3へのアーカイブは手順さえ理解してしまえば、簡単にアーカイブできるということがわかりました。

これからS3を駆使してstreampackのメンバーとして頑張っていきます!


参考

「HLSライブストリーミングサーバーs3配信」

https://qiita.com/khagi/items/1e88f21b027b115a4ac7

「AWS CLIでS3を操作するコマンド一覧」

https://qiita.com/uhooi/items/48ef6ef2b34162988295