フェードインとフェードアウトするビデオファイルとオーバーレイ字幕を取りたいです。ビデオミキサーのシンクパッドのアルファ値を動的に変更する方法
Gstreamerの使い方を学び始めました。
これまでのところ、私は一緒にvideomixer要素でオリジナルのビデオストリーム上にtextrender要素によって描かれた字幕ストリームをcompositsパイプラインを入れることができました。残念なことに、textrenderとその姉妹要素のテキストオーバーレイにはフェードイン/フェードアウト機能はありません。
ビデオミキサーシンクパッドにはアルファプロパティがあります。今のところ、videomixer.sink_1という名前のパッドのアルファ値を1.0に設定しました。私は適切な時期に内外字幕コンポーネントのフェードを行うことができるように、動的に時間をかけてそのアルファ値を変更する方法を探しています
#!/bin/bash
gst-launch-1.0 \
filesrc location=sample_videos/my-video.mp4 ! decodebin ! mixer.sink_0 \
filesrc location=subtitles.srt ! subparse ! textrender ! mixer.sink_1 \
videomixer name=mixer sink_0::zorder=2 sink_1::zorder=3 sink_1::ypos=-25 sink_1::alpha=1 \
! video/x-raw, height=540 \
! videoconvert ! autovideosink
:ここではそのパイプラインのコマンドラインバージョンです。 (私はSRTファイルを別々に解析して、フェードの開始と終了を判断します。)
私はGstBin C APIを研究しています(私の実際のコードはPythonで書かれています)。私はGst.parse_launch()でパイプラインを作成した後、gst_get_bin_by_name()で任意の名前付き要素を取得し、その値を使ってパッド "sink_1"にアクセスすることができます。
これまでのところ、タイマーイベントを受け取るイベントハンドラから動的にアルファ値を変更することはできますか? videomixer要素はそのパッドのプロパティの変更に即座に応答しますか?他の誰かがこれをしましたか?
ここで部分的な回答が見つかりました:https://stackoverflow.com/a/17331845/270511しかし、パイプラインの実行後にこれが動作するかどうかはわかりません。
ブログ記事を楽しみました。将来のgstreamerプロジェクトの参考にしても間違いありません –