SlideShare a Scribd company logo
xxxxxxxx動画共有サイト
  Project名


   を1日で構築しよう

        本名と所属
この資料は
BLOGと併せて読んでね
                            @tamtam180
http://mt.orz.at/archives/2012/06/3.html
アジェンダ
•   はじめに
•   システム概要   適当な感じで
•   デモ       発表していくよ
•   システム構成
•   TIPS
•   問題点
•   次にやること
モチベーション
• FRAPSで撮った動画を共有したい
• モーションチェックやUI確認など
• 将来的にはQAの検証報告のエビデンスと
  して
問題点
• ファイルサーバ
 – 各個人が好き勝手にプロジェクトサーバに置
   くと速攻で枯渇する。
 – ファイラーがNetAppだと超高い!!
• FRAPS
 – FRAPSで画撮した動画は再生にFRAPSコー
   デックが必要
   • 体験版入れておけばコーデックも入るので見れる
     けど。
高いってどれくらいよ?

        ぶっちゃけ
       おいくら万円?
参考: ファイルサーバのお値段
• ローエンドのファイラー(FAS2020)
  – XXX万円
    ¥¥¥¥

• HDDのお値段
   – XXXX円~XXXX円/1GB (ライセンス料込)
      ¥¥¥¥  ¥¥¥¥

   – RAIDをリアルタイムで2重化
   – 50GB追加 → 100GB + パリティ + スペア
お金の話なの XX万円
   –→
で当然カット
Xxさんからのお告げ
    上司


                         金を出せばい
• 何か良い方法ないかなぁ?           くらでも解決
                          はできる
 – WIN鯖ならD&Dだけで配信できる
  • WindowsServerOSは高い
 – ■■■■の■■■■■■を使う
    ある部署 ほげシステム

  • WMVだし、重いし。。
• 「1日あれば出来ますよ」と口を滑らす
 – 本当に1日で作れるか試してみた
 – プロトタイプは1日で完成
 – 色々こだわって作ったら3日はかかった
プロトタイプ           RED5とかも
                        検討したよ


• 動画ファイルをSambaにコピー
 – エンコードプロセスがSambaを監視
• 動画上にコメントが流れる
• 動画上のタイムラインにお絵かきが出来
  る
• プレイヤーはFLEX Builder3でさくっと作
  成
これはプロトタイプ
コードも残ってってな
     い
プロトタイプ問題点
• Sambaの監視
 – コピー中のファイルを拾ってしまう
 – アップロードの完了タイミングを拾えない
• FLEX BUILDER3
 – 個人ライセンスなので誰も保守できない
というわけで作り直し
システム概要図
                       AJP
          Apache                 Tomcat

                                                         Queue


                              LDAP              ZFS   MySQL
Browser
  Flash Player
                                            Samba

                             EncodeServer
                   動画解析        Process
                 サムネイル生成
                   エンコード
動作概要
• WEBからアップロードする
 – 共有DISKに出力
 – メタデータをDBへ
• エンコードサーバ
 – 動画情報を解析する
 – サムネイル画像を生成する
  • 共有DISKへ出力
 – エンコードを行う
  • 共有DISKへ出力
エンコードサーバ
    フィードバック


                                Analyze/Thumbnail   Encode
               Main Thread
                                     Thread         Thread

MySQL

        Item      Item   Item     WAIT_THUMBNAIL


        Item      Item   Item     WAIT_ENCODE


        Item      Item   Item     SUCCESS
デモ   見せられないの
     で代わりにスク
     リーンショットを
      貼り付けます
BLOGに
張っておきます
システム構成(フロント)
• 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
システム構成(エンコード鯖)
• WindowsXP(SP2)
 – CPU:Pen4 3.2G, Mem2GB
 – JDK6u13                 余ってる在庫
 – FFMPEG(C2D最適化ビルド)         機材

   • ※Pen4用にリビルドするの面倒だった!!
 – FRAPSエンコーダー
システム構成 備考
• WindowsとSolarisで分けた理由
 – WindowsXPはTCP同時接続10本まで(EULA)
   • WindowsでWEBサーバは無理
   • ファイルサーバも当然無理
 – FRAPSコーデックはWindowsオンリー
• SolarisだとZFSが使える
 – ミラーリングできる
システム構成(ネットワーク)
                    DSに置くと転送量

• 172. ■系に配置           やばい。
                     みんなの作業用
 – xx系は■■■■のサーバールーム
                    PCと同じセグメント
                        に
 – xx系は個人PC
 – xx系とxx系の間で極端な負荷がかかると自動
   で遮断する機能が入っている
 – 同一ネットワーク内に置いた方が他のプロ
   ジェクトに迷惑をかけない(はず)
動画について
•   MP4コンテナ(H264/AAC)
•   FlashPlayerはMP4(H264)再生可能
•   H264はマルチスレッドでエンコード可能
•   FRAPS/1280x720 1411kbps 約3分
    546MB
    – MP4に変換
    – 劣化ほぼ無しで13MB      FLV(VP6)
                      は諸事情によ
                        りやめた
参考: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}
FLASHの制約
• BASIC認証を通すことができない
• クッキーを送信する事ができない
• ファイルダイアログがユーザークリック
  をトリガーとすることが必須になった
FLASH制約:BASIC認証(1)
• ※セッションを使えばいいが、後述する
  クッキーが使えないのでセッションIDの
  渡し方に困る。
 – ユーザー名がなりすまし対策済みでプログラ
   ムに渡せれば良い
FLASH制約:BASIC認証(2)

    Servlet              アップロード    Servlet
              JSP
(BASIC認証あり)                       (認証なし)

                マジックナンバー               check
マジックナンバー生成

  ユーザー名

  DBに入れる




                    DB
FLASH制約:COOKIE
• COOKIEを送信できない
 – セッションが使えない
 – リクエストパラメータにIDを渡せば良い
FLASH制約:セキュリティ
• JavaScriptから直接ファイルダイアログ
  が開けなくなった。
• ユーザーのクリックイベント必須。

    Button




• Z-Index指定してかぶせてしまえば良い
• もしくはFlashボタンを用意する
社内向けに
•   残りのDISK容量がわかる
•   エンコードサーバのステータスがわかる
•   ユーザ管理はBASIC認証任せ
•   動画の解像度を指定できる
•   帯域制限無し
•   オリジナルの動画も一定期間参照可能
•   動画ファイルのダウンロードリンク
•   エンコードサーバが非力な場合でもパラパラサ
    ムネイルで早期に概要を確認可能
問題点
• Solarisでオールインワンサーバ
 – ZFSはメモリをもりもり食べる食いしん坊
   • デフォルトで総メモリの75%持って行く
 – MySQLを快適に動かすにはメモリが(ry
 – Javaプロセスはメモリが(ry   後日、私物の
                      INTEL-NICを
• Solarisの蟹NICドライバ         刺しました


 – ■■さんがなんとかするんだと思います
   上司

• LDAP認証
 – ■■さんがなんとかするんだと思います。
   上司
既知の不具合/問題      最終版では
                   直ってます


• ファイルアップロード中に別タブで閲覧
  するとanonymousがアップしたことに
  なってしまう
• 動画をHTTPサーバ上に置いているためス
  トリーム配信ができていない
• サムネイル生成に失敗してもエンコード
  を開始する
• AVIファイルが前提になっている
次に向けて      コメント流しは
                  用途的に合
                 わないので入
                  れてません
• 動画上にコメントを流す機能の復活
• 動画上にお絵かきや吹き出しを入れる機
  能の復活
• RSS
• 古い動画を自動で削除する(NO削除フラ
  グも)
• 誰が見たかわかるようにする等
謝辞
• ■■のプロジェクトサーバをあさって勝
  手に素材を使いました(ノ∀`)
(一応デザイナに許可はとったよ)
ここから、後から追加した資料
前置き
• 本業がタスク量的に死にかけてた時なの
  で、基本的には対応しない方針だった。
 – 数字書くとどこぞに怒られるくらい
 – 対応するにしても、2,3時間とかでできない
   とやってはいけない
• という前提があります
 – こんなやっつけ対応はよろしくないです。
HDDの容量が!
• 無くなる度に、近所のソフマップで購入
• ZFSなので追加は楽ちん
• その後、スロット不足によりHDDが足り
  なくなったのでSATAスロットが多いPCへ
  変更
• この作業は全て上司がやってた。
                最後に見たとき
                には、8000くら
                い動画があった
                 気がする
タグ機能と検索
• タイトルにブラケットを入れるとタグ化
 – [VFX][xxx] 新しい魔法のエフェクトだよ
  • タグ: VFX
  • タグ: xxx
• タグの入力欄を作るのが面倒だった
サウンドカット機能
• iTuneで音楽流しながら動画撮るとそっち
  の曲が入ってしまうらしい
 – やっぱり聞きながら作業したいよね・・?
• よろしい。ならばサーバにアップした時
  に、サウンドを消しましょう
 – オプション機能です
 – オリジナルファイルには当然残ってるので注
   意
最終兵器機能
• XXXの形式がアップできない!
 – ffmpegだとコーデックの種類に限界が
• ならば最後の手だ
 – DirectShow経由でエンコードする
  • Windowsサーバなので出来ること
 – 一般的な形式ならこのオプションは要らない
  • いったい何で撮影してるんだろう。。

More Related Content

PDF
Hive undocumented feature
tamtam180
 
PDF
Hadoop on LXC
俊夫 森
 
PPTX
ネットワークエンジニアのための Puppet / Chef
npsg
 
PPTX
Zabbixを2分でインストール
真乙 九龍
 
PDF
第1回 一撃サーバー構築シェルスクリプト勉強会
Yasutaka Hamada
 
PPTX
Webサーバ勉強会4 nginx で php-fpm を動かしてみた
do_aki
 
PPTX
Puppetのススメ
Gosuke Miyashita
 
PDF
2014/11/04 第2回 一撃サーバー構築シェルスクリプト勉強会(さっぽろ!) 発表資料
Yasutaka Hamada
 
Hive undocumented feature
tamtam180
 
Hadoop on LXC
俊夫 森
 
ネットワークエンジニアのための Puppet / Chef
npsg
 
Zabbixを2分でインストール
真乙 九龍
 
第1回 一撃サーバー構築シェルスクリプト勉強会
Yasutaka Hamada
 
Webサーバ勉強会4 nginx で php-fpm を動かしてみた
do_aki
 
Puppetのススメ
Gosuke Miyashita
 
2014/11/04 第2回 一撃サーバー構築シェルスクリプト勉強会(さっぽろ!) 発表資料
Yasutaka Hamada
 

What's hot (20)

PDF
Yesod on Heroku
Takahiro Himura
 
PPTX
ZabbixとAWS
真乙 九龍
 
PDF
2014/11/08 第3回 一撃サーバー構築シェルスクリプト勉強会(懇親会もあるよ!) 発表資料
Yasutaka Hamada
 
PDF
MySQL Casual Talks in Fukuoka vol.2
学 松崎
 
PDF
Webサーバのチューニング
Yu Komiya
 
PDF
今日から使い始めるChef
Masahiro NAKAYAMA
 
PDF
Ansible quickstart
Hideki Saito
 
PDF
ZabbixのAPIを使って運用を楽しくする話
Masahito Zembutsu
 
PPTX
Appsody でnodejsのアプリを立ち上げよう!
Daisuke Hiraoka
 
PDF
Chef社内勉強会(第1回)
Yoshinori Nakanishi
 
PDF
HBase on EC2
Eiichi Sato
 
PPTX
明日から始める Chef 入門 #bpstudy
Takeshi Komiya
 
PDF
ChefとPuppetの比較
Sugawara Genki
 
PDF
ノンプログラマのためのウェブサーバ入門
Atsu Yamaga
 
PDF
Circle ci and docker+serverspec
Tsuyoshi Yamada
 
PDF
統合監視ソフトウェア Zabbix新バージョン2.0の紹介
takanori suzuki
 
PDF
Webサーバ勉強会03
oranie Narut
 
PDF
Puppet on AWS
Sugawara Genki
 
PDF
Serverspecを使ってサーバ5000台のBaculaクライアントをテスト
Ken Sawada
 
PPTX
Itamae-Serverspec入門
辰徳 斎藤
 
Yesod on Heroku
Takahiro Himura
 
ZabbixとAWS
真乙 九龍
 
2014/11/08 第3回 一撃サーバー構築シェルスクリプト勉強会(懇親会もあるよ!) 発表資料
Yasutaka Hamada
 
MySQL Casual Talks in Fukuoka vol.2
学 松崎
 
Webサーバのチューニング
Yu Komiya
 
今日から使い始めるChef
Masahiro NAKAYAMA
 
Ansible quickstart
Hideki Saito
 
ZabbixのAPIを使って運用を楽しくする話
Masahito Zembutsu
 
Appsody でnodejsのアプリを立ち上げよう!
Daisuke Hiraoka
 
Chef社内勉強会(第1回)
Yoshinori Nakanishi
 
HBase on EC2
Eiichi Sato
 
明日から始める Chef 入門 #bpstudy
Takeshi Komiya
 
ChefとPuppetの比較
Sugawara Genki
 
ノンプログラマのためのウェブサーバ入門
Atsu Yamaga
 
Circle ci and docker+serverspec
Tsuyoshi Yamada
 
統合監視ソフトウェア Zabbix新バージョン2.0の紹介
takanori suzuki
 
Webサーバ勉強会03
oranie Narut
 
Puppet on AWS
Sugawara Genki
 
Serverspecを使ってサーバ5000台のBaculaクライアントをテスト
Ken Sawada
 
Itamae-Serverspec入門
辰徳 斎藤
 
Ad

Similar to 動画共有ツール (20)

PDF
第2回CakePHP勉強会@福岡
ryota ichie
 
PDF
地方企業がソーシャルゲーム開発を成功させるための10のポイント
Kentaro Matsui
 
PDF
PHPでのSWF編集とその応用
Yo Ya
 
PDF
ライブストリーミングの基礎知識その2
kumaryu
 
KEY
ゆるかわPhp
Ryota Mochizuki
 
PDF
高橋 Flash30 ビデオ
smallworkshop
 
PDF
PHPで大規模ブラウザゲームを開発してわかったこと
Kentaro Matsui
 
PDF
TV会議をオープンソースで実現!RED5によるストリーミング配信講座
Shinichiro Yoshida
 
PDF
リアルタイム通信アプリはつくれる!『Red5 Media Server』の機能と事例のご紹介
Shinichiro Yoshida
 
PDF
CommunityOpenDay2012名古屋セッション資料
Shinichiro Isago
 
PDF
Windows Azure Community Open Day 2012
Microsoft Openness Japan
 
PDF
大規模ソーシャルゲーム開発から学んだPHP&MySQL実践テクニック
infinite_loop
 
PDF
qpstudy#5 懇親会LT riywo
Ryosuke IWANAGA
 
PDF
ひよこch 配信中
Kenichiro MATOHARA
 
PDF
Microsoft power point ai fss 製品概要-4-4 [互換モード]
龍雄 炭田
 
PDF
Ai fss 製品概要 4-4
龍雄 炭田
 
KEY
ニコニコ動画iPhoneアプリの作り方@スマートフォン2011講演資料
Kentaro Matsumae
 
PPTX
エンジニアという職業について
Hisatoshi Kikumoto
 
PDF
GMOメディア RHEV-S-事例紹介
Dai Utsui
 
PDF
仮想ネットワーク構築8枚slide
k009c1271
 
第2回CakePHP勉強会@福岡
ryota ichie
 
地方企業がソーシャルゲーム開発を成功させるための10のポイント
Kentaro Matsui
 
PHPでのSWF編集とその応用
Yo Ya
 
ライブストリーミングの基礎知識その2
kumaryu
 
ゆるかわPhp
Ryota Mochizuki
 
高橋 Flash30 ビデオ
smallworkshop
 
PHPで大規模ブラウザゲームを開発してわかったこと
Kentaro Matsui
 
TV会議をオープンソースで実現!RED5によるストリーミング配信講座
Shinichiro Yoshida
 
リアルタイム通信アプリはつくれる!『Red5 Media Server』の機能と事例のご紹介
Shinichiro Yoshida
 
CommunityOpenDay2012名古屋セッション資料
Shinichiro Isago
 
Windows Azure Community Open Day 2012
Microsoft Openness Japan
 
大規模ソーシャルゲーム開発から学んだPHP&MySQL実践テクニック
infinite_loop
 
qpstudy#5 懇親会LT riywo
Ryosuke IWANAGA
 
ひよこch 配信中
Kenichiro MATOHARA
 
Microsoft power point ai fss 製品概要-4-4 [互換モード]
龍雄 炭田
 
Ai fss 製品概要 4-4
龍雄 炭田
 
ニコニコ動画iPhoneアプリの作り方@スマートフォン2011講演資料
Kentaro Matsumae
 
エンジニアという職業について
Hisatoshi Kikumoto
 
GMOメディア RHEV-S-事例紹介
Dai Utsui
 
仮想ネットワーク構築8枚slide
k009c1271
 
Ad

More from tamtam180 (6)

PDF
Introduction httpClient on Java11 / Java11時代のHTTPアクセス再入門
tamtam180
 
PDF
Japanese font test
tamtam180
 
PDF
Getting Started GraalVM (再アップロード)
tamtam180
 
PDF
Getting Started GraalVM / GraalVM超入門 #jjug_ccc #ccc_c2
tamtam180
 
PDF
jjugccc2018 app review postmortem
tamtam180
 
PDF
PipelineDBとは?
tamtam180
 
Introduction httpClient on Java11 / Java11時代のHTTPアクセス再入門
tamtam180
 
Japanese font test
tamtam180
 
Getting Started GraalVM (再アップロード)
tamtam180
 
Getting Started GraalVM / GraalVM超入門 #jjug_ccc #ccc_c2
tamtam180
 
jjugccc2018 app review postmortem
tamtam180
 
PipelineDBとは?
tamtam180
 

Recently uploaded (10)

PDF
20250730_QiitaBash_LT登壇資料_PDC_Kurashina.pdf
pdckurashina
 
PDF
20250726_Devinで変えるエンプラシステム開発の未来
Masaki Yamakawa
 
PPTX
2025_7_25_吉祥寺_設計ナイト_ADR運用におけるデータ利活用の考え方.pptx
ssuserfcafd1
 
PPTX
baserCMS『カスタムコンテンツ』徹底活用術〜あなただけの管理画面を自由自在に〜
Ryuji Egashira
 
PDF
第三世代 ウェザーステーションキット v3 ー WSC3-L 日本語カタログ
CRI Japan, Inc.
 
PDF
MahiroYoshida_セリフに着目したキャラクタロール推定に関する基礎検討_sigcc12th2025
Matsushita Laboratory
 
PDF
【学会聴講報告】CVPR2025からみるVision最先端トレンド / CVPR2025 report
Sony - Neural Network Libraries
 
PDF
VMUG Japan book vsan 20250515 CPU/Memory vSAN
Kazuhiro Sota
 
PDF
TaketoFujikawa_ComicComputing12th_inKumamoto
Matsushita Laboratory
 
PDF
20250729_Devin-for-Enterprise
Masaki Yamakawa
 
20250730_QiitaBash_LT登壇資料_PDC_Kurashina.pdf
pdckurashina
 
20250726_Devinで変えるエンプラシステム開発の未来
Masaki Yamakawa
 
2025_7_25_吉祥寺_設計ナイト_ADR運用におけるデータ利活用の考え方.pptx
ssuserfcafd1
 
baserCMS『カスタムコンテンツ』徹底活用術〜あなただけの管理画面を自由自在に〜
Ryuji Egashira
 
第三世代 ウェザーステーションキット v3 ー WSC3-L 日本語カタログ
CRI Japan, Inc.
 
MahiroYoshida_セリフに着目したキャラクタロール推定に関する基礎検討_sigcc12th2025
Matsushita Laboratory
 
【学会聴講報告】CVPR2025からみるVision最先端トレンド / CVPR2025 report
Sony - Neural Network Libraries
 
VMUG Japan book vsan 20250515 CPU/Memory vSAN
Kazuhiro Sota
 
TaketoFujikawa_ComicComputing12th_inKumamoto
Matsushita Laboratory
 
20250729_Devin-for-Enterprise
Masaki Yamakawa
 

動画共有ツール