e-yamada
2016年9月20日 19時28分
お世話になっております。
Armadillo-840にてブロードキャスト配信された下記の動画のデコードおよびディスプレイへの表示を行いたいと考えております。
・H.264 TTS (タイムスタンプ形式)
設定するGStreamerのパイプラインについて、ユーザーズサイトの情報を拝見させていただいておりましたが、うまく表示させる事ができておりません。
申し訳ございませんが、パイプラインについてご教示いただけますでしょうか。
よろしくお願いいたします。
コメント
e-yamada
田村様
ご回答ありがとうございます。
> ATDE5 などの PC Linux でデコードおよび表示はできているのでしょうか?
現状はできておりません。
ATDE5およびWindows上のVLCメディアプレイヤーでは、下記のネットワークURLにて再生できております。
・udp://@:1234
※1234はポート番号
> ※ GStreamer アプリケーションを開発する際には ATDE などでパイプラインを組み立ててから
> Armadillo-840 用にパイプラインを合わせていく方法がおすすめです。
>
> ATDEなどでデコード・表示ができていないのであれば、
> Wireshark を使った記事[1]を見かけたのでこちらが参考になるかもしれません。
>
> [1]: https://supportforums.cisco.com/ja/document/13042126
ご教示いただきありがとうございます。
Wiresharkにてキャプチャを行ったところ、Protocolが"MPEG TS"となっていたのですが、
この場合、GStreamerのパイプラインはどのようにすればよろしいでしょうか。
ご教示いただけますと幸いです。
以上よろしくお願いいたします。
at_shota.tamura
田村です。
お返事が遅くなってしまい申し訳ありません。
>> [1]: https://supportforums.cisco.com/ja/document/13042126
>
> ご教示いただきありがとうございます。
> Wiresharkにてキャプチャを行ったところ、Protocolが"MPEGTS"となっていたのですが、
> この場合、GStreamerのパイプラインはどのようにすればよろしいでしょうか。
お使いの機材(カメラ?)が手元に無いので "ズバリ動くパイプライン" は、
残念がらお伝えすることはできません。
※ データ形式によってパイプラインやエレメントのプロパティを変える必要があるからです。
そのかわりにパイプラインを構築していく手順を書いてみました。
ご参考になれば幸いです。
======================
1. MPEGTS に対応したエレメントを探す
Protocol "MPEGTS" ということがわかったので、
gst-inspect や GStreamer.org [1]で MPEGTS に対応したエレメントを探しましょう。
[ATDE ~]$ gst-inspect-1.0 | grep -ie mpegts
結果、 tsdemux などが使えそうです。
2. 見つかったエレメントのCapsを調べる
使えそうなエレメントを見つけたら、次は Caps(src側) を調べます。
tsdemux は mpeg, h264 などなどを出力することがわかります。
[ATDE ~]$ gst-inspect-1.0 tsdemux (省略) SRC template: 'video_%04x' Availability: Sometimes Capabilities: video/mpeg mpegversion: { 1, 2, 4 } systemstream: false video/x-h264 stream-format: byte-stream alignment: nal (省略)
3. エレメントの次につなげるエレメントを調べる
demux できると、次はおそらくデコードが必要になるかと思います。
デコードに使うエレメントは decodebin なども便利ですが、
MPEGTSということがわかっているので、mpeg2 でgrepするのがよさそうです。
[ATDE ~]$ gst-inspect-1.0 | grep -ie mpeg2
結果、mpeg2dec が見つかりました。
mpeg2dec を inspect して、mpeg2dec の sink と tsdemux の src に同じ Caps があることを確認します。
[ATDE ~]$ gst-inspect-1.0 mpeg2dec (省略) SINK template: 'sink' Availability: Always Capabilities: video/mpeg mpegversion: [ 1, 2 ] systemstream: false (省略)
vdeo/mpeg の mpegversion [1, 2], systemstream: false で一致するので、
これらのエレメントが繋がることを確認できました。
4. 繰り返し
このようにして1つ1つ使えそうなエレメントを見つけて
パイプラインを組んでいきます。
======================
余談になりますが、もしGStreamerでの開発に慣れていないのであれば、
パイプラインを構築する前に GStreamer.org で公開されている
ドキュメント[2][3]を一読することをおすすめします。
というのも、フレームワーク特有の作法や覚えるべきことが書かれているのは
世に出ているブログなどではなく公式ドキュメントだからです。
[1]: https://gstreamer.freedesktop.org/documentation/plugins.html
[2]: https://gstreamer.freedesktop.org/documentation/
[3]: http://lac.linuxaudio.org/2010/download/GStreamerAudioApps.pdf
e-yamada
at_shota.tamura
2016年9月21日 10時09分
田村です。
> Armadillo-840にてブロードキャスト配信された下記の動画のデコードおよびディスプレイへの表示を行いたいと考えております。
>
> ・H.264 TTS (タイムスタンプ形式)
>
> 設定するGStreamerのパイプラインについて、ユーザーズサイトの情報を拝見させていただいておりましたが、うまく表示させる事ができておりません。
> 申し訳ございませんが、パイプラインについてご教示いただけますでしょうか。
ATDE5 などの PC Linux でデコードおよび表示はできているのでしょうか?
※ GStreamer アプリケーションを開発する際には ATDE などでパイプラインを組み立ててから
Armadillo-840 用にパイプラインを合わせていく方法がおすすめです。
ATDEなどでデコード・表示ができていないのであれば、
Wireshark を使った記事[1]を見かけたのでこちらが参考になるかもしれません。
[1]: https://supportforums.cisco.com/ja/document/13042126