こんにちは、ハブロビテス!
最近、私たちの会社は独自のビデオリソースを作成する必要があります。それは閉じられていますが、同時に少し公開されています。 そして最後に、それは終了し、知識とアプリケーションを共有する準備ができました。
タスクは次のとおりです。Webカメラおよび任意のファイル(直接ダウンロードから保護するためなど)から、マルチフォーマットの一方向ブロードキャストが可能なビデオリソースを作成します。ビデオボールは、さまざまな形式とビットレートでビデオを表示できます。基本は無料のサーバーでした! それほど強力ではありませんが、非常に適しています。
Intel®Xeon®CPU L5520 @ 2.27GHz
コア数16
RAM 16372 Mbビデオをデコードするとき、プロセッサの負荷は500%(約6コア)に達します。
最初から始めましょう。OSからUbuntu Server 13.04 x64を選択しました。これは、より多くの時間を費やし、実際には他のLinuxファミリーよりもよく理解しているからです。
WEBサーバーとして、nginx + php5-fpmバンドルを選択しました。これは、nginxがビデオ出力だけでなく、負荷にも非常にうまく対処できるためです。
nginxはデフォルトでストリームモジュールなしでインストールされるため、ソートしません
パッケージのビルドに必要な依存関係:
apt-get install build-essential checkinstall subversion unzip yamdi imagemagick php5-curl libssl-dev zlib1g-dev libpcre3-dev rpl php5-fpm git
ソースをダウンロード:
cd /tmp wget http://nginx.org/download/nginx-1.5.2.zip unzip nginx-1.5.2.zip -d nginx/ rm -f nginx-1.5.2.zip cd nginx
ストリーミングに必要なモジュールをダウンロードします。
mkdir modules git clone https://github.com/masterzen/nginx-upload-progress-module.git modules/nginx-upload-progress-module wget http://www.kernel-video-sharing.com/files/nginx_mod_h264_streaming-2.3.2.zip unzip nginx_mod_h264_streaming-2.3.2.zip -d modules/ rm -f nginx_mod_h264_streaming-2.3.2.zip git clone https://github.com/arut/nginx-rtmp-module.git modules/nginx-rtmp-module
便宜上、インストールスクリプトを作成します。
touch nginx.sh nano nginx.sh
コンテンツ付き
./configure \ --conf-path=/etc/nginx/nginx.conf \ --error-log-path=/var/log/nginx/error.log \ --pid-path=/var/run/nginx.pid \ --lock-path=/var/lock/nginx.lock \ --http-log-path=/var/log/nginx/access.log \ --http-client-body-temp-path=/var/lib/nginx/body \ --http-proxy-temp-path=/var/lib/nginx/proxy \ --http-fastcgi-temp-path=/var/lib/nginx/fastcgi \ --with-debug \ --with-http_stub_status_module \ --with-http_secure_link_module \ --with-http_gzip_static_module \ --with-http_realip_module \ --with-http_mp4_module \ --with-http_flv_module \ --with-http_ssl_module \ --with-http_dav_module \ --with-md5=/usr/lib \ --add-module=modules/nginx-upload-progress-module \ --add-module=modules/nginx-rtmp-module \ --add-module=modules/nginx_mod_h264_streaming-2.3.2 make -j16 (16 - . . "grep -c processor /proc/cpuinfo") checkinstall
おそらくコンパイルプロセス中にエラーが発生する可能性があります。 したがって、これを行います。
auto / cc / gccファイルで、次の行にコメントします。
以下を開始します。
sh nginx.sh
インストール後、必要なシンボリックリンクとディレクトリを作成します(作成されていない場合):
ln -s /usr/local/nginx/sbin/nginx /usr/sbin/nginx mkdir -p /var/lib/nginx/body mkdir /var/lib/nginx/proxy mkdir /var/lib/nginx/fastcgi chown -R root /var/lib/nginx/ wget http://nginx-init-ubuntu.googlecode.com/files/nginx-init-ubuntu_v2.0.0-RC2.tar.bz2 tar -jxvf nginx-init-ubuntu_v2.0.0-RC2.tar.bz2 -C /etc/init.d/ chmod 715 /etc/init.d/nginx /usr/sbin/update-rc.d -f nginx defaults rm -f nginx-init-ubuntu_v2.0.0-RC2.tar.bz2 rpl 'DAEMON=/usr/local/sbin/nginx' 'DAEMON=/usr/local/nginx/sbin/nginx' /etc/init.d/nginx rpl 'NGINX_CONF_FILE="/usr/local/nginx/conf/nginx.conf"' 'NGINX_CONF_FILE="/etc/nginx/nginx.conf"' /etc/init.d/nginx
これで、nginxとphp5-fpmのインストールが完了しました。
後で設定に戻ります。
次の行はffmpegです。 apt-getをインストールすることはお勧めできません。プロジェクトは既に廃止されており、その多くは機能しません。 適切で最新の指導を求めて、私はほぼ2晩を過ごしました。 私は隠しません、インストールに非常に良いパックを見つけました。
奇妙なことに、このプロジェクトはwww.ffmpeginstaller.comと呼ばれ、パブリックドメインのすべてのインストーラーでさえ、50ドルのサービスを提供しています。
そして、すべてが非常に簡単に行われます。
パッケージをダウンロードします。
cd /tmp wget http://mirror.ffmpeginstaller.com/old/scripts/ffmpeg7/ffmpeginstaller.7.4.tar.gz tar -xzf ffmpeginstaller.7.4.tar.gz ffmpeg cd ffmpeg
最初のインストール後、...十分なコーデックがないことに気付きました。 巻き戻し<<<インストール前にコーデックを配置します。
apt-get install libvpx
ffmpeg.shを開き、コーデック--enable-libvpxをインストールに追加します。
nano ffmpeg.sh ./configure --prefix=$INSTALL_DDIR --enable-shared --enable-nonfree \ --enable-gpl --enable-pthreads --enable-libopencore-amrnb --enable-decoder=liba52 \ --enable-libopencore-amrwb --enable-libfaac --enable-libmp3lame \ --enable-libtheora --enable-libvorbis --enable-libx264 --enable-libxvid --enable-libvpx \ --extra-cflags=-I/usr/local/cpffmpeg/include/ --extra-ldflags=-L/usr/local/cpffmpeg/lib \ --enable-version3 --extra-version=syslint
これで準備は完了です。 インストールできます:sh start.sh
鉄の能力に応じて、インストールには約15〜20分かかります。 お茶(またはコーヒー)を飲むことができます。
インストール後、次を実行します。
hash x264 ffmpeg ffplay
PSでクリッピングを見る
それだけです おめでとう、私たちはそれをやった!
これらのツールを管理するには、CMSが必要です。
選択肢はほとんどありませんでしたが、2つしかありませんでした(私のニーズに応えたのは積雲クリップだけでした)。
ソースコードは明確であり、あまり面倒なことなくコンポーネントを把握しました。 プロジェクトをmysqlからmysqliに書き換える必要がありました。 すべてのCMSコードは構造化され、温度は個別に柔軟に設定されます。 疑似YouTubeテンプレートをベースとして選択しました。
プレーヤーを完全にひねりました。 jwplayerはビデオストリームを切り替えることができませんでした。 githubを少し登ると、jQplayerという単純な名前の単純なプレーヤーが見つかりました。
このプレーヤーは、ストリームを簡単に切り替えることができます。 確かに、マイナスが1つあります。 ファイルの再生は最初から始まります。 そして、これは問題ではありませんでした-ビデオファイルは簡単にすぐにnginxをカットできます。
次に、プロジェクトのWebホスティングを構成する必要があります。
このプロセスを自動化する小さなスクリプトを同封します。 .HtaccessはCMSにバンドルされており、nginxはそれを理解することを拒否しているため、このWebサーバーのニーズに合わせて書き直しました。
以上です。 この構成は、ストリームストリームだけでなく、さまざまな形式でビデオをエンコードできます。 この記事が誰にとっても興味深いものである場合、私は喜んでストリーミングの実例を挙げます。
残念ながら、完全な内容を表示することはできませんが、
stream.etagi.comで取得したものは
次のとおりです。ご清聴ありがとうございました。
PS1 ffmpegを構築するより穏やかな方法を見つけました。 以下で修正。1. echo "deb
www.deb-multimedia.org squeeze main non-free"»/
etc/apt/sources.list2. apt-getアップデート
3. apt-get install deb-multimedia-keyring
4. apt-getアップデート
5. apt-get remove ffmpeg
6. apt-get purge ffmpeg
7. apt-get autoremove
8. apt-get install ffmpeg x264(インストールは必要な依存関係をすべて引き上げます)
9. ffmpeg -version
(出力は、ポイント5から9からではない場合、廃止されるべきではありません)
PS2メインデザイン機能dotdebのPHP 5.3でのみ動作します