実践Linux
CentOS5/6.5        CentOS5/6.5 目次へ  TOP(HOME)へ

ストリーミング(動画配信)サーバー
C++ RTMP Server (CentOS6.5)  2015年3月






ここでは配信サーバーはLinux、エンコーダはwebカメラが扱いやすいWindowsを使うことにします。

●C++ RTMP Server

プロトコルRTMP(Real Time Messaging Protocol)に準拠した配信を行うサーバーです。Flashを使ってライブストリーミングを実現します。
ブラウザ側では、Flash Playerが動作し、Flash Player上で動いている .swfファイルのクライアントと、動画情報を配信するサーバーとの間で通信することになります。

●インストール
解凍したフォルダを配置するだけです。
http://rtmpd.com/index.php/downloads/より、
crtmpserver-1.1_beta-x86_64-CentOS_6.2.tar.gzをダウンロード
ダウンロードしたパッケージを解凍します。

# tar xfz crtmpserver-1.1_beta-i686-CentOS_6.2.tar.gz

# mv crtmpserver-1.1_beta-i686-CentOS_6.2 /usr/local/lib/crtmpserver
# chown -R root.root /usr/local/lib/crtmpserver

●設定
ストリーミング配信のための必要最小限の設定を行います。
/usr/local/lib/crtmpserver/configs/flvplayback.luaの編集
念のためflvplayback.luaのバックアップを取っておく。

85 validateHandshake=false,
86 keyframeSeek=true,
87 seekGranularity=1.5, --in seconds, between 0.1 and 600
88 clientSideBuffer=12, --in seconds, between 5 and 30
89 --generateMetaFiles=true, --this will generate seek/meta files on application startup
90 --renameBadFiles=false,
91 mediaFolder="./media",  ←これを適宜変更
92 --[[authentication=  ←これ以降は、パスワードを設定する場合

※「--」は、コメントを意味します。

●パスワード設定
設定ファイル:/usr/local/crtmpserver/applications/flvplayback/users.lua
ただし、これを使うためには、上のauthenticationを有効にしておかなければなりません。
複数のユーザー名とパスワードの組を登録できます。
※この設定を行っても、配信されているストリームの再生は誰でも可能です。
users=
{
user1="password1",
user2="password2"
}

●起動
# cd /usr/local/lib/crtmpserver  ここに移動してからでないと起動できないので注意
# ./run_flvplayback.sh

デーモンプロセスで起動する場合には、次のコマンドとなります。
# ./run_flvplayback_daemon.sh

デーモンプロセスの停止
プロセスの調査
# ps ax | grep crtmpserver
# pgrep crtmpserver
停止
# kill プロセス番号
または、# pkill crtmpserverでも停止できる。


●ブラウザに配信するプレイヤーの準備

mp4形式等の動画を配信するために、動画プレイヤーにフラッシュプレイヤーを使用します。無料で使えるフラッシュプレイヤーで、ストリーミングに対応しているプレイヤーとして、Flowplayerがあります。

ダウンロードはwindowsで行い、FTPでアップロードしました。

以下のURLからFlowplayer Flash版をダウンロードします。
https://flowplayer.org/latest/
flowplayer-5.5.2.zip

ダウンロードしたファイルを解凍し、これを、公開ディレクトリ/var/www/html/crtmp配下に配置します。(例)
/var/www/html/crtmp
   /flowplayer-5.5.2 ← ここにFlowplayer Flash版を配置します
      flowplayer.js
      flowplayer.min.js
      flowplayer.swf
      ……………

flowplayerのテスト ///////////////////////////////////////////////////////////

動画を見るためのページを作成します。
ここでは、公開ディレクトリ /var/www/html/crtmpの直下にindex.htmlというファイル名で作成します。
/var/www/html/crtmp/flowplayerにindex.htmlのひな形があるので、これをコピーして編集。
動画ファイルは、 sample.mp4 等として/var/www/html/crtmp/media に配置します。

/var/www/html/crtmp/index.html を以下のように編集します。

<!doctype html>

<head>

<!-- player skin -->
<link rel="stylesheet" href="flowplayer-5.5.2/skin/minimalist.css">

<!-- site specific styling -->
<style>
.flowplayer { height: 240px; width: 320px; }  ←全体のサイズ指定
</style>

<!-- flowplayer depends on jQuery 1.7.1+ (for now) -->
<script src="//code.jquery.com/jquery-1.11.0.min.js"></script>

<!-- include flowplayer -->
<script src="flowplayer-5.5.2/flowplayer.min.js"></script>

</head>

<body>

<div class="flowplayer" data-swf="flowplayer-5.5.2/flowplayer.swf" data-ratio="0.4167">
<video>
<source type="video/mp4" src="http://www.my-dom.xxx/crtmp/media/sample.mp4">
</video>
</div>

<div class="flowplayer" data-swf="flowplayer-5.5.2/flowplayer.swf" data-ratio="0.4167">
<video>
<source type="video/mp4" src="media/sample2.mp4">
</video>
</div>

<p>
<div style="display:block;width:640px;height:480px" class="flowplayer" data-swf="flowplayer-5.5.2/flowplayer.swf" data-ratio="0.4167">  ←個別でサイズ指定
<video>
<source type="video/flv" src="media/test.flv">
</video>
</div>

</body>

ただしこの例では、crtmpserverはまだ利用していない。Flowplayerだけで配信している。


●crtmpserverを使った配信

リアルタイム・ストリーミングの一つのRTMP (Real Time Messaging Protocol。Adobe Flashプレーヤーとサーバーの間で、音声・動画・データをやりとりするストリーミングのプロトコル。)は長時間の動画に向いています。ユーザーがどこからでも再生できて、巨大なファイルを丸ごとダウンロードしなくてもいいのです。それにコンテンツの保護にも都合が良く、ユーザーは直接、自分のハードディスクにコピーできません。

/usr/local/lib/crtmpserver/configs/flvplayback.luaの編集
41 acceptors =
  {
   {
    ip="0.0.0.0",  ←0.0.0.0 means all interfaces and all IPs.
    port=1935,
    protocol="inboundRtmp"
   },

91 --mediaFolder="./media",  ←これを--でコメントアウトし、変更
  mediaFolder="/var/www/html/crtmp/media",
  aliases=
  {
   "mylive",  ←エイリアス設定。
  },
92 --[[authentication=  ←これ以降は、パスワードを設定する場合有効にする。

※「--」は、コメントを意味します。

/var/www/html/crtmp/index.html を以下のように編集します。

<!doctype html>

<head>

<!-- player skin -->
<link rel="stylesheet" href="flowplayer-5.5.2/skin/playful.css">  ←変更してみた

<!-- site specific styling -->
<style>
.flowplayer { height: 240px; width: 320px; }
</style>

<!-- flowplayer depends on jQuery 1.7.1+ (for now) -->
<script src="//code.jquery.com/jquery-1.11.0.min.js"></script>

<!-- include flowplayer -->
<script src="flowplayer-5.5.2/flowplayer.js"></script>  ←変更してみた

</head>

<body>

<div class="flowplayer" data-swf="./flowplayer-5.5.2/flowplayer.swf" data-ratio="0.4167">
<video autoplay="true">  ←自動再生
<source type="live/mp4" src="rtmp://www.my-dom.xxx/mylive/sample.mp4">  ←エイリアス名myliveを使用
</video>
</div>

<p>
<div class="flowplayer" data-swf="./flowplayer-5.5.2/flowplayer.swf" data-ratio="0.4167">
<video>
<source type="live/flv" src="rtmp://www.my-dom.xxx/mylive/test.flv">
</video>
</div>

</body>

●ライブ配信(生放送)

エンコーダーOBS(Open Broadcaster Software)のダウンロードとインストール

(webカメラの映像をサーバーに送るツール Windows PCにインストール)
OBSの公式サイトhttps://obsproject.com/からダウンロードし、インストールします。

『設定』メニューから『設定フォルダを開く』をクリック。
設定フォルダが開いたら、『profiles』フォルダのUntitled.iniファイルをコピーして、myprofile.iniとでもしておく。

設定 一般 設定プロファイル 上でコピーしておいたmylrofileに切り替える
放送設定 モード 配信
サービス Custom
FMS URL: rtmp://www.my-dom.xxx
プレイパス/ストリームキー testlive (適当な名称を付けておく)
ソース 枠内を右クリック、追加で「ビデオデバイス」を選択。


/var/www/html/crtmp/index.html を以下のように編集します。

<!doctype html>

<head>

<!-- player skin -->
<link rel="stylesheet" href="flowplayer-5.5.2/skin/playful.css">

<!-- site specific styling -->
<style>
.flowplayer { height: 240px; width: 320px; }  ←個別にstyle=でサイズを設定するときは、これはなくてもよい
</style>

<!-- flowplayer depends on jQuery 1.7.1+ (for now) -->
<script src="//code.jquery.com/jquery-1.11.0.min.js"></script>

<!-- include flowplayer -->
<script src="flowplayer-5.5.2/flowplayer.js"></script>

</head>

<body>

<div class="flowplayer" data-swf="./flowplayer-5.5.2/flowplayer.swf" data-ratio="0.4167" style="display:block; width:400px; height:300px; border:1px solid blue; background-color:pink;">  ←個別でサイズ指定
<video>
<source type="live/flv" src="rtmp://www.my-dom.xxx/testlive">  ←上で名付けたストリームキー
</video>
</div>

</body>

エンコーダーの配信開始
ブラウザで見てみる
 動画をクリックしても、映像が表示されるのに少し時間がかかる場合がある。
 また、映像は4〜5秒遅れたものになるようだ。



TOP(HOME)へ

目 次

特別企画
Raspberry Piで遊ぶ

HOME(全体のシステム構成&目次)

CentOS7
CentOS7のインストール〜ネットワークの設定ほか
CentOS7の新機能(systemdとfirewalld)
ダイレクトルールを使ったfirewallの強化
DNS(BIND)サーバー
Webサーバー
  Webでファイルの受け渡し
  アクセス解析ツールAwstats
  Wordpressでブログ構築
FTPサーバー
FTPS(FTP over SSL/TLS)
Mail(Dovecot&Postfix)サーバー
Sambaサーバー
MariaDB(MySQL)サーバー
DHCPサーバー
SSHサーバー
VNCサーバー
ストリーミングサーバーRed5
ドメインの追加

CentOS5〜6
ネットワーク&ファイアウォール(iptables)
DNS(BIND)サーバー
DHCPサーバー
メールサーバー(基本)
メールサーバー/実際の運用
Webサーバー
  WebDAVによるファイル共有
  Webでファイルのやり取り
  アクセス解析ツールawstats
  namazuで全文検索
  WordPressブログサイト構築
  EC-CUBEショッピングサイト構築
FTPサーバー
ファイルサーバー・Samba
データベースpostgreSQL
  ExcelからpostgreSQLを操作
データベースMySQL
SSHサーバー
VNC
SSL/TLSを利用した暗号化通信
openVPN
ストリーミングサーバー
    C++ RTMP Server
    Helix server Basic
ドメインの追加
Xen・仮想化
特定ディレクトリに容量制限

SELinux
SELinux基本設定
新しいタイプとポリシー・モジュールを作成してみる
マクロを利用したteファイルの記述
新しいドメインを導入してみる

coLinux
Fedora11で試す

Cプログラミング目次
X11プログラム
サイエンス・プログラム

計測・プログラム
秋月電子のデーターロガーpico ADC-16
「今すぐ使えるパソコン計測USBマイコン基板」に付属のTRZ1102
センサーの使用例

Glade2/GTK+を使ってみる
テキスト・ビューで簡易エディター
ドローイングエリアで自動描画
放物線運動(pango、cairoも試してみる)
これらを、GTK+のみで書き出す

フォントについて
ネットワーク・プログラミング
postgreSQL接続
CGI
ファイル操作

●その他
印刷機関連開発 刷版絵柄面積率測定
数独をExcelで解く