我想拍摄一个视频文件并覆盖淡入和淡出的字幕。如何动态修改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项目的参考 –