Форум программистов, компьютерный форум, киберфорум
C/С++ под Linux
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
67 / 65 / 61
Регистрация: 11.11.2015
Сообщений: 395

Как использовать GStreamer для трансляции видео по сети

09.03.2026, 13:28. Показов 204. Ответов 0

Студворк — интернет-сервис помощи студентам
Добрый день. Помогите пожалуйста разобраться.
Мне нужно организовать видеотрансляцию из изображений, которые формирует моя программа. Для простоты я заменил ее на статичную картинку, загружаемую из файла.

C++ (Qt)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
void VideoServer::start()
{
    gst_init(nullptr, nullptr);
 
        GError * err = nullptr;
    pipeline = gst_parse_launch(
                "appsrc name=source !"
                "videoconvert !"
                "jpegenc !"
                "rtpjpegpay !"
                "udpsink host=127.0.0.1 port=1415", &err);
 
    if(err)
    {
        qDebug()<<"GST Parsing error: "<< err->message;
    }
    else
    {
        qDebug()<<"GST Parsing OK";
    }
 
 
    appsrc = gst_bin_get_by_name(GST_BIN(pipeline), "source");
    if(!appsrc)
    {
        qDebug()<<"GST AppSrc Error";
    }
    else
    {
        qDebug()<<"GST AppSrc OK";
    }
 
    GstCaps * caps = gst_caps_new_simple(
                "video/x-raw",
                "format", G_TYPE_STRING, "RGB",
                "width", G_TYPE_INT, 1024,
                "height", G_TYPE_INT, 768,
                "framerate", GST_TYPE_FRACTION, 25,1, nullptr);
 
    qDebug()<<"Caps setted";
   // gst_caps_unref(caps);
 
    g_object_set(appsrc, "caps", caps, "format", GST_FORMAT_TIME, "is-live", TRUE, nullptr);
 
    GstStateChangeReturn ret = gst_element_set_state(pipeline, GST_STATE_PLAYING);
    if(ret==GST_STATE_CHANGE_FAILURE)
    {
        qDebug()<<"GST_STATE_CHANGE_FAILURE";
    }
 
    GstState state;
    ret = gst_element_get_state(pipeline,&state, nullptr, 5*GST_SECOND);
    qDebug()<<state;
 
    QTimer * tmr = new QTimer(this);
    connect(tmr, &QTimer::timeout, this, [this]() { this->sendPendingImage(QImage());} );
    tmr->start(30);
}
 
void VideoServer::sendPendingImage(QImage image)
{
    if(!appsrc)
    {
        qDebug()<<"Streamer not ready"; return;
    }
 
    image = QImage("/home/user/2.jpeg");
    QImage result = image.convertToFormat(QImage::Format_RGB888);
    //qDebug()<<result.sizeInBytes();
 
    GstBuffer * buffer = gst_buffer_new_allocate(nullptr, result.sizeInBytes(), nullptr);
    gst_buffer_fill(buffer,0, result.bits(), result.sizeInBytes());
 
    GST_BUFFER_PTS(buffer) = gst_util_uint64_scale(++frame_num, GST_SECOND, 25);
    GST_BUFFER_DURATION(buffer) = gst_util_uint64_scale(1, GST_SECOND, 25);
 
    GstFlowReturn ret = gst_app_src_push_buffer(GST_APP_SRC(appsrc),buffer);
    if(ret!=0) qDebug()<<"ret error";
}
Tcpdump не фиксируется никакой передачи по сети. Т.е. данные до взаимодействия с сетью не доходят. Помогите разобраться.
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
09.03.2026, 13:28
Ответы с готовыми решениями:

Как использовать шаблонную функцию в другой единице трансляции?
Как исправить ошибку? Спрашиваем у однокурсников и никто не знает(( file1.cpp export...

Gstreamer - как проиграть mp3-файл
Добрый день всем. Пытаюсь написать простую программу на c++ под linux с использованием Gstreamer....

Простейший аудио плеер с использованием GStreamer
Доброго дня всем. Планирую создать простейший консольный аудио-плеер для собственного...

0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
09.03.2026, 13:28
Помогаю со студенческими работами здесь

Phonon vs GStreamer
Нужно в приложение добавить звука. Вот решаю какую библиотеку использовать. Программа на Qt....

Gstreamer
При изучении мануалов GStreamer вот в таком примере: #include &lt;gst/gst.h&gt; int main (int ...

GStreamer и память
Пишу демон, который должен проигрывать уведомление после определенного события. Для проигрывания...

GStreamer и rtspsrc, а точнее его pad-ы
Доброго времени суток! Работаю над программой, которая должна отображать видео от нескольких...

GStreamer
День добрый. на микроконтроллере есть камера, прошивка позволяет создавать цепочку gstreamer и по...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
1
Ответ Создать тему
Новые блоги и статьи
SDL3 для Desktop (MinGW): Создаём пустое окно с нуля для 2D-графики на SDL3, Си и C++
8Observer8 10.03.2026
Содержание блога Финальные проекты на Си и на C++: hello-sdl3-c. zip hello-sdl3-cpp. zip Результат:
Установка CMake и MinGW 13.1 для сборки С и C++ приложений из консоли и из Qt Creator в EXE
8Observer8 10.03.2026
Содержание блога MinGW - это коллекция инструментов для сборки приложений в EXE. CMake - это система сборки приложений. Здесь описаны базовые шаги для старта программирования с помощью CMake и. . .
Как дизайн сайта влияет на конверсию: 7 решений, которые реально повышают заявки
Neotwalker 08.03.2026
Многие до сих пор воспринимают дизайн сайта как “красивую оболочку”. На практике всё иначе: дизайн напрямую влияет на то, оставит человек заявку или уйдёт через несколько секунд. Даже если у вас. . .
Модульная разработка через nuget packages
DevAlt 07.03.2026
Сложившийся в . Net-среде способ разработки чаще всего предполагает монорепозиторий в котором находятся все исходники. При создании нового решения, мы просто добавляем нужные проекты и имеем. . .
Модульный подход на примере F#
DevAlt 06.03.2026
В блоге дяди Боба наткнулся на такое определение: В этой книге («Подход, основанный на вариантах использования») Ивар утверждает, что архитектура программного обеспечения — это структуры,. . .
Управление камерой с помощью скрипта OrbitControls.js на Three.js: Вращение, зум и панорамирование
8Observer8 05.03.2026
Содержание блога Финальная демка в браузере работает на Desktop и мобильных браузерах. Итоговый код: orbit-controls-threejs-js. zip. Сканируйте QR-код на мобильном. Вращайте камеру одним пальцем,. . .
SDL3 для Web (WebAssembly): Синхронизация спрайтов SDL3 и тел Box2D
8Observer8 04.03.2026
Содержание блога Финальная демка в браузере. Итоговый код: finish-sync-physics-sprites-sdl3-c. zip На первой гифке отладочные линии отключены, а на второй включены:. . .
SDL3 для Web (WebAssembly): Идентификация объектов на Box2D v3 - использование userData и событий коллизий
8Observer8 02.03.2026
Содержание блога Финальная демка в браузере. Итоговый код: finish-collision-events-sdl3-c. zip Сканируйте QR-код на мобильном и вы увидите, что появится джойстик для управления главным героем. . . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru