Я хочу взять видеофайл и субтитры наложения, которые исчезают и исчезают.Как изменить значение альфа-значения приемника видеомикшера динамически
Я только начинаю изучать, как работать с Gstreamer.
До сих пор мне удалось собрать трубопровод, композиты потока субтитров, запряженный в textrender элемента на оригинальном видеопоток с videomixer элемента. К сожалению, textrender и его дочерний элемент textoverlay не имеют функции fade-in/fade-out.
Подставка для видеомикшера имеет свойство alpha. На данный момент я установил значение альфа-диапазона для пэда с именем 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-файл отдельно, чтобы определить, когда начинаются и заканчиваются затухания.)
Я изучаю API GstBin C (мой фактический код находится на Python). Я думаю, что после создания конвейера с Gst.parse_launch() я могу захватить любой именованный элемент с gst_get_bin_by_name(), а затем использовать это значение для доступа к пэду «sink_1».
Как только я догадался, смогу ли я модифицировать это альфа-значение динамически из обработчика событий, который принимает события таймера? Будет ли элемент видеомиксера мгновенно реагировать на изменения в свойстве этого пэда? Кто-нибудь еще это сделал?
Я нашел частичные ответы здесь: https://stackoverflow.com/a/17331845/270511, но они не говорят мне, будет ли это работать после того, как работает конвейер.
Наслаждайтесь записью в блоге, определенно используйте ее в качестве ссылки для будущих проектов gstreamer –