Mediastreamer2



Mediastreamer2






http://www.linphone.org/eng/documentation/dev/mediastreamer2.html

Mediastreamer2-マルチメディアストリーミングエンジン

Mediastreamer2は 音声/ビデオテレフォニーアプリケーションに特化した強力で軽量化されたストリーミングエンジン

音声/ビデオのキャプチャ、エンコードとデコード、レンダリングなど、linphoneでのマルチメディアストリームのすべての送受信を担当するのはライブラリです。



特徴

  • alsaデバイス、ossデバイス、windowswaveapiデバイスへの読み取り/書き込み
  • RTPパケットを送受信します
  • 次の形式をエンコードおよびデコードします。 speex、G711、GSM、H263、theora、iLBC、MPEG4、およびH264。
  • wavファイルからの読み取りとwavファイルへの書き込み
  • WebカメラからYUV画像を読み取ります(video4linux v1またはv2ドライバーがある場合)
  • YUV画像を表示します(WindowsでSDLライブラリまたはネイティブAPIを使用)
  • デュアルトーン生成
  • speexライブラリの特別なエコーキャンセラーアルゴリズムを使用したエコーキャンセル
  • 音声会議
  • FIRフィルターを使用したオーディオパラメトリックイコライザー
  • ボリュームコントロール、自動ゲインコントロール

Mediastreamer2は動的プラグインで拡張でき、現在H264およびILBCコーデックプラグインが利用可能です。



移植性

  • Linux / x86 Linux / x86_64
  • 組み込みLinux:ARMとBlackfin
  • Windows XP、Vistaおよび7
  • Mac OS X
  • Google Android

デザインと原則

各処理エンティティは、MSFilterオブジェクト内に含まれています。 MSFilterには、他のMSFilterとの間で接続するために使用できる入力および/または出力があります。



理解するための簡単な例:

  • MSRtpRecvは、ネットワークからRTPパケットを受信し、パケット化を解除して、唯一の出力に送信するMSFilterです。
  • MSSpeexDecは、これらがspeexでエンコードされたパケットであると想定して入力のすべてを取得し、それらをデコードして結果を出力に出力するMSFilterです。
  • MSFileRecは、入力のすべてを取得してwavファイルに書き込むMSFilterです(入力が16ビット線形pcmであると想定)。

MSFilterを相互に接続して、フィルターチェーンにすることができます。上記の3つの例を組み立てると、RTPパケットを受信する処理チェーンを取得し、それらをデコードして、圧縮されていない結果をwavファイルに書き込みます。

メディア処理作業の実行は、MSTickerオブジェクトによってスケジュールされます。MSTickerオブジェクトは、管理するすべてのMSFilterチェーン内のデータを処理するために10ミリ秒ごとにウェイクアップするスレッドです。複数のMSTickerを同時に使用できます。たとえば、1つはオーディオフィルター用、1つはビデオフィルター用、または1つはそれが実行されるマシンの各プロセッサで使用できます。

Mediastreamer2は使いやすいです

単にオーディオストリームとビデオストリームを作成することを目的としている場合は、オーディオストリームとビデオストリームを作成するための単純なAPIがaudiostream.hとvideostream.hで定義されています。

mediastreamer2に新しい機能を追加することを目的としている場合は、mediastreamer2フィルターの実装が非常に簡単であることを知って喜ぶでしょう。 mediastreamer2フィルターのカプセル化は非常に軽いです。

この軽量化されたフレームワークのおかげで、開発者は重要なことに集中できます。信号/画像処理アルゴリズムの実装です。

ドキュメンテーション

Mediastreamer2は、doxygenを使用して文書化されています。あなたはできる APIドキュメントを閲覧する ここに。

Mediastreamer2は組み込みシステムに適しています

  • Mediastreamer2は軽量です。たとえば、linux / x86では、フル機能の共有ライブラリは約800koを取り除いて、-g(デバッグ)でコンパイルします。 mediastreamer2チェーン内でメディアデータを伝送するデータメッセージは、有名なsys-Vmblk_t構造を使用して最適化されます。これは、可能な限りコピーを回避し、特にビデオストリームを処理するときに非常に一般的な低コストのフラグメンテーション/再アセンブル操作を可能にするためです。
  • Mediastreamer2はCで書かれています
  • Mediastreamer2はgccを使用してarmでコンパイルします。
  • Mediastreamer2には、最小限の依存関係としてoRTPとlibcのみがあります。その他(ffmpeg、speex、alsa ...)は、すべての機能が必要な場合はオプションで追加できます。
  • プラグインアーキテクチャのおかげで、mediastreamer2は、ビデオコーデックdspなどのハードウェアコーデックとインターフェイスするように拡張できます。

http://download-mirror.savannah.gnu.org/releases/linphone/mediastreamer/doc/group__mediastreamer2.html

詳細な説明

mediastreamer2バージョン2.4.0

参照:
http://savannah.gnu.org/projects/linphone

mediastreamer2とは

mediastreamer2は、オーディオおよびビデオストリームを作成するための強力なエンジンです。 mediastreamer2はGPL(COPYING)です。ご使用前にライセンス内容をご理解ください!

GPLライセンスによって付与された権利を超えてこのライブラリを使用する場合は、antisipに連絡してください。< [メール保護] >。

いくつかの定義。

フィルタ:フィルタは、データを処理するmediastreamer2コンポーネントです。フィルタには、0個または複数のINPUTピンと0個または複数のOUTPUTピンがあります。フィルタの可能な使用法のリストは次のとおりです。

 capture audio or video data. play audio or display video data. send or receive RTP data. encode or decode audio or video data. transform (resize video, resample audio...) data. duplicate any kind of data. mix audio/video data. 

グラフ:グラフは、相互に接続されたフィルターのマネージャーです。 OUTPUTピンからINPUTピンにデータを転送し、フィルターの実行を担当します。

mediastremer2を使用するにはどうすればよいですか?

Mediastreamer2は、さまざまな目的に使用できます。主な用途は、RTPオーディオおよびビデオセッションを管理することです。 APIを使用してフィルターを作成し、グラフでそれらをリンクする必要があります。次に、ティッカーAPIは、グラフの開始と停止に役立ちます。

基本的なグラフサンプル:

 AUDIO CAPTURE --> ENCODE --> RTP FILTER --> FILTER --> FILTER 

上のグラフは3つのフィルターで構成されています。最初のものには入力がありません。ttはドライバから直接オーディオデータをキャプチャし、それをOUTPUTピンに提供します。このデータはエンコーダのINPUTピンに送信され、エンコーダはもちろんデータをエンコードしてOUTPUTピンに送信します。このピンは、RTPパケットを作成して送信できるフィルターのINPUTピンに接続されています。

モジュラー設計により、「ENCODE FILTER」を別の形式に置き換えるだけで、さまざまな形式でエンコードできます。 mediastreamer2には、g711u、g711a、speex、gsmの内部サポートが含まれています。動的にロードできる新しいフィルターを実装することで、新しいエンコード形式を追加できます。

既存のフィルターのリスト。

mediastreamer2は、すでに多数のフィルターセットを提供しています。組み込みフィルターの完全なリストは次のとおりです。

 All supported platforms: RTP receiver RTP sender tee (duplicate data)
 Audio Filters: audio capture audio playback mme API (windows) alsa API (linux) oss API (linux) arts API (linux) portaudio API (macosx and other) macsnd API (native macosx API -please do more testing...-) several audio encoder/decoder: PCMU, PCMA, speex, gsm wav file reader. wav file recorder. resampler. conference bridge. volume analyser. acoustic echo canceller. dtmf generation filter.
 Video Filters: video capture v4w API (windows) directshow API (windows) video4linux API (linux) video display v4w API (windows) SDL API (linux, macosx...) several audio encoder/decoder: H263-1998, MP4V-ES, theora image resizer. format converter. (RBG24, I420...)
 Plugin Filters: iLBC decoder/encoder. 

http://mirror.yongbok.net/nongnu/linphone/mediastreamer/doc/

Project : mediastreamer2 - a modular sound and video processing and streaming Email : simon.morlat_at_linphone.org License : GPL Home Page : http://savannah.gnu.org/projects/linphone Mediastreamer2 is a GPL licensed library to make audio and video real-time streaming and processing. Written in pure C, it is based upon the ortp library. Design: ------ Using mediastreamer2 will allow you to chain filters in a graph. Each filter will be responsible for doing some kind of processing and will deliver data to the next filter. As an example, you could get some data from network and unpack it in an RTP filter. This RTP filter will deliver the data to a decoder (speex, G711...) which will deliver it to a filter that is able to play the PCM data or record it into a .wav file. There is a doxygen documentation for more information. Features: -------- mediastreamer2 already provides a large set of filters. Here is a complete list of built-in filters. All supported platforms: * RTP receiver * RTP sender * tee (duplicate data) Audio Filters: * audio capture * audio playback * mme API (windows) * alsa API (linux) * oss API (linux) * arts API (linux) * portaudio API (macosx and other) * macsnd API (native macosx API -please do more testing...-) * aq (audio queue, macos API too) * several audio encoder/decoder: PCMU, PCMA, speex, gsm * wav file reader. * wav file recorder. * resampler. * conference bridge. * volume analyser, gain control, and automatic gain control. * acoustic echo canceller. * dtmf generation filter. * parametric equalizer, can be used to compensate the spectral response of a bad quality speaker or microphone Video Filters: * video capture * v4w API (windows, deprecated) * directshow API (windows) * video4linux and video4linux2 APIs (linux) * video display * v4w API (windows) * SDL API (linux, macosx...) * several audio encoder/decoder: H263-1998, MP4V-ES, theora * image resizer. * format converter. (RBG24, I420...) Plugin Filters: * iLBC decoder/encoder. * H264 codec, based on x264 Note that, you can build your own components/filters to do your own processing or support other codecs. Installation procedure: ----------------------- The program is known to run on linux, but might work on any unix and windows systems. $> ./configure $> make $> su -c 'make install' Contact information: -------------------- For more information on mediastreamer2, any contributions, or any remarks, you can contact me at . Use the *linphone* mailing list for question about mediastreamer2. . Subscribe by writing to:  with a subject set to 'subscribe'. Commercial support and licensing is provided by Belledonne Communications http://www.belledonne-communications.com