録画してエンコードして良い感じに見る

概要

表題の通り。

この記事ブログカード多用しまくった結果scriptタグ多すぎてめっちゃ重いと思いますごめんなさい。

環境

使ってるプロダクト多すぎてよく分からんけど2015年中旬時点で最新っぽいのです。 OSはDebian jessieのnetinstで統一。

やること

準備

  • 諸々買う

録画サーバ

  • Chinachuインストール

blog.tyage.net

github.com

Chinachuのインストールで詰まるので適当に直す

気づいたら直ってました、kanreisaさんThx!

jessieはsystemd採用してますがinitスクリプトチュートリアル通りに突っ込んでserviceコマンドを叩くと普通に動いてくれます

ストレージサーバ

  • ストレージ用意する(若干のミスも重要)
  • zfs入れる
    • 別にzfsじゃなくてxfsでも良いと思う

github.com

d.hatena.ne.jp

  • 良い感じに纏める(RAIDなりLVMなり)
    • 今回はRAID Zにしました
  • nfssambaをストレージサーバに突っ込む
    • 共有出来るようにしないときつい
    • 結局エンコードサーバ/録画サーバ/LBサーバから参照されるようになってしまった
    • samba入れたのはローカルのwin機で見たかったからなので要らない人は入れなくても良い

エンコードサーバ

takuya-1st.hatenablog.jp

この記事のスクリプト最高なんだけど若干古かったり環境依存だったりするので適当に直す

参考: qiita.com

heartbeats.jp

  • ffmpegの設定はこれを参考に
    • 一部オプションが移行してたりするので適宜直す

d.hatena.ne.jp

配信サーバ

実はストレージサーバの上に動いてるKVMだったりする

  • pig-media-server入れる
    • ruby-devとかpkg-configとか諸々入れるのを忘れない
    • RMagickが鬼門
# apt-get install ruby-dev nodejs npm pkg-config Imagemagick libmagickcore-dev libmagickwand-dev

karia.hatenablog.jp

作者のGitHubを漁るとそれっぽいのがあるので参考にする

github.com

転けるポイントが2つあって、

  • pig-media-serverをgemで入れようとするとsinatraがdevelopで起動してしまう

qiita.com

これに該当してしまって、リッスンするのが127.0.0.1:PORTだけになってしまうので、gitからcloneしてくるのが良いと思う。

自分はフロントのwebサーバが配信サーバ以外に置きたかったので躓いたが、別に127.0.0.1からなら普通にアクセス出来るので、ミドルサーバとして配信サーバにApacheとかNginxを置くのもまあ解決策としてはアリだと思う。

  • /volume/ 以下はフロントサーバを噛ますときに注意する

上記のkariaさんの記事でも触れられているのだけど、/volume/ 以下は実ファイルパスを返す必要がある。 フロントのwebサーバを噛ます時にmp4ファイル群が /volume/ 以下にくるようにフロントサーバの設定を書くと良い。

総括

複数サーバを用いての録画エンコード実装を行うことが出来た。

「適当に直す」とか書いてたスクリプトに関しては以下に纏めた。その他の課題もIssueとして書いていくことにする。 github.com

かなり良い感じに録画を見る事が出来るようになって、録画の消化が更に捗る。更なる録画環境の構築に向けて良い方向にしていきたい。