ウィキのコピーミラー

これは pascal.chat のウィキのミラーです。編集、履歴、ログインはそちらで行います。

Multimedia Programming/ja

한국어 · Deutsch · English · Русский · 中文(中国) · 日本語

動画の再生

再生用アプリケーションを起動させる

コマンドラインとパラメータを知っていれば、以下のように TProcessUTF8 を使って再生用アプリを起動させられます。

pascal
uses 
  Classes, ..., LCLProc, UTF8Process;

...

implementation

procedure TMainForm.Button1Click(Sender: TObject);
var
  Player: TProcessUTF8;
begin
  Player:=TProcessUTF8.Create(nil);
  try
    Player.CommandLine:=PathToPlayer+' '+ParametersAndMediaFile;
    Player.Execute;
  finally
    Player.Free;
  end;
end;

こちらは Linux 上で起動させる具体例です。動画再生アプリ mplayer を使用します。

pascal
uses 
  Classes, ..., FileUtil, LCLProc, UTF8Process;

...

implementation

procedure TMainForm.Button1Click(Sender: TObject);
var
  Player: TProcessUTF8;
  Filename: String;
  PlayerPath: String;
  PlayerParams: String;
begin
  Filename:='/home/username/video.mpg';
  PlayerPath:=FindDefaultExecutablePath('mplayer');
  PlayerParams:='"'+Filename+'"';
  Player:=TProcessUTF8.Create(nil);
  try
    Player.CommandLine:=PlayerPath+' '+PlayerParams;
    Player.Execute;
  finally
    Player.Free;
  end;
end;

VFW - Video for Windows

Windows 上で TV チューナーカードやウェブカメラから動画の取り込みや再生といったことを VFW API を用いて行っているアプリケーション SysRec があります。

MPlayer(Linux gtk2/X 用)

mplayer はオープンソースでフリーな動画プレイヤーです。この mplayer を埋め込んだ LCL コントロールがあります。これを使えば、動画プレイヤーを構築してアプリケーションで動画を再生させることができます。以下よりダウンロードできます。

pascal
svn co https://lazarus-ccr.svn.sourceforge.net/svnroot/lazarus-ccr/components/mplayer mplayer

音声の再生

Windows 限定:Windows API を使用する

wav ファイルなどであれば以下のように Windows API を使って再生できます。

pascal
...
uses MMSystem;
...
sndPlaySound('C:\sounds\test.wav', snd_Async or snd_NoDefault);

パスやファイル名に非 ASCII 文字が含まれていても正常に動作させるには以下のようにします。

pascal
sndPlaySound(pchar(UTF8ToSys('C:\sounds\test.wav')), snd_Async or snd_NoDefault);

当然ながら、これはクロスプラットフォームではありません。

オーディオコンポーネントスィートを使用する

オーディオコンポーネントスィートに関するページをお読みください。

OpenAL ライブラリを使用する

Delphi 用のチュートリアルでしたら、こちら 1 にあります。

Free Pascal では fpc/packages/openal に置いてある OpenAL アクセス用ユニットを使用します。また、使い方のサンプルは fpc/packages/openal/examples にあります。

BASS

BASS ライブラリは http://www.un4seen.com/ および http://www.un4seen.com/forum/?topic=8682.0 よりダウンロードできます。

Bass ライブラリを使って Lazarus で書かれた Windows、Linux、Mac OSX 用 DJ アプリケーションがあります。 https://sites.google.com/site/fiensprototyping/

Audiere ライブラリ

Delphi 用にバインディングされたものです。以下のものがありますが、FPC では動作しません。

Audorra ライブラリ

Lazarus で問題なく動作します。

http://sourceforge.net/projects/audorra/

OMEGA Engine

OMEGA Engine はわずか 50kb の Omega.dll ファイル 1 つで動作するゲームエンジンです。FLAC、OGG、MP3、MP2、AMR、WMA ファイルの再生が可能です。システムにインストールされている音声コーデックを検出して使用します。

http://sourceforge.net/projects/omega-engine/files/

このプロジェクトは現在活動していませんが、とても簡単に使えるライブラリです。

pascal
Media_Play('Music.mp3', TRUE);

PortAudio

PortAudio はさまざまな言語にバインディングされている、クロスプラットフォームでオープンソースな録音・再生ライブラリです。このライブラリはサウンドデバイスにアクセスするためのものなので、ファイルの読み込み部分等は作成する必要があるでしょう。

フォーラムユーザの FredvS 氏が PortAudio ライブラリを動的読み込みできる Pascal ユニット 2 を書いています。(訳注:静的読み込み用のヘッダユニットは PortAudio の Links ページより入手できます。)

SDL + SDL_mixer

基本となる SDL ライブラリにあるサウンドシステムは、とても簡素なものです。一般には、より扱いやすい多くのサウンド API が実装されている SDL mixer を併せて使用します。

SDL ライブラリアクセス用ユニットは fpc/packages/sdl に置いてあります。

FMOD

ソースは公開されていません。非商用ソフトウェアにはフリーで使うことができますが、商用ソフトウェアではライセンス料金を払う必要があります。

Squall sound

Squall sound は FPC で正常に動作しません。また、立体音響と EAX の音響効果が使えますが、MP3、OGG、WAV フォーマットしかサポートしていません。

http://www.afterwarp.net/resources/soundlib

FPSound

FPSound は fpspreadsheet や fpvectorial と同様の設計思想に基づいて開発された新しいライブラリです。すなわち、サウンドファイルの読み込み、書き込み、再生するためのモジュールは各々独立していますし、編集方法も抽象化されています。詳しくは、FPSound を参照してください。

UOS (United OpenLib of Sound)

UOS は United OpenLib of Sound の略語です。UOS は複数のハイクオリティなオープンソースオーディオライブラリを使って作られています。

UOS で以下のことができます。

UOS はオーディオライブラリに PortAudio、SndFile、mpg123 を使用しています。

パッケージには以下のものが含まれています。

http://sites.google.com/site/fiensprototyping/U_OS_Test.tar.gz

http://github.com/fredvs/uos/

関連項目


From the Free Pascal wiki, page "Multimedia Programming/ja", as it stood on 2020-02-20 after a change by Trev, out of the wiki's dump of 2024-05-26. Copyright stays with the author who wrote it, according to the old wiki's Licensing page. If you have concerns about this material, message the admin.

第1版、最終更新:WikiArchive 。