はじめに
gst-launch-1.0のパイプラインを構築するにあたり、マニュアル1では分かりにくい部分を捕捉するつもりで本稿を書いた。
典型的な記法
1. 単純な接続の例
まずは最も単純な結合を考える。下記は3つのエレメント video1, video2, video3 を結合する例である。
video1 ! video2 ! video3
と書く。
2. 多重化をほどく例
映像と音声の両方が含まれたコンテナから映像と音声を取り出す(demux)の例である。
container1 ! demux name=aaa aaa.video_0 ! video1 aaa.audio_0 ! audio1
文は次のように3つに分かれている。
- container1 ! demux name=aaa
- aaa.video_0 ! video1
- aaa.audio_0 ! audio1
分岐するdemuxのところで識別子としてaaaを与えている。スペースが区切り文字となっているため、video1とaaa.audio_0が接続しているように見えるがそうではない。
3. 多重化する例
異なるソースからの映像と音声を一つのコンテナにまとめる多重化(mux)の例である。
mux name=bbb ! container2 video3 ! bbb.video_0 audio2 ! bbb.audio_0
こちらも文法を考えると次の3つに分かれている。
- video3 ! bbb.video_0
- audio2 ! bbb.audio_0
- mux name=bbb ! container2
muxのところで識別子bbbを与えているため、パイプラインでは先頭に来ている。
4. 上の1~3を合わせた例
mux name=bbb ! container2 container1 ! demux name=aaa aaa.video_0 ! video1 ! video2 ! video3 ! bbb.video_0 aaa.audio_0 ! audio1 ! audio2 ! bbb.audio_0
こちらもパースして見ると図の通りということが分かる。
- container1 ! demux name=aaa
- aaa.video_0 ! video1 ! video2 ! video3 ! bbb.video_0
- aaa.audio_0 ! audio1 ! audio2 ! bbb.audio_0
- mux name=bbb ! container2
まとめ
この記事ではgst-launch-1.0の典型的なパイプラインの記述方法について
- 通常の接続
- 多重化の分解
- 多重化の実施
- 上記3つの組み合わせ
を説明した。