LoginSignup
13
10

More than 3 years have passed since last update.

gst-launch-1.0の典型的なパイプライン記法

Last updated at Posted at 2019-07-08

はじめに

gst-launch-1.0のパイプラインを構築するにあたり、マニュアル1では分かりにくい部分を捕捉するつもりで本稿を書いた。

典型的な記法

1. 単純な接続の例

まずは最も単純な結合を考える。下記は3つのエレメント video1, video2, video3 を結合する例である。
simple_connect.png

video1 ! video2 ! video3

と書く。

2. 多重化をほどく例

映像と音声の両方が含まれたコンテナから映像と音声を取り出す(demux)の例である。
demux_example.png

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_example.png

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_demux.png

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つの組み合わせ

を説明した。

13
10
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
13
10