さて、動画の配信はこれまでのツール群で一応の完成を見ることができました。
しかし実際に運用するときにはいくつかの機能を追加したくなります。
そんな機能が以下のようなものです。(私が思ったもの。。。)
* 自前では接続できるネットワーク帯域が不足するのでUstreamにも配信する
* 見ているカメラ以外はカメラの状態を見るためのサムネイル画像を作成する。
* ねこが面白いことをやってる!そのときを録画する。
* 10時間分の自動録画システム。見返していろいろねこの面白い姿を確認。
* カメラが正常に動作しているか映像の確認
これらの機能を実現するのに重宝なのがffmpegです。 日々機能が追加されている素晴らしいソフトウエアです。
crtmpserverから動画を取り出して、いろいろと加工、出力することができます。
まずは、このffmpegを使えるように準備します。
ffmpegは日々活発に更新が行われているので、できればソースコードからコンパイルするのが良いと思います。
Windowsバージョンもあり、これはバイナリ版で入手することもできます。(更新され続けています)
ffmpegコンパイルガイドがありますので、これを使ってみます。
こちらはUbuntu向けなので好都合デス。。。
ffmpegにはいろいろな圧縮・伸長を行うためのコーデックがサポートされていますが、すべてのコーデックを必要とするわけではありません。
自分が使いたいものを入れればよいと思います。
今回は最新のコーデックであるlibx265は使わないので、インストールしません。
なお、サーバにはXウィンドウシステムはインストールしていないので、GUIに関連するものもインストール対象外です。
ページにある、コマンドをコピペしてサーバ上でコマンドを実行していきます。
まずはコンパイル環境の準備。依存するライブラリをインストールしておきます。
sudo apt-get update
sudo apt-get -y install autoconf automake build-essential libass-dev libfreetype6-dev \
libtheora-dev libtool libvorbis-dev \
%pkg-config texinfo zlib1g-dev
Xウィンドウのないサーバ環境ではX関連の依存パッケージもインストール対象から外します。 libsdl2-dev libva-dev libvdpau-dev libxcb1-dev libxcb-shm0-dev libxcb-xfixes0-dev これらは不要なのでコマンドラインから外しています。
ffmpegをコンパイルするための作業フォルダを作ります。
エンコーダの性能を高めるために高速なコードを生成するアセンブラー機能を入れておきます。 これ使わないと速度が超遅くなるので必須です。
sudo apt-get install yasm
libx264エンコード用コーデックをインストールします。
sudo apt-get install libx264-dev
音声系のコーデックも音声を使わないので、インストールはしません。
Google系の映像コーデック libvpx も現時点では使わないので、対象外。
で、ffmpeg本体のコンパイル。最新のソースをダウンロードしてコンパイルしてくれます。
cd ~/ffmpeg_sources
wget http://ffmpeg.org/releases/ffmpeg-snapshot.tar.bz2
tar xjvf ffmpeg-snapshot.tar.bz2
cd ffmpeg
PATH="$HOME/bin:$PATH" PKG_CONFIG_PATH="$HOME/ffmpeg_build/lib/pkgconfig" ./configure \
--prefix="$HOME/ffmpeg_build" \
--pkg-config-flags="--static" \
--extra-cflags="-I$HOME/ffmpeg_build/include" \
--extra-ldflags="-L$HOME/ffmpeg_build/lib" \
--bindir="$HOME/bin" \
--enable-gpl \
--enable-libass \
--enable-libfreetype \
--enable-libvorbis \
--enable-libx264 \
--enable-nonfree
PATH="$HOME/bin:$PATH" make
make install
make distclean
hash -r
make install がシステムにffmpegをインストールする命令です。これはrootで実行する必要があります。
sudo make install でインストールしましょう。
一度ログアウト・ログインしなおせばffmpeg完成。
ffmpegを実行してみます。 こんなメッセージが出力されればオッケイです。
daimao@vm:~$ ffmpeg
ffmpeg version N-83533-gada281d Copyright (c) 2000-2017 the FFmpeg developers
built with gcc 5.4.0 (Ubuntu 5.4.0-6ubuntu1~16.04.4) 20160609
configuration: --prefix=/home/daimao/ffmpeg_build --pkg-config-flags=--static --extra-cflags=-I/home/daimao/ffmpeg_build/include --extra-ldflags=-L/home/daimao/ffmpeg_build/lib --bindir=/home/daimao/bin --enable-gpl --enable-libass --enable-libfdk-aac --enable-libfreetype --enable-libmp3lame --enable-libopus --enable-libtheora --enable-libvorbis --enable-libvpx --enable-libx264 --enable-nonfree
libavutil 55. 47.100 / 55. 47.100
libavcodec 57. 80.100 / 57. 80.100
libavformat 57. 66.102 / 57. 66.102
libavdevice 57. 2.100 / 57. 2.100
libavfilter 6. 73.100 / 6. 73.100
libswscale 4. 3.101 / 4. 3.101
libswresample 2. 4.100 / 2. 4.100
libpostproc 54. 2.100 / 54. 2.100
Hyper fast Audio and Video encoder
usage: ffmpeg [options] [[infile options] -i infile]... {[outfile options] outfile}...
Use -h to get full help or, even better, run 'man ffmpeg'
daimao@vm:~$
スーパーツールで空をとぶのニャっ!
ねこライブ配信システム 全体(その1)
ねこライブ配信システム gstreamerでカメラから転送(その2)
ねこライブ配信システム v4l-utilsでカメラ制御(その3)
ねこライブ配信システム crtmpserver配信の主役(その4)
ねこライブ配信システム WEBで動画再生FlowPlayer(その5)
ねこライブ配信システム 便利ツールffmpegの準備(その6)
ねこライブ配信システム ffmpegでサムネイル生成(その7)