标签: gstreamer

为每个新客户端提取 GStreamer 和 URI 查询参数

我已经创建了 rtsp/h264/mjpeg 服务器。效果很好。但现在我必须查询每个新连接的客户端。例如,我必须从客户端查询获取请求的分辨率:rtsp://192.116.10.20:8554/stream?width=1920&height=1280

我尝试使用以下代码来做到这一点:

 ....
gulong clientConnectedConfigureId = g_signal_connect(m_server, "client-connected", (GCallback)ClientConnected, this);
 ....

static void ClientConnected(GstRTSPServer *gstrtspserver, GstRTSPClient *arg1, gpointer user_data)
    {
        GstRTSPConnection *connection = gst_rtsp_client_get_connection(arg1);

        if(!connection)
        {
            return;
        }

        GstRTSPUrl *uri = gst_rtsp_connection_get_url(connection);

        if(!uri)
        {
            return;
        }

        gchar *urlString = gst_rtsp_url_get_request_uri (uri);

        std::stringstream ssTemp;
        ssTemp << "ClientConnected - urlString = " << urlString;
        InternalLog::Debug(ssTemp.str());

        g_free(urlString); 
    }
Run Code Online (Sandbox Code Playgroud)

GstRTSPUrl 包含以下成员: //rtsp[u]://[user:passwd@]host[:port]/abspath[?query]

通过查询 rtsp://192.116.10.20:8554/stream?width=1920&height=1280 从 VLC 连接后,结果如下:

ClientConnected - urlString = rtsp://192.116.10.20:61099(null)

GstRTSPUrl 仅包含主机=192.116.10.20 和端口=61099。其他字段如“abspath”或“query”等于 NULL。

在 netstat 实用程序中,我看到端口 61099 是 VLC …

c++ streaming rtsp video-streaming gstreamer

1
推荐指数
1
解决办法
1141
查看次数

ubuntu 16 安装 gstreamer 但在任何地方都找不到 gstreamer-plugins-base-1.0.pc 文件

(在我的 mac pro 上使用 ubuntu 16 0n。)

要集成 gstreamer 和 pocketsphinx,我需要三个 .pc 文件,如官方网站所述:

  • gstreamer-1.0.pc
  • gstreamer-base-1.0.pc
  • gstreamer-plugins-base-1.0.pc

我启动一个新的空 ubuntu 18。通过安装 gstreamer

$ sudo apt-get install libgstreamer1.0-dev
Run Code Online (Sandbox Code Playgroud)

但在上一个命令之后,三个重要的 .pc 文件中仅存在两个。如果我 cd 到/usr/并运行:

sudo find . -print | grep -i 'gstreamer-plugins-base-1.0'
Run Code Online (Sandbox Code Playgroud)

终端返回空(未找到)。同时, sudo find . -print | grep -i 'gstreamer-base-1.0'

sudo find . -print | grep -i 'gstreamer-1.0'
Run Code Online (Sandbox Code Playgroud)

会给我正确的路径。

丢失的gstreamer-plugins-base-1.0.pc文件在哪里?谢谢。

如果只有两个而不是三个.pc 文件,pocketsphinx 的配置将不起作用。

plugins apt-get gstreamer pocketsphinx

1
推荐指数
1
解决办法
1829
查看次数

VS Code 的 Pkg 配置?

我希望使用 VS Code 在 Linux Virtualbox 中运行 GStreamer Hello World 示例。

Gstreamer安装说明请参见此处。
GStreamer HelloWorld 信息请参见此处。

手动 C 构建/编译命令非常$ gcc basic-tutorial-1.c -o basic-tutorial-1 'pkg-config --cflags --libs gstreamer-1.0' 有效。但是,我希望使用 Visual Studio Code,并且尝试将“pkg-config --cflags --libs gstreamer-1.0”内容推送到我的 launch.json 文件中。我不清楚具体如何做到这一点

我从一个 launch.json 文件开始,我相信该文件是由 Microsoft 的 C/C++ 插件在 VS Code 中创建的。我没有添加 CMakeLists 文件。VS Code 中没有安装其他扩展。

我当前的 launch.json 文件:(测试#17 左右...)

{
    "version": "0.2.0",
    "configurations": [
        {
            "name": "gcc - Build and debug active file",
            "type": "cppdbg",
            "request": "launch",
            "program": "${fileDirname}/${fileBasenameNoExtension}",
            "args": [], …
Run Code Online (Sandbox Code Playgroud)

c gstreamer visual-studio-code

1
推荐指数
2
解决办法
5661
查看次数

GStreamer 世界中的 H.264 depay 和 H.264 parse 有什么区别?

我有一个 RTSP 源。数据以 NAL 单元流的形式出现。我认为 RTP 数据包需要“depay”或“解析”为 H.264 解码器可以理解的内容。

rtspsrc ! rtph264depay ! h264parse ! avdec_h264 ! ...
Run Code Online (Sandbox Code Playgroud)

depay 和 parse 之间的实际区别是什么?直觉上我觉得他们在做同样的事情。但如果我删除其中之一,Gstreamer 管道将无法工作。

codec gstreamer h.264 gstreamer-1.0

1
推荐指数
1
解决办法
2178
查看次数

GStreamer最小程序泄漏内存

我有一个最小的GStreamer程序:

#include <gst/gst.h>

int main() {
   gst_init(NULL, NULL);
   gst_deinit();
}
Run Code Online (Sandbox Code Playgroud)

我使用gcc test.c $(pkg-config --cflags --libs gstreamer-1.0) -fsanitize=address(gcc 版本为 12.1.0)构建它,运行它并从地址清理器获得以下输出:

==87326==ERROR: LeakSanitizer: detected memory leaks

Direct leak of 16384 byte(s) in 1 object(s) allocated from:
    #0 0x7f53e28bfa89 in __interceptor_malloc /usr/src/debug/gcc/libsanitizer/asan/asan_malloc_linux.cpp:69
    #1 0x7f53e26c1b19 in g_malloc (/usr/lib/libglib-2.0.so.0+0x5db19)

SUMMARY: AddressSanitizer: 16384 byte(s) leaked in 1 allocation(s).
Run Code Online (Sandbox Code Playgroud)

我是 GStreamer 和 GLib 的新手。这对于 GStreamer 程序来说正常吗?如果是的话,在使用消毒剂运行单元测试时,有什么优雅的方法可以忽略这种泄漏?

gcc memory-leaks glib gstreamer leak-sanitizer

1
推荐指数
1
解决办法
707
查看次数

是否可以通过Gstreamer流式传输Windows(7/vista/xp)网络摄像头

我对gstreamer的世界很新.我想知道,是否可以通过gstreamer流式传输网络摄像头?到目前为止,我见过的唯一一个包是linux.v4l2(适用于Linux的视频).还有一个Windows网络摄像头包吗?什么是正确的python语法?

DJ

python windows streaming gstreamer

0
推荐指数
1
解决办法
1402
查看次数

gstreamer muxing与x264enc

我正在尝试使用gstreamer将DVD转换为mkv文件.我使用的管道是:

gst-launch -evv multifilesrc location="VTS_01_%d.VOB" index=1 ! dvddemux name=demuxer \
 matroskamux name=mux ! filesink location=test.mkv \
 demuxer.current_video ! queue ! mpeg2dec ! x264enc ! mux. \
 demuxer.current_audio ! queue ! ffdec_ac3 ! lamemp3enc ! mux.

不幸的是,管道不会超出预卷.当我用例如ffenc_mpeg4替换x264enc时,一切正常..

gstreamer x264

0
推荐指数
1
解决办法
5585
查看次数

LNK2019未解析的外部符号gStreamer教程Visual Studio 2015

安装gStreamer SDK 安装后,我现在尝试使用Visual Studio 2015编译并运行随附的教程文件.这里的教程文档

鉴于这些最初是在VS2010中制作的,我必须升级教程项目才能使用它们.接下来,我不得不添加我的include目录,只留下一组LNK2019未解决的外部符号错误

鉴于msdn网站上列出的各种可能原因,此时我觉得解决这个问题有点超出我的意义.

对于教程1,我有16个LNK2019错误,例如.

错误LNK2019未解析的函数_main basic-tutorial-1中引用的外部符号_gst_object_unref

与以下"外部符号"相关的所有16个错误

_gst_object_unref

_gst_mini_object_unref

_gst_bus_timed_pop_filtered

_gst_element_get_bus

_gst_element_set_state

_gst_parse_launch

_gst_init

在我的gStreamer SDK目录中搜索文件内容我发现所有这些都发生在

d:\的GStreamer-SDK\0.10\x86_64的\ LIB\libgstreamer,0.10.dll.a

所以我假设这个问题与libgstreamer-0.10.dll.a lib的链接有关.

我应该提供更多细节吗?有什么建议?

c++ windows lnk2019 gstreamer visual-studio-2015

0
推荐指数
1
解决办法
1249
查看次数

GStreamer管道以显示RTSP流

我对Gstreamer来说还很陌生。

我需要编写一个视频客户端,该客户端能够使用GStreamer从RTSP源流式传输数据。我将VLC配置为使用RTSP流式传输笔记本电脑上的视频,并且我想创建一个管道来获取并显示该流。我尝试使用playbin,一切正常。关键是我需要微调用于流式传输视频的延迟,但是似乎我无法使用playbin做到这一点。

我尝试过,rtspsrc因为它可以处理延迟,但是我不知道如何在任何窗口上显示视频。那就是我创建的管道:

gst-launch-1.0 rtspsrc location=rtsp://localhost:8554/test latency=300 ! decodebin ! autovideosink
Run Code Online (Sandbox Code Playgroud)

我收到错误“流任务已暂停,原因未协商(-4)”。

在深入浏览互联网后,我尝试了不同的管道,但我肯定会错过一些东西。如何编写gstreamer管道以显示来自RTSP的视频?

最终目标是拥有至少可以在延迟方面可调的管道,因此我有两种选择:

  • 设置playbin元素的延迟(如果可能)。(此元素正确显示了视频)
  • 由于rtspsrc允许我设置延迟,因此请使用正确的管道显示视频。

我使用的是Xubuntu 16.04,gstreamer-tools-1.0(也使用了0.10),我通过VLC流式传输的视频具有mp4扩展名。

video rtsp gstreamer

0
推荐指数
2
解决办法
9961
查看次数

GStreamer中没有元素"ffmpegcolorspace"

执行以下命令时

gst-launch-1.0 filesrc location = Wildlife.wmv!decodebin!排队!ffmpegcolorspace!autovideosink dec.!排队!audioconvert!听觉样本!autoaudiosink

我得到如下错误.

ERROR GST_PIPELINE grammar.y:716:priv_gst_parse_yyparse: no element "ffmpegcolorspace"
ERROR GST_PIPELINE grammar.y:801:priv_gst_parse_yyparse: link has no sink [source=@0000000003066F90] 
ERROR GST_PIPELINE grammar.y:801:priv_gst_parse_yyparse: link has no source [sink=@000000000306B060]
ERROR GST_PIPELINE grammar.y:1138:priv_gst_parse_launch: No src-element named "dec" - omitting link
WARNING: erroneous pipeline: no element "ffmpegcolorspace"
Run Code Online (Sandbox Code Playgroud)

这里有什么问题?

rtsp gstreamer

0
推荐指数
1
解决办法
4261
查看次数