ClipHype
ローカルでの開発環境構築手順
本番環境と近づけるためにDockerを使う。
- Dockerイメージのビルド
Dockerfileの場所を指定して、そのDockerfileをもとにイメージをビルドする
$ docker build -t cliphype:1.0 .
- Dockerコンテナ起動
docker run -it -p 8000:8000 -v <directory_path>:/root/cliphype --name cliphype cliphype:1.0
ここで、コンテナ起動時に自動的にdocker_start.sh
が実行され、諸々設定される
- 開発サーバの起動
$ python3 manage.py runserver 0.0.0.0:8000
Concat-clips インスタンスの構築
必要なパッケージのインストール
$ sudo apt update
$ sudo apt install -y ffmpeg curl build-essential python3 python3-dev python python-dev libx11-dev libxext-dev libxext6 xvfb libxi-dev libglew2.1 libglew-dev pkg-config
$ sudo apt install -y mysql-server mysql-client
$ sudo apt install -y nodejs npm
$ curl https://sh.rustup.rs -sSf | sh
ffmpeg-concatのインストール
$ sudo chmod 777 /usr/local/lib
$ sudo chmod 777 /usr/local/bin
$ npm install -g ffmpeg-concat
concat-clips.rsのビルド
$ git clone https://github.com/halmk/ClipHype.git
$ cd ClipHype/aws/ec2/concat-clips
$ cargo build --release
$ cp target/release/concat-clips ~/
インスタンス起動時に自動実行させるための設定
- concat-clips.service
[Unit]
Description=service to lanuch concat-clips
[Service]
EnvironmentFile=/etc/sysconfig/concat-clips_env
WorkingDirectory=/home/ubuntu/
ExecStart=/bin/sh /home/ubuntu/concat-process.sh
User=ubuntu
[Install]
WantedBy=default.target
- concat-clips_env
PATH=/home/ubuntu/.cargo/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games:/snap/bin
DATABASE_URL=mysql://root:*****@*****/cliphype
AWS_ACCESS_KEY_ID=*****
AWS_SECRET_ACCESS_KEY=*****
サービスの設定
$ sudo vi /etc/systemd/system/concat-clips.service
$ sudo mkdir /etc/sysconfig
$ sudo vi /etc/sysconfig/concat-clips_env
$ sudo systemctl enable concat-clips
デプロイ手順
mainブランチにdevelopブランチをマージ
- Githubの
PullRequest
からマージする main
←develop
本番サーバでClipHypeをPull
$ sudo systemctl stop gunicorn
$ git pull
$ cd cliphype
$ python3 manage.py makemigrations
$ python3 manage.py migrate
AWSサービスの置き換え
Lambda
- 元の関数のトリガーを削除/無効化
- 新しい関数のトリガーを作成
- 環境変数を本番用に変更
SQS
- Lambda関数トリガーの設定
RDS
本番サーバの起動
$ pkill celery
$ nohup celery -A cliphype worker --loglevel=INFO --concurrency=1 >> ~/celery.log &
$ sudo systemctl restart nginx
$ sudo systemctl start gunicorn
クリップのタイトルを描画する
ffmpeg-python
- pythonでffmpegのコマンドが操作できる
- 変数が扱いやすい
- パイプラインで記述するので、足し引きが楽
AutoClipBotによって作成されたクリップを表示する
-
現状、ユーザによって作成されるクリップは限りがあり、面白いシーンやすごいシーンが起こっても誰もクリップを作成しないことは多々ある。コメントからそれらのシーンを読み取ることで、もれなくクリップを作成できる。
-
一定期間内(たぶん24時間以内)なら長さやタイトルの編集も可能。
-
自動クリップの仕組み自体は他のレポジトリとして、ClipHypeからは切り離す。 -> autoclip-bot-ttv
-
自動で作成されたクリップを管理するデータベースを作る -> cliphype.autoclip
-
バックエンドでは、APIを作成し情報を提供する形にする
自動でハイライト動画を持続的に生成する
- 最初に試すコストがユーザ視点では大きいので、ある程度自動で生成する
- ハイライト動画エリアにタブで追加する(?)
- 動画編集機能の追加も必要
- 生成基準
- 1つの配信ごとに生成
- 複数の配信で1つ生成(クリップの長さの合計で決める)
- AutoClipを含めるかどうか
- クリップの再生数を指定して追加