Форум русскоязычного сообщества Ubuntu


Увидели сообщение с непонятной ссылкой, спам, непристойность или оскорбление?
Воспользуйтесь ссылкой «Сообщить модератору» рядом с сообщением!

Автор Тема: rtsp видео в gtk-приложении  (Прочитано 2516 раз)

0 Пользователей и 1 Гость просматривают эту тему.

Оффлайн 8vito8

  • Автор темы
  • Новичок
  • *
  • Сообщений: 9
    • Просмотр профиля
rtsp видео в gtk-приложении
« : 20 Июня 2011, 22:42:17 »
Добрый вечер! Пишу gtk-приложение, в котором должно воспроизводиться видео по RTSP-протоколу. Начал с библиотеки gstreamer.

pipeline=gst_parse_launch("rtspsrc location=rtsp://192.168.127.100:554/moxa-cgi/udpStreamer latency=0 ! decodebin ! xvimagesink",NULL);
gst_element_set_state (pipeline, GST_STATE_PLAYING);

Эти строки вызывают утилиту gst-launch, но видео воспроизводится в отдельном окне. Подскажите, как выводить видео в gtk_drawing_area или другой виджет.
Или посоветуйте другие библиотеки, которые работают с потоковым видео. Спасибо!
« Последнее редактирование: 20 Июня 2011, 22:46:22 от 8vito8 »

Оффлайн S_F_H

  • Участник
  • *
  • Сообщений: 129
  • Да будет crossplatform!
    • Просмотр профиля
Re: rtsp видео в gtk-приложении
« Ответ #1 : 24 Июня 2011, 09:53:30 »
помоему вместо null надо имя виджета указать на который выводить надо....

Оффлайн wl

  • Старожил
  • *
  • Сообщений: 1393
    • Просмотр профиля
Re: rtsp видео в gtk-приложении
« Ответ #2 : 24 Июня 2011, 18:16:19 »
помоему вместо null надо имя виджета указать на который выводить надо....
Это по-вашему. Мануалы читать пробовали?
http://gstreamer.freedesktop.org/data/doc/gstreamer/head/gstreamer/html/gstreamer-GstParse.html#gst-parse-launch
Там указатель на структуру, куда пишется информация об ошибке.

два варианта.
1. повесить синхронный обработчик сигналов шины, ловить там GST_MESSAGE_ELEMENT и смотреть, есть ли в структуре "prepare-xwindow-id". Потом вызывать в нем функцию gst_x_overlay_set_xwindow_id()

http://gstreamer.freedesktop.org/data/doc/gstreamer/head/gst-plugins-base-libs/html/gst-plugins-base-libs-gstxoverlay.html

2. руками создать свой собственный video-sink и указать ему id окна, где можно рисовать.
второй вариант предполагает использование playbin2 или сборку трубы руками.

Поправочка - утилита gst-launch не вызывается. Эта утилита вызывает те же функции, что и gst_parse_launch()
« Последнее редактирование: 24 Июня 2011, 18:25:05 от wl »
На свете феньки есть такие, брат Горацио, которых лохи просто не секут. (Шекспир, "Гамлет", вольный перевод)

Оффлайн 8vito8

  • Автор темы
  • Новичок
  • *
  • Сообщений: 9
    • Просмотр профиля
Re: rtsp видео в gtk-приложении
« Ответ #3 : 24 Июня 2011, 22:48:40 »
Playbin дает задержку примерно в 2-3 секунды: использовал его изначально, потому что он был в примере плеера.  Проблему уже решил. Правильный ответ:
GstElement *pipeline=gst_parse_launch("rtspsrc location=rtsp://192.168.127.100:554/moxa-cgi/udpStreamer latency=0 ! decodebin2 ! xvimagesink name=sink",NULL);
GstElement *sink = gst_bin_get_by_name (GST_BIN (pipeline), "sink");

    if (GST_IS_X_OVERLAY (sink))
    {
        gst_x_overlay_set_xwindow_id (GST_X_OVERLAY (sink), GPOINTER_TO_INT (windowww));
    }

gst_element_set_state (pipeline, GST_STATE_PLAYING);
Всем спасибо!
« Последнее редактирование: 24 Июня 2011, 22:51:13 от 8vito8 »

Оффлайн wl

  • Старожил
  • *
  • Сообщений: 1393
    • Просмотр профиля
Re: rtsp видео в gtk-приложении
« Ответ #4 : 26 Июня 2011, 13:46:06 »
Да, точно, третий вариант - достать из трубы уже созданный видео-синк и указать ему ID окна.
GStreamer дает возможность выбора.
На свете феньки есть такие, брат Горацио, которых лохи просто не секут. (Шекспир, "Гамлет", вольный перевод)

Оффлайн wl

  • Старожил
  • *
  • Сообщений: 1393
    • Просмотр профиля
Re: rtsp видео в gtk-приложении
« Ответ #5 : 30 Июня 2011, 16:31:51 »
Playbin дает задержку примерно в 2-3 секунды: использовал его изначально, потому что он был в примере плеера.  
Так можно достать source (у playbin2 есть свойство source), это будет rtspsrc, и задать ему udp-buffer-size поменьше
На свете феньки есть такие, брат Горацио, которых лохи просто не секут. (Шекспир, "Гамлет", вольный перевод)

Оффлайн 8vito8

  • Автор темы
  • Новичок
  • *
  • Сообщений: 9
    • Просмотр профиля
Re: rtsp видео в gtk-приложении
« Ответ #6 : 04 Июля 2011, 15:44:27 »
>Так можно достать source (у playbin2 есть свойство source), это будет rtspsrc, и задать ему udp-buffer-size поменьше
Подозревал что есть что-то подобное, но в свое время не нашел где и что нужно задать. Через rtspsrc все работает нормально - так что уже не буду заморачиваться с playbin2)

 

Страница сгенерирована за 0.016 секунд. Запросов: 22.