FFMPEGによるストリーミングサーバの構築

2003年8月2日(土)
kmlug 技術交流会資料
Ryoichi Rio Murashima

本資料は、2003年8月2日(土)に開催された「kmlug 技術交流会」での発表資料 に加筆修正したものです。


1. FFMPEGとは

FFMPEGは、Linux上で開発されたオーディオとビデオの録画、変換、配信を行うためのソフトウェアです。(Windowsを含むほとんどのOS上でコンパイル可能) FFMPEGには、libavcodecと呼ばれるオーディオ/ビデオコーデックが含まれていて、Mplayer、xine、LIVES、avifileなど、Linuxを中心にさまざまなソフトウェアで利用されています。

2. FFMPEGのコンポーネント

FFMPEGは、以下のコンポーネントから構成されています。

ffmpeg

ビデオファイルフォーマット変換用のコマンドラインツール。ビデオキャプチャ カードからのリアルタイムでの動画取り込みとエンコーディングもサポート。

ffserver

HTTPによるライブ配信用のストリーミングサーバ。(RTSPでのライブ配信も開発中)

libavcodec

ffmpegで使われているすべての オーディオ/ビデオコーデックが含まれたライ ブラリ。より高い性能や再利用性を保証するため、大半は、スクラッチから開 発されている。

libavformat

オーディオ/ビデオファイルフォーマットの解析/生成機能を含むライブラリ。

3. FFMPEGでサポートされるファイルフォーマットとコーデック

別資料参照

4. FFMPEGのインストール

4.1 前準備

音声のエンコーディングにMP3を使いたい場合は lameを、 vorbisを使いたい ときは libvorbisをインストールします。なお、lameをビルドするにはnasmが 必要です。

4.2 FFMPEGのインストール

ffmpeg.sourceforge.net から、最新のtar玉を入手しmake & make install
※http://shino.pos.to/linux/ffmpeg.html に、ffmpeg-0.4.yyyymmdd.nosrc.rpm あり。

5. ffserverの環境設定

ffserver.conf というffserverの環境設定ファイルのサンプルが docディレク トリの下にありますので、これを参考に、環境設定ファイルを作成します。

6. FFMPEGの起動

ビデオキャプチャカードやビデオカメラ用ドライバのインストールについては 割愛します。

ffserverとffmpegを起動します。

 $ ffserver -f ffserver.conf 
 $ ffmpeg -vd /dev/video0 http://localhost:8090/feed1.ffm

(murashima.netにおける起動/停止スクリプトの例は別紙参照)

7. ビデオストリームの再生

mplayer や Windows Media Playerなどを使って、ストリーミングサーバのURLを指定し、ビデオを再生します。
http://murashima.net:8090/test.asf

8. murashima.net における運用の実際

murashima.netでは、以下の仕様でストリーミングデータを配信していますが、 個人で利用する範囲では、クオリティ上の問題はありません(同時配信*3クラ イアント程度。それ以上は未確認)。
ビデオとオーディオを同一ストリームで配信すると(これが普通ですが)、 Sound: Recording overrun が多発し、オーディオが途切れてしまう現象が発 生。サーバスペックの問題なのか?? 別ストリームで配信するとうまくいく ので、現時点では分けて配信しています。
森山@崇城大さんの見解によれば、ビデオとオーディオの同期処理にCPUパワーを 取られてしまうからではないか、とのこと。当サイトでは完全な同期はとれて いないのかもしれませんが、個人的には全然気にならないので問題なしです。

サーバのスペック

  model name      : AMD-K6(tm) 3D processor
  cpu MHz         : 350.812 MHz
  cache size      : 64 KB
  MemTotal        : 126596 kB
  kernel          : Linux version 2.4.20-0vl29.1
  Video card      : BT878(Lifeview FlyVideo 98 LR)
  Video camera    : SONY HANDYCAM
  Sound card      : ESS ES1869 Plug and Play AudioDrive

ストリーム配信仕様

ビデオ

  Format asf
  VideoFrameRate 15 fps
  VideoSize 352x240 
  VideoBitRate 256 kbps
  VideoGopSize 30
  StartSendOnKey

オーディオ

  Format mp2
  AudioCodec mp3
  AudioBitRate 32 kbps
  AudioChannels 1
  AudioSampleRate 22050 kHz

9. 参考文献


Copyright (c) 2002-2004 Ryoichi "Rio" MURASHIMA
This document was generated on 2 August 2003 using texi2html 1.56k.

[戻る] [R!o Interactive top]