我想拍攝一個視頻文件並覆蓋淡入和淡出的字幕。如何動態修改videomixer水槽墊alpha值
我剛開始學習如何使用Gstreamer。
到目前爲止,我已經成功地把一個流水線composits由textrender元素繪製到與videomixer元素的原始視頻流的字幕流。不幸的是,textrender和它的姐妹元素textoverlay沒有淡入/淡出功能。
該videomixer水槽墊有一個alpha屬性。現在,我已將名爲videomixer.sink_1的pad的alpha值設置爲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
我正在尋找一種方式來動態地修改alpha值隨着時間的推移,這樣我可以在適當的時候做出字幕組件淡入和淡出。 (我將分別解析SRT文件以確定淡入淡出開始和結束的時間。)
我正在學習GstBin C API(我的實際代碼是Python)。我想在我用Gst.parse_launch()創建管道後,我可以用gst_get_bin_by_name()來獲取任何指定的元素,然後使用該值訪問pad_1「sink_1」。
一旦我已經得到那麼多,我將能夠從接收計時器事件的事件處理程序中動態修改該alpha值嗎?視頻混合器元件是否會立即響應該鍵盤屬性的變化?有沒有其他人做到這一點?
我在這裏找到了部分答案:https://stackoverflow.com/a/17331845/270511但他們不告訴我這是否會在管道運行後起作用。
喜歡這篇博文,一定會用它作爲未來gstreamer項目的參考 –