gst-запуск и несколько строк текста

#gstreamer #gst-launch

#gstreamer #gst-запуск

Вопрос:

как мне установить несколько строк текста в канале textoverlay в gst-launch?

Я хочу настроить конвейер и хочу иметь несколько строк текста по центру как по вертикали, так и по горизонтали. Я могу выполнить 1 строку.

Я не уверен, как указать новую строку.

 gst-launch-1.0 videotestsrc pattern=0 horizontal-speed=0 is-live=1 
    ! textoverlay text="PLEASE <b>STAND</b> <span foreground="blue" size="x-large">nBY</span>Next <u>under-line</u>" valignment=center halignment=center font-desc="Sans, 24"  ... other pipes ...
  

Я хотел бы в основном иметь 2 строки. оба должны быть выровнены по вертикали и горизонтали относительно друг друга и всего экрана.

Ответ №1:

Я не знаю, как передать символ новой строки внутри параметра в gst-launch , но вы можете добиться того же с помощью кода C. Ниже приведен пример:

 #include <glib.h>
#include <gst/gst.h>

int main(int argc, char* argv[])
{
  GMainLoop* loop;

  GstElement *pipeline, *source, *overlay, *sink;

  gst_init(amp;argc, amp;argv);

  loop = g_main_loop_new(NULL, FALSE);

  // initialize elements
  pipeline = gst_pipeline_new("audio-player");
  source = gst_element_factory_make("videotestsrc", "source");
  overlay = gst_element_factory_make("textoverlay", "overlay");
  sink = gst_element_factory_make("autovideosink", "sink");

  if (!pipeline || !source || !overlay || !sink) {
    g_printerr("One element could not be created. Exiting.n");
    return -1;
  }

  g_object_set(G_OBJECT(overlay), "text", "blebleblenble", NULL);
  g_object_set(G_OBJECT(overlay), "font-desc", "Sans, 24", NULL);
  g_object_set(G_OBJECT(overlay), "halignment", 1, NULL);
  g_object_set(G_OBJECT(overlay), "valignment", 1, NULL);

  // add elements to pipeline
  gst_bin_add_many(GST_BIN(pipeline), source, overlay, sink, NULL);

  // link elements
  gst_element_link(source, overlay);
  gst_element_link_many(overlay, sink, NULL);

  gst_element_set_state(pipeline, GST_STATE_PLAYING);

  g_main_loop_run(loop);

  // cleanup
  gst_element_set_state(pipeline, GST_STATE_NULL);
  gst_object_unref(GST_OBJECT(pipeline));
  g_main_loop_unref(loop);

  return 0;
}