ClipHype

ローカルでの開発環境構築手順

本番環境と近づけるためにDockerを使う。

  1. Dockerイメージのビルド

Dockerfileの場所を指定して、そのDockerfileをもとにイメージをビルドする

$ docker build -t cliphype:1.0 .
  1. Dockerコンテナ起動
docker run -it -p 8000:8000 -v <directory_path>:/root/cliphype --name cliphype cliphype:1.0

ここで、コンテナ起動時に自動的にdocker_start.shが実行され、諸々設定される

  1. 開発サーバの起動
$ 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からマージする
  • maindevelop

本番サーバで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を含めるかどうか
    • クリップの再生数を指定して追加