Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.
xxxxxxxx動画共有サイト  Project名   を1日で構築しよう        本名と所属
この資料はBLOGと併せて読んでね                            @tamtam180http://mt.orz.at/archives/2012/06/3.html
アジェンダ•   はじめに•   システム概要   適当な感じで•   デモ       発表していくよ•   システム構成•   TIPS•   問題点•   次にやること
モチベーション• FRAPSで撮った動画を共有したい• モーションチェックやUI確認など• 将来的にはQAの検証報告のエビデンスと  して
問題点• ファイルサーバ – 各個人が好き勝手にプロジェクトサーバに置   くと速攻で枯渇する。 – ファイラーがNetAppだと超高い!!• FRAPS – FRAPSで画撮した動画は再生にFRAPSコー   デックが必要   • 体験版入れ...
高いってどれくらいよ?        ぶっちゃけ       おいくら万円?
参考: ファイルサーバのお値段• ローエンドのファイラー(FAS2020)  – XXX万円    ¥¥¥¥• HDDのお値段   – XXXX円~XXXX円/1GB (ライセンス料込)      ¥¥¥¥  ¥¥¥¥   – RAIDをリアル...
Xxさんからのお告げ    上司                         金を出せばい• 何か良い方法ないかなぁ?           くらでも解決                          はできる – WIN鯖ならD&Dだけ...
プロトタイプ           RED5とかも                        検討したよ• 動画ファイルをSambaにコピー – エンコードプロセスがSambaを監視• 動画上にコメントが流れる• 動画上のタイムラインにお絵か...
これはプロトタイプコードも残ってってな     い
プロトタイプ問題点• Sambaの監視 – コピー中のファイルを拾ってしまう – アップロードの完了タイミングを拾えない• FLEX BUILDER3 – 個人ライセンスなので誰も保守できない
というわけで作り直し
システム概要図                       AJP          Apache                 Tomcat                                                  ...
動作概要• WEBからアップロードする – 共有DISKに出力 – メタデータをDBへ• エンコードサーバ – 動画情報を解析する – サムネイル画像を生成する  • 共有DISKへ出力 – エンコードを行う  • 共有DISKへ出力
エンコードサーバ    フィードバック                                Analyze/Thumbnail   Encode               Main Thread                   ...
デモ   見せられないの     で代わりにスク     リーンショットを      貼り付けます
BLOGに張っておきます
システム構成(フロント)• Solaris10, CPU???, Mem2GB• Apache-2.2, Tomcat-6.0.18, JDK6u13• MySQL-5.1.33                 余ってる在庫  – InnoDB...
システム構成(エンコード鯖)• WindowsXP(SP2) – CPU:Pen4 3.2G, Mem2GB – JDK6u13                 余ってる在庫 – FFMPEG(C2D最適化ビルド)         機材   •...
システム構成 備考• WindowsとSolarisで分けた理由 – WindowsXPはTCP同時接続10本まで(EULA)   • WindowsでWEBサーバは無理   • ファイルサーバも当然無理 – FRAPSコーデックはWindow...
システム構成(ネットワーク)                    DSに置くと転送量• 172. ■系に配置           やばい。                     みんなの作業用 – xx系は■■■■のサーバールーム     ...
動画について•   MP4コンテナ(H264/AAC)•   FlashPlayerはMP4(H264)再生可能•   H264はマルチスレッドでエンコード可能•   FRAPS/1280x720 1411kbps 約3分    546MB  ...
参考:FFMPEGオプション• -threads 2 -i %{inputFile} -qmin 1 -qmax  20 -bf 3 -crf 21 -sc_threshold 54 -partitions  "parti4x4+partp8x...
FLASHの制約• BASIC認証を通すことができない• クッキーを送信する事ができない• ファイルダイアログがユーザークリック  をトリガーとすることが必須になった
FLASH制約:BASIC認証(1)• ※セッションを使えばいいが、後述する  クッキーが使えないのでセッションIDの  渡し方に困る。 – ユーザー名がなりすまし対策済みでプログラ   ムに渡せれば良い
FLASH制約:BASIC認証(2)    Servlet              アップロード    Servlet              JSP(BASIC認証あり)                       (認証なし)     ...
FLASH制約:COOKIE• COOKIEを送信できない – セッションが使えない – リクエストパラメータにIDを渡せば良い
FLASH制約:セキュリティ• JavaScriptから直接ファイルダイアログ  が開けなくなった。• ユーザーのクリックイベント必須。    Button• Z-Index指定してかぶせてしまえば良い• もしくはFlashボタンを用意する
社内向けに•   残りのDISK容量がわかる•   エンコードサーバのステータスがわかる•   ユーザ管理はBASIC認証任せ•   動画の解像度を指定できる•   帯域制限無し•   オリジナルの動画も一定期間参照可能•   動画ファイルのダ...
問題点• Solarisでオールインワンサーバ – ZFSはメモリをもりもり食べる食いしん坊   • デフォルトで総メモリの75%持って行く – MySQLを快適に動かすにはメモリが(ry – Javaプロセスはメモリが(ry   後日、私物の...
既知の不具合/問題      最終版では                   直ってます• ファイルアップロード中に別タブで閲覧  するとanonymousがアップしたことに  なってしまう• 動画をHTTPサーバ上に置いているためス  トリー...
次に向けて      コメント流しは                  用途的に合                 わないので入                  れてません• 動画上にコメントを流す機能の復活• 動画上にお絵かきや吹き出しを入...
謝辞• ■■のプロジェクトサーバをあさって勝  手に素材を使いました(ノ∀`)(一応デザイナに許可はとったよ)
ここから、後から追加した資料
前置き• 本業がタスク量的に死にかけてた時なの  で、基本的には対応しない方針だった。 – 数字書くとどこぞに怒られるくらい – 対応するにしても、2,3時間とかでできない   とやってはいけない• という前提があります – こんなやっつけ対応...
HDDの容量が!• 無くなる度に、近所のソフマップで購入• ZFSなので追加は楽ちん• その後、スロット不足によりHDDが足り  なくなったのでSATAスロットが多いPCへ  変更• この作業は全て上司がやってた。               ...
タグ機能と検索• タイトルにブラケットを入れるとタグ化 – [VFX][xxx] 新しい魔法のエフェクトだよ  • タグ: VFX  • タグ: xxx• タグの入力欄を作るのが面倒だった
サウンドカット機能• iTuneで音楽流しながら動画撮るとそっち  の曲が入ってしまうらしい – やっぱり聞きながら作業したいよね・・?• よろしい。ならばサーバにアップした時  に、サウンドを消しましょう – オプション機能です – オリジナ...
最終兵器機能• XXXの形式がアップできない! – ffmpegだとコーデックの種類に限界が• ならば最後の手だ – DirectShow経由でエンコードする  • Windowsサーバなので出来ること – 一般的な形式ならこのオプションは要ら...
Upcoming SlideShare
Loading in …5
×

動画共有ツール

9,361 views

Published on

Published in: Technology
  • Be the first to comment

動画共有ツール

  1. 1. xxxxxxxx動画共有サイト Project名 を1日で構築しよう 本名と所属
  2. 2. この資料はBLOGと併せて読んでね @tamtam180http://mt.orz.at/archives/2012/06/3.html
  3. 3. アジェンダ• はじめに• システム概要 適当な感じで• デモ 発表していくよ• システム構成• TIPS• 問題点• 次にやること
  4. 4. モチベーション• FRAPSで撮った動画を共有したい• モーションチェックやUI確認など• 将来的にはQAの検証報告のエビデンスと して
  5. 5. 問題点• ファイルサーバ – 各個人が好き勝手にプロジェクトサーバに置 くと速攻で枯渇する。 – ファイラーがNetAppだと超高い!!• FRAPS – FRAPSで画撮した動画は再生にFRAPSコー デックが必要 • 体験版入れておけばコーデックも入るので見れる けど。
  6. 6. 高いってどれくらいよ? ぶっちゃけ おいくら万円?
  7. 7. 参考: ファイルサーバのお値段• ローエンドのファイラー(FAS2020) – XXX万円 ¥¥¥¥• HDDのお値段 – XXXX円~XXXX円/1GB (ライセンス料込) ¥¥¥¥ ¥¥¥¥ – RAIDをリアルタイムで2重化 – 50GB追加 → 100GB + パリティ + スペアお金の話なの XX万円 –→で当然カット
  8. 8. Xxさんからのお告げ 上司 金を出せばい• 何か良い方法ないかなぁ? くらでも解決 はできる – WIN鯖ならD&Dだけで配信できる • WindowsServerOSは高い – ■■■■の■■■■■■を使う ある部署 ほげシステム • WMVだし、重いし。。• 「1日あれば出来ますよ」と口を滑らす – 本当に1日で作れるか試してみた – プロトタイプは1日で完成 – 色々こだわって作ったら3日はかかった
  9. 9. プロトタイプ RED5とかも 検討したよ• 動画ファイルをSambaにコピー – エンコードプロセスがSambaを監視• 動画上にコメントが流れる• 動画上のタイムラインにお絵かきが出来 る• プレイヤーはFLEX Builder3でさくっと作 成
  10. 10. これはプロトタイプコードも残ってってな い
  11. 11. プロトタイプ問題点• Sambaの監視 – コピー中のファイルを拾ってしまう – アップロードの完了タイミングを拾えない• FLEX BUILDER3 – 個人ライセンスなので誰も保守できない
  12. 12. というわけで作り直し
  13. 13. システム概要図 AJP Apache Tomcat Queue LDAP ZFS MySQLBrowser Flash Player Samba EncodeServer 動画解析 Process サムネイル生成 エンコード
  14. 14. 動作概要• WEBからアップロードする – 共有DISKに出力 – メタデータをDBへ• エンコードサーバ – 動画情報を解析する – サムネイル画像を生成する • 共有DISKへ出力 – エンコードを行う • 共有DISKへ出力
  15. 15. エンコードサーバ フィードバック Analyze/Thumbnail Encode Main Thread Thread ThreadMySQL Item Item Item WAIT_THUMBNAIL Item Item Item WAIT_ENCODE Item Item Item SUCCESS
  16. 16. デモ 見せられないの で代わりにスク リーンショットを 貼り付けます
  17. 17. BLOGに張っておきます
  18. 18. システム構成(フロント)• Solaris10, CPU???, Mem2GB• Apache-2.2, Tomcat-6.0.18, JDK6u13• MySQL-5.1.33 余ってる在庫 – InnoDB, MyISAM 機材• Samba, LDAP-Auth• ZFS(500GB ミラーリング) – Sofmapで8000円程度*2
  19. 19. システム構成(エンコード鯖)• WindowsXP(SP2) – CPU:Pen4 3.2G, Mem2GB – JDK6u13 余ってる在庫 – FFMPEG(C2D最適化ビルド) 機材 • ※Pen4用にリビルドするの面倒だった!! – FRAPSエンコーダー
  20. 20. システム構成 備考• WindowsとSolarisで分けた理由 – WindowsXPはTCP同時接続10本まで(EULA) • WindowsでWEBサーバは無理 • ファイルサーバも当然無理 – FRAPSコーデックはWindowsオンリー• SolarisだとZFSが使える – ミラーリングできる
  21. 21. システム構成(ネットワーク) DSに置くと転送量• 172. ■系に配置 やばい。 みんなの作業用 – xx系は■■■■のサーバールーム PCと同じセグメント に – xx系は個人PC – xx系とxx系の間で極端な負荷がかかると自動 で遮断する機能が入っている – 同一ネットワーク内に置いた方が他のプロ ジェクトに迷惑をかけない(はず)
  22. 22. 動画について• MP4コンテナ(H264/AAC)• FlashPlayerはMP4(H264)再生可能• H264はマルチスレッドでエンコード可能• FRAPS/1280x720 1411kbps 約3分 546MB – MP4に変換 – 劣化ほぼ無しで13MB FLV(VP6) は諸事情によ りやめた
  23. 23. 参考:FFMPEGオプション• -threads 2 -i %{inputFile} -qmin 1 -qmax 20 -bf 3 -crf 21 -sc_threshold 54 -partitions "parti4x4+partp8x8+partp4x4+partb8x8" - level 13 -flags2 "bpyramid+dct8x8+wpred+mixed_refs- fastpskip" -g 30 -keyint_min 1 -b 768k "- maxrate" "2000k" -me_range 64 -trellis 2 - vcodec libx264 -acodec libfaac -ar 44100 - ab 128k -async 1 -y - s %{size} %{outputFile}
  24. 24. FLASHの制約• BASIC認証を通すことができない• クッキーを送信する事ができない• ファイルダイアログがユーザークリック をトリガーとすることが必須になった
  25. 25. FLASH制約:BASIC認証(1)• ※セッションを使えばいいが、後述する クッキーが使えないのでセッションIDの 渡し方に困る。 – ユーザー名がなりすまし対策済みでプログラ ムに渡せれば良い
  26. 26. FLASH制約:BASIC認証(2) Servlet アップロード Servlet JSP(BASIC認証あり) (認証なし) マジックナンバー checkマジックナンバー生成 ユーザー名 DBに入れる DB
  27. 27. FLASH制約:COOKIE• COOKIEを送信できない – セッションが使えない – リクエストパラメータにIDを渡せば良い
  28. 28. FLASH制約:セキュリティ• JavaScriptから直接ファイルダイアログ が開けなくなった。• ユーザーのクリックイベント必須。 Button• Z-Index指定してかぶせてしまえば良い• もしくはFlashボタンを用意する
  29. 29. 社内向けに• 残りのDISK容量がわかる• エンコードサーバのステータスがわかる• ユーザ管理はBASIC認証任せ• 動画の解像度を指定できる• 帯域制限無し• オリジナルの動画も一定期間参照可能• 動画ファイルのダウンロードリンク• エンコードサーバが非力な場合でもパラパラサ ムネイルで早期に概要を確認可能
  30. 30. 問題点• Solarisでオールインワンサーバ – ZFSはメモリをもりもり食べる食いしん坊 • デフォルトで総メモリの75%持って行く – MySQLを快適に動かすにはメモリが(ry – Javaプロセスはメモリが(ry 後日、私物の INTEL-NICを• Solarisの蟹NICドライバ 刺しました – ■■さんがなんとかするんだと思います 上司• LDAP認証 – ■■さんがなんとかするんだと思います。 上司
  31. 31. 既知の不具合/問題 最終版では 直ってます• ファイルアップロード中に別タブで閲覧 するとanonymousがアップしたことに なってしまう• 動画をHTTPサーバ上に置いているためス トリーム配信ができていない• サムネイル生成に失敗してもエンコード を開始する• AVIファイルが前提になっている
  32. 32. 次に向けて コメント流しは 用途的に合 わないので入 れてません• 動画上にコメントを流す機能の復活• 動画上にお絵かきや吹き出しを入れる機 能の復活• RSS• 古い動画を自動で削除する(NO削除フラ グも)• 誰が見たかわかるようにする等
  33. 33. 謝辞• ■■のプロジェクトサーバをあさって勝 手に素材を使いました(ノ∀`)(一応デザイナに許可はとったよ)
  34. 34. ここから、後から追加した資料
  35. 35. 前置き• 本業がタスク量的に死にかけてた時なの で、基本的には対応しない方針だった。 – 数字書くとどこぞに怒られるくらい – 対応するにしても、2,3時間とかでできない とやってはいけない• という前提があります – こんなやっつけ対応はよろしくないです。
  36. 36. HDDの容量が!• 無くなる度に、近所のソフマップで購入• ZFSなので追加は楽ちん• その後、スロット不足によりHDDが足り なくなったのでSATAスロットが多いPCへ 変更• この作業は全て上司がやってた。 最後に見たとき には、8000くら い動画があった 気がする
  37. 37. タグ機能と検索• タイトルにブラケットを入れるとタグ化 – [VFX][xxx] 新しい魔法のエフェクトだよ • タグ: VFX • タグ: xxx• タグの入力欄を作るのが面倒だった
  38. 38. サウンドカット機能• iTuneで音楽流しながら動画撮るとそっち の曲が入ってしまうらしい – やっぱり聞きながら作業したいよね・・?• よろしい。ならばサーバにアップした時 に、サウンドを消しましょう – オプション機能です – オリジナルファイルには当然残ってるので注 意
  39. 39. 最終兵器機能• XXXの形式がアップできない! – ffmpegだとコーデックの種類に限界が• ならば最後の手だ – DirectShow経由でエンコードする • Windowsサーバなので出来ること – 一般的な形式ならこのオプションは要らない • いったい何で撮影してるんだろう。。

×