SlideShare a Scribd company logo
Suche senden
Hochladen
Gstreamer Basics
Melden
Teilen
S
Seiji Hiraki
Embedded Software Engineer um Genetec, JP Tokyo
Folgen
•
0 gefällt mir
•
1,155 views
1
von
28
Gstreamer Basics
•
0 gefällt mir
•
1,155 views
Melden
Teilen
Jetzt herunterladen
Downloaden Sie, um offline zu lesen
Technologie
This slide presents an overview of the GStreamer framework.
Mehr lesen
S
Seiji Hiraki
Embedded Software Engineer um Genetec, JP Tokyo
Folgen
Recomendados
About GStreamer 1.0 application development for beginners von
About GStreamer 1.0 application development for beginners
Shota TAMURA
9.8K views
•
63 Folien
いまさら聞けない!CUDA高速化入門 von
いまさら聞けない!CUDA高速化入門
Fixstars Corporation
5.3K views
•
90 Folien
マルチコアを用いた画像処理 von
マルチコアを用いた画像処理
Norishige Fukushima
51.6K views
•
142 Folien
カスタムメモリマネージャと高速なメモリアロケータについて von
カスタムメモリマネージャと高速なメモリアロケータについて
alwei
28.9K views
•
33 Folien
1076: CUDAデバッグ・プロファイリング入門 von
1076: CUDAデバッグ・プロファイリング入門
NVIDIA Japan
21K views
•
51 Folien
こわくない Git von
こわくない Git
Kota Saito
881.3K views
•
186 Folien
Más contenido relacionado
Was ist angesagt?
DockerコンテナでGitを使う von
DockerコンテナでGitを使う
Kazuhiro Suga
18.8K views
•
8 Folien
CUDAプログラミング入門 von
CUDAプログラミング入門
NVIDIA Japan
29.1K views
•
65 Folien
PHPからgoへの移行で分かったこと von
PHPからgoへの移行で分かったこと
gree_tech
6.4K views
•
39 Folien
.NET Core 3.0時代のメモリ管理 von
.NET Core 3.0時代のメモリ管理
KageShiron
2K views
•
40 Folien
PyOpenCLによるGPGPU入門 von
PyOpenCLによるGPGPU入門
Yosuke Onoue
14.9K views
•
41 Folien
TensorFlow XLAは、 中で何をやっているのか? von
TensorFlow XLAは、 中で何をやっているのか?
Mr. Vengineer
7.1K views
•
101 Folien
Was ist angesagt?
(20)
DockerコンテナでGitを使う von Kazuhiro Suga
DockerコンテナでGitを使う
Kazuhiro Suga
•
18.8K views
CUDAプログラミング入門 von NVIDIA Japan
CUDAプログラミング入門
NVIDIA Japan
•
29.1K views
PHPからgoへの移行で分かったこと von gree_tech
PHPからgoへの移行で分かったこと
gree_tech
•
6.4K views
.NET Core 3.0時代のメモリ管理 von KageShiron
.NET Core 3.0時代のメモリ管理
KageShiron
•
2K views
PyOpenCLによるGPGPU入門 von Yosuke Onoue
PyOpenCLによるGPGPU入門
Yosuke Onoue
•
14.9K views
TensorFlow XLAは、 中で何をやっているのか? von Mr. Vengineer
TensorFlow XLAは、 中で何をやっているのか?
Mr. Vengineer
•
7.1K views
CPU / GPU高速化セミナー!性能モデルの理論と実践:理論編 von Fixstars Corporation
CPU / GPU高速化セミナー!性能モデルの理論と実践:理論編
Fixstars Corporation
•
1.6K views
深層学習フレームワークにおけるIntel CPU/富岳向け最適化法 von MITSUNARI Shigeo
深層学習フレームワークにおけるIntel CPU/富岳向け最適化法
MITSUNARI Shigeo
•
3.9K views
C/C++プログラマのための開発ツール von MITSUNARI Shigeo
C/C++プログラマのための開発ツール
MITSUNARI Shigeo
•
13.8K views
ARM CPUにおけるSIMDを用いた高速計算入門 von Fixstars Corporation
ARM CPUにおけるSIMDを用いた高速計算入門
Fixstars Corporation
•
7K views
CPU / GPU高速化セミナー!性能モデルの理論と実践:実践編 von Fixstars Corporation
CPU / GPU高速化セミナー!性能モデルの理論と実践:実践編
Fixstars Corporation
•
1.7K views
いまさら聞けないarmを使ったNEONの基礎と活用事例 von Fixstars Corporation
いまさら聞けないarmを使ったNEONの基礎と活用事例
Fixstars Corporation
•
5.1K views
Dockerからcontainerdへの移行 von Akihiro Suda
Dockerからcontainerdへの移行
Akihiro Suda
•
7.5K views
組み込みでこそC++を使う10の理由 von kikairoya
組み込みでこそC++を使う10の理由
kikairoya
•
27K views
例外設計における大罪 von Takuto Wada
例外設計における大罪
Takuto Wada
•
68.5K views
第 1 回 Jetson ユーザー勉強会 von NVIDIA Japan
第 1 回 Jetson ユーザー勉強会
NVIDIA Japan
•
15.7K views
いつやるの?Git入門 v1.1.0 von Masakazu Matsushita
いつやるの?Git入門 v1.1.0
Masakazu Matsushita
•
231.7K views
1072: アプリケーション開発を加速するCUDAライブラリ von NVIDIA Japan
1072: アプリケーション開発を加速するCUDAライブラリ
NVIDIA Japan
•
7.6K views
ゴリラテスト モバイルゲームのUIを自動的に検出・操作する モンキーテスト von KLab Inc. / Tech
ゴリラテスト モバイルゲームのUIを自動的に検出・操作する モンキーテスト
KLab Inc. / Tech
•
2.3K views
20分くらいでわかった気分になれるC++20コルーチン von yohhoy
20分くらいでわかった気分になれるC++20コルーチン
yohhoy
•
13K views
Similar a Gstreamer Basics
ネットワークコマンド入力に対応したツール事例 von
ネットワークコマンド入力に対応したツール事例
fumoto kazuhiro
1.4K views
•
20 Folien
Devsumi2013 Ruby開発者のみなさん、mrubyで楽しく快適な組み込みアプリ開発を始めませんか? von
Devsumi2013 Ruby開発者のみなさん、mrubyで楽しく快適な組み込みアプリ開発を始めませんか?
Takashi Sogabe
5K views
•
43 Folien
Fluentd1.2 & Fluent Bit von
Fluentd1.2 & Fluent Bit
Seiya Mizuno
3.2K views
•
38 Folien
Golang tokyo #7 qtpm von
Golang tokyo #7 qtpm
Yoshiki Shibukawa
3.4K views
•
15 Folien
20191120 beyondstudy#21 kitaoka von
20191120 beyondstudy#21 kitaoka
beyond Co., Ltd.
673 views
•
66 Folien
デブサミ2013【15-E-2】Ruby開発者のみなさん、mrubyで楽しく快適な組み込みアプリ開発を始めませんか? von
デブサミ2013【15-E-2】Ruby開発者のみなさん、mrubyで楽しく快適な組み込みアプリ開発を始めませんか?
Developers Summit
1.5K views
•
43 Folien
Similar a Gstreamer Basics
(20)
ネットワークコマンド入力に対応したツール事例 von fumoto kazuhiro
ネットワークコマンド入力に対応したツール事例
fumoto kazuhiro
•
1.4K views
Devsumi2013 Ruby開発者のみなさん、mrubyで楽しく快適な組み込みアプリ開発を始めませんか? von Takashi Sogabe
Devsumi2013 Ruby開発者のみなさん、mrubyで楽しく快適な組み込みアプリ開発を始めませんか?
Takashi Sogabe
•
5K views
Fluentd1.2 & Fluent Bit von Seiya Mizuno
Fluentd1.2 & Fluent Bit
Seiya Mizuno
•
3.2K views
Golang tokyo #7 qtpm von Yoshiki Shibukawa
Golang tokyo #7 qtpm
Yoshiki Shibukawa
•
3.4K views
20191120 beyondstudy#21 kitaoka von beyond Co., Ltd.
20191120 beyondstudy#21 kitaoka
beyond Co., Ltd.
•
673 views
デブサミ2013【15-E-2】Ruby開発者のみなさん、mrubyで楽しく快適な組み込みアプリ開発を始めませんか? von Developers Summit
デブサミ2013【15-E-2】Ruby開発者のみなさん、mrubyで楽しく快適な組み込みアプリ開発を始めませんか?
Developers Summit
•
1.5K views
Cocos2d-x 3.0を使ったゲーム “消滅都市” の開発事例 von gree_tech
Cocos2d-x 3.0を使ったゲーム “消滅都市” の開発事例
gree_tech
•
39.6K views
Prometheus超基礎公開用.pdf von 勇 黒沢
Prometheus超基礎公開用.pdf
勇 黒沢
•
24 views
EnrootとPyxisで快適コンテナ生活 von Kuninobu SaSaki
EnrootとPyxisで快適コンテナ生活
Kuninobu SaSaki
•
883 views
NGINX製品の最新機能アップデート情報 von NGINX, Inc.
NGINX製品の最新機能アップデート情報
NGINX, Inc.
•
262 views
IBM Rational Team Concertに触れてみた von You&I
IBM Rational Team Concertに触れてみた
You&I
•
1.9K views
45分で理解する 最近のスパコン事情 斉藤之雄 von Yukio Saito
45分で理解する 最近のスパコン事情 斉藤之雄
Yukio Saito
•
2.7K views
HSM用ミドルウェア Conduit Toolkitの概要と使い方 von Hiroshi Nakamura
HSM用ミドルウェア Conduit Toolkitの概要と使い方
Hiroshi Nakamura
•
2.4K views
AppGameKit on raspberry pi概概要 von SI系、ゲーム系
AppGameKit on raspberry pi概概要
SI系、ゲーム系
•
541 views
Logicadの秒間16万リクエストをさばく広告入札システムにおける、gRPCの活用事例 von Hironobu Isoda
Logicadの秒間16万リクエストをさばく広告入札システムにおける、gRPCの活用事例
Hironobu Isoda
•
8.9K views
PyQtではじめるGUIプログラミング von Ransui Iso
PyQtではじめるGUIプログラミング
Ransui Iso
•
309.7K views
関東GPGPU勉強会 LLVM meets GPU von Takuro Iizuka
関東GPGPU勉強会 LLVM meets GPU
Takuro Iizuka
•
4.8K views
MRTGの導入と運用 von kohei Yamamoto
MRTGの導入と運用
kohei Yamamoto
•
2K views
GTC Japan 2017 von Hitoshi Sato
GTC Japan 2017
Hitoshi Sato
•
830 views
Craft CMSに最適なサーバはどんな環境? von Kei Mikage
Craft CMSに最適なサーバはどんな環境?
Kei Mikage
•
1.1K views
Último
さくらのひやおろし2023 von
さくらのひやおろし2023
法林浩之
94 views
•
58 Folien
IPsec VPNとSSL-VPNの違い von
IPsec VPNとSSL-VPNの違い
富士通クラウドテクノロジーズ株式会社
328 views
•
8 Folien
速習! PostgreSQL専用HAソフトウェア: Patroni(PostgreSQL Conference Japan 2023 発表資料) von
速習! PostgreSQL専用HAソフトウェア: Patroni(PostgreSQL Conference Japan 2023 発表資料)
NTT DATA Technology & Innovation
18 views
•
38 Folien
Keycloakの全体像: 基本概念、ユースケース、そして最新の開発動向 von
Keycloakの全体像: 基本概念、ユースケース、そして最新の開発動向
Hitachi, Ltd. OSS Solution Center.
41 views
•
26 Folien
JJUG CCC.pptx von
JJUG CCC.pptx
Kanta Sasaki
6 views
•
14 Folien
SSH応用編_20231129.pdf von
SSH応用編_20231129.pdf
icebreaker4
287 views
•
13 Folien
Último
(11)
さくらのひやおろし2023 von 法林浩之
さくらのひやおろし2023
法林浩之
•
94 views
IPsec VPNとSSL-VPNの違い von 富士通クラウドテクノロジーズ株式会社
IPsec VPNとSSL-VPNの違い
富士通クラウドテクノロジーズ株式会社
•
328 views
速習! PostgreSQL専用HAソフトウェア: Patroni(PostgreSQL Conference Japan 2023 発表資料) von NTT DATA Technology & Innovation
速習! PostgreSQL専用HAソフトウェア: Patroni(PostgreSQL Conference Japan 2023 発表資料)
NTT DATA Technology & Innovation
•
18 views
Keycloakの全体像: 基本概念、ユースケース、そして最新の開発動向 von Hitachi, Ltd. OSS Solution Center.
Keycloakの全体像: 基本概念、ユースケース、そして最新の開発動向
Hitachi, Ltd. OSS Solution Center.
•
41 views
JJUG CCC.pptx von Kanta Sasaki
JJUG CCC.pptx
Kanta Sasaki
•
6 views
SSH応用編_20231129.pdf von icebreaker4
SSH応用編_20231129.pdf
icebreaker4
•
287 views
SNMPセキュリティ超入門 von mkoda
SNMPセキュリティ超入門
mkoda
•
301 views
今、改めて考えるPostgreSQLプラットフォーム - マルチクラウドとポータビリティ -(PostgreSQL Conference Japan 20... von NTT DATA Technology & Innovation
今、改めて考えるPostgreSQLプラットフォーム - マルチクラウドとポータビリティ -(PostgreSQL Conference Japan 20...
NTT DATA Technology & Innovation
•
104 views
定例会スライド_キャチs 公開用.pdf von Keio Robotics Association
定例会スライド_キャチs 公開用.pdf
Keio Robotics Association
•
97 views
The Things Stack説明資料 by The Things Industries von CRI Japan, Inc.
The Things Stack説明資料 by The Things Industries
CRI Japan, Inc.
•
51 views
Windows 11 information that can be used at the development site von Atomu Hidaka
Windows 11 information that can be used at the development site
Atomu Hidaka
•
80 views
Gstreamer Basics
1.
Gstreamer 1.0 入門 開発のための基礎知識 Seiji
Hiraki / 平城 聖士 Embedded Software Engeener Dec, 2018 1
2.
Gstreamer Overview • マルチメディアアプリケーション用のAPI •
クロスプラットフォーム対応 • プラグインアーキテクチャ • 小さなコアに必要なプラグインを追加する • パイプラインアーキテクチャ • 1000以上の要素を提供するプラグイン • 再生、変換、録画など基本的なことに加え、RTPなどのネットワーク 通信なども出来ます • コマンドラインツール • LGPLライセンス 2
3.
About this document •
説明しない • APIの使い方 • アプリケーションの構築 • →アプリケーション開発するために基礎知識が必要 • 説明する • 基礎知識 • パイプライン入門 3
4.
1.Foundations 4
5.
Elements (Gstreamer plug-ins) •
Sources • データ生成元 (ファイル、UDP 等) • Formats • parsers, muxers, demuxer… • Codecs • coders, decoders • Filter • converters, mixers, effects, … • Sink • データ受信 (FrameBuffer、ファイル、Xwindow 等) プラグインは以下のように分類されます SourceとSinkは必ず必要になるでしょう 5
6.
Gstreamer Packages • gstreamer:
コアパッケージ • gst-plugins-base: 典型的な不可欠のエレメント群 • gst-plugins-good: LGPL に基づく各種の高品質プラグイン • gst-plugins-ugly: 配布面で問題が生じる可能性のある各種の 高品質プラグイン • gst-plugins-bad: さらに高いクオリティを必要とするプラグイ ン 6
7.
Pads • エレメントのデータ入出力をパッドと言います • 出力をソースパッド、入力をシンクパッドと言います •
パッド同士は接続(リンク)、問い合わせ(クエリの発行)、 バッファの受け渡しなどを行います filesrc decodebin glimagesink src sink src sink 7
8.
Link Capabilities • Capabilities(Caps)はpadが持つメタデータです •
入出力のフォーマットは様々なため、どのpad同士でもリンク できるわけではありません • 上記のような互換性を保つためのデータを持ちます • 前述したdecodebinのような自動検索エレメントでも利用され ます • gst-inspect [element名] で pad, sinkのcapsが確認できます 8
9.
Bin and Pipeline •
BinはElementのコンテナ • Elementのように操作可能 • Bin内のすべてのElementの状態を変更するにはBinの状態を変 更するだけでよい • アプリケーションの複雑さを軽減できる • パイプラインは最上位のBinで、アプリケーションへのバスを 提供する • PAUSEDまたはPLAYING状態に設定すると、データフローが開 始され、メディア処理がお紺われる。 • いったん開始されると、パイプラインは停止するかデータスト リームの終わりに達するまで別スレッドで実行される 9
10.
Communication • バッファ • エレメント間でストリーミングデータを渡すためのオブジェクト •
常にソースからシンクへ移動する(ダウンストリーム) • イベント • エレメント間へ送信されるオブジェクト。 • アップストリーム/ダウンストリーム可能 • メッセージ • エラー、状態変化、バッファリング状態などの情報をエレメントからアプリ にスレッドセーフな方法で転送する • アプリによって非同期的に処理する • クエリ • アプリケーションは継続時間や現在の再生位置などの情報をパイプラインか ら要求できます • クエリは常に同期的に回答されます 10
11.
11 2.Getting Started
12.
Build • gstreamerとplugin-baseは必須です • 追加するpluginはより上位か同じバージョンにする必要があります 12 mkdir
gstreamer & cd gstreamer git clone git://anongit.freedesktop.org/gstreamer/gstreamer cd gstreamer/ git checkout -b work <version> ./autogen.sh make -j sudo make install & sudo ldconfig git clone git://anongit.freedesktop.org/gstreamer/gst-plugins-base cd gst-plugins-base/ git checkout -b work <version> ./autogen.sh make -j sudo make install & sudo ldconfig
13.
Command line tools •
Gstreamerにはコマンドツールが付属しています • gst-launch-1.0は基本的なGStreamerパイプラインを構築し実 行するツールです。 • Install後にコマンドを確認してgst-launchがあることを確認し ましょう ubuntu@ubuntu-VirtualBox:~$ compgen -ac | grep gst gst-device-monitor-1.0 gstreamer-codec-install gst-play-1.0 gst-discoverer-1.0 gst-typefind-1.0 gst-launch-1.0 gst-inspect-1.0 gst-install 13
14.
gst-launch • シェルのパイプのようにElement同士を接続します • gst-launchでは区切りになる文字は感嘆符(
! )となります • まずは1番シンプルなパターンを試してみましょう videotestsrc glimagesink 14 gst-launch-1.0 videotestsrc ! glimagesink 実行コマンド パイプラインのイメージ 実行結果
15.
Video Playing • 下記のパイプを使ってmp4を再生します gst-launch-1.0
filesrc location="D0002031238_00000_V_000.mp4" ! decodebin ! glimagesink decodebinは利用可能なデコーダを使用して、デコードパ イプラインを自動的に構築するFilterエレメントです デコーダが無い場合はあらかじめインストールする必要が あります filesrc decodebin glimagesink Video copyright: NHK Creative Library 15
16.
gst-inspect • もしプラグインが見つからなかった場合、 • gst-inspectはエレメントの情報を表示するコマンドです •
オプション無しで実行するとエレメント一覧が表示されます ubuntu@ubuntu-VirtualBox:~$ gst-inspect-1.0 | grep h264 libav: avdec_h264: libav H.264 / AVC / MPEG-4 AVC / MPEG-4 part 10 decoder rtp: rtph264pay: RTP H264 payloader rtp: rtph264depay: RTP H264 depayloader uvch264: uvch264mjpgdemux: UVC H264 MJPG Demuxer uvch264: uvch264src: UVC H264 Source videoparsersbad: h264parse: H.264 parser typefindfunctions: video/x-h264: h264, x264, 264 16
17.
debug option • 環境変数
GST_DEBUG • 例えば, GST_DEBUG=2,audiotestsrc:6とすると audiotestsrc エレ メントはDebug Level 6、それ以外は 2となる. • コマンドライン引数 • gst-launch-1.0 --gst-debug-help 17
18.
dot • パイプラインのイメージを絵で確認したい場合 • 環境変数
GST_DEBUG_DUMP_DOT_DIR • dot ファイルの出力先を指定可能 18
19.
19 3.Details
20.
Stream • パイプラインを流れるデータを構成するのは、バッファとイベ ントの組み合わせです • バッファ→実際のメディアデータ •
イベント→シーク情報やストリームの最後の通知といったコン トロール情報が含まれています 20
21.
Buffer • エレメントが作業する領域 • 基本はプログラマがバッファについて操作する必要はない •
メイン構成 • メモリ領域へのポインタ • メモリのサイズ • タイムスタンプ • バッファを使っているエレメントがいくつあるかを示す参照カウント。 バッファを破棄するために使う • 各種フラグ 21
22.
Event • 下流方向のイベント • 関係するエレメントにストリームの状態を通知 •
シークやフラッシュ、ストリームの最後の通知など • 上流方向のイベント • アプリケーションとエレメント、エレメント同士のやり取りの両方に おいて、シークなどストリームの状態の変更を要求するのに使う • アプリケーションにとっては上流方向のみが重要 22
23.
Thread • 説明した通りGstreamerはマルチスレッド • パイプラインはスレッドで動作する •
スレッドの操作はアプリケーションに対して隠蔽されているが • アプリケーションがマルチスレッドの使用を強制することがで きるようになっている • スレッド化は以下のような場合に有益 • ネットワークストリームを処理するような場面でのデータバッファリ ング • データが失われることがない • 動画と音声の両方をストリーム再生する場合 • それぞれを独立のスレッドとして実行し適切に同期する 23
24.
Queue element • いわゆるバッファリングのキューです •
スレッドの使用を強制することができる • バッファとしても機能する • Gobjectプロパティ • 例えば・・・上限、下限のしきい値 • パイプラインの一部として組み込む 24
25.
Scheduling • 基本は上流から下流へデータpushする • Queueエレメントによって分割されたエレメントの集合をグ ループとする 25
26.
Next step • アプリケーションの構築 •
最初に説明したとおり、Gstreamerはマルチメディアアプリケーショ ン開発用のAPIです • Reference • https://gstreamer.freedesktop.org/ 26
27.
27 Questions ?
28.
Thanks • Next Step •
アプリケーションの構築 • Reference • https://gstreamer.freedesktop.org/ 28