Giter VIP home page Giter VIP logo

akane's Introduction

akane (supplemental tool for chinachu)

背景

Chinachu を利用して録画を行うと、recordedCommandで録画後に実行するコマンドが指定できる。(参考)

しかし、recordedCommandでエンコードなどの時間がかかる処理をしようとすると、後続の録画や、実行中の処理のことを考慮せずに処理が実施される。たとえばTurion N54L(HP MicroServerのCPU)で2passエンコードを行おうとすると録画時間の4倍の時間がかかる。録画4つとエンコード4つが重複したりするのはHDDに高負荷をかけると考えられるのでなるべく避けたい。

そのため、録画終了後にいったんqueueに入れ、処理時間が次の録画の開始前に終わるようなら処理を実行する。

設定

install

$ cd /some/directory/
$ git clone https://github.com/wataken44/akane

chinachuのconfig.json

enque用のコマンドを登録する

  "recordedCommand": "/some/directory/akane/enque.py"

akaneのconfig.json

$ cd /some/directory/akane
$ cp config-sample.json config.json
$ vi config.json

設定項目の意味

{
  "chinachu": {
    "apiEndpoint": "chinachuのAPIのURL (例: http://localhost/api/)",
    "username": "chinachuのbasic認証のユーザ名(例: akane)",
    "password": "chinachuのbasic認証のパスワード(例: bakuhatsu)"
  },
  "akane": {
    "log": "ログファイル(例: /some/directory/log.txt)",
    "lockFileDir": "lockを置くdirectory(例: /some/directory/tmp/)",
    "metaFileDir": "metaFileを置くdirectory(例: /some/directory/meta/)",
    "maxProcessingTaskCount": 並列に実行するtask数(例: 1),
    "processCommands": ["実行するcommand(例: /home/chinachu/akane/command-sample/encode.py"],
    "processTimeRatio": processCommandsで指定したcommandを実行するのにかかる時間を見積もるときの、録画されたファイルの時間に対する係数(例: 5.5),
    "processTimeConstant": processCommandsで指定したcommandを実行するのにかかる時間を見積もるときの定数項(例: 400)
  }
}

queueの初期化

$ echo '[]' > <metaFileDir>/queue.json

補足

  • lockFileDir, metaFileDirは手動で作成要。slashで終わらなければいけない。
  • 録画された動画を処理する条件は (次の予約までの時間[秒]) > processTimeRatio * (動画の長さ[秒]) + processTimeConstant
  • processCommandsの各コマンドには、chinachuのrecordedCommandと同じ引数が渡される($1がファイル名、$2がjson)。

encode.pyのencode-config.json(利用する場合)

$ cd /some/directory/akane/command-sample
$ cp encode-config-sample.json encode-config.json
$ vi encode-config.json

設定例

{
  "log": "ログファイル(例: /mnt/data_01/meta/log-encode.txt)",
  "encodedDir": "出力directory(例: /mnt/data_01/mp4)",
  "encodedExt": "出力拡張子(例: .mp4)",
  "encodedInfoFile": "/mnt/data_01/meta/encoded.json",
  "command": "/home/chinachu/Chinachu/usr/bin/ffmpeg -y -i '<recorded>' -f mp4 -vcodec libx264 -fpre /mnt/data_01/etc/libx264-hq-ts.ffpreset -r 30000/1001 -aspect 16:9 -s 1280x720 -b:v 1800000 -minrate 1800000 -pass 1 -an -movflags faststart '<encoded>' 2>&1 > /mnt/data_01/meta/log-ffmpeg.txt && /home/chinachu/Chinachu/usr/bin/ffmpeg -y -i '<recorded>' -f mp4 -vcodec libx264 -fpre /mnt/data_01/etc/libx264-hq-ts.ffpreset -r 30000/1001 -aspect 16:9 -s 1280x720 -bufsize 20000k -b:v 1800000 -minrate 1800000 -pass 2 -movflags faststart '<encoded>' 2>&1 >> /mnt/data_01/meta/log-ffmpeg.txt"
}

補足

  • commandの<recorded>は録画されたファイルのフルパス、<encoded>は <encodedDir>/<録画されたファイルのbasename><encodedExt> に置換される

cronの設定

設定例

16,46  *  *  *  *  cd /mnt/data_01/tmp/; /usr/bin/env python /home/chinachu/akane/dispatch.py > /dev/null

akane's People

Contributors

wataken44 avatar

Stargazers

Hideo Yasumoto avatar Yusuke Nakasatomi avatar  avatar gnaggnoyil avatar Yuki K. avatar

Watchers

 avatar James Cloos avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.