问题标签 [gstreamer-1.0]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
1967 浏览

c - 命令行工具缺少 GStreamer 的 autovideosink - Debian 9.4

该问题仅在使用 GStreamer 命令行工具时出现。包含“autovideosink”的 C 程序按预期编译和运行。

gst-inspect-1.0 autovideosink

返回

No such element or plugin 'autovideosink'

gst-launch-1.0 videotestsrc ! autovideosink

返回

WARNING: erroneous pipeline: no element "autovideosink"

我正在运行 Debian 9.4。我使用以下命令安装了 gstreamer:

sudo apt-get install libgstreamer1.0-0 gstreamer1.0-plugins-base gstreamer1.0-plugins-good gstreamer1.0-plugins-bad gstreamer1.0-plugins-ugly gstreamer1.0-libav gstreamer1.0-doc gstreamer1.0-tools

0 投票
0 回答
382 浏览

gstreamer - gstreamer-1.8.3 v4l2src 进行多播

我使用 gstreamer-1.2.4 将流从 v4l2src 发送到多播并将其写入共享内存。管道是:

现在,我将其更新为 gstreamer-1.8.3,但此管道不起作用。然后我尝试查看这个多播流,我什么也没得到。硬件没有改变。我也有警告:

然后我删除

我得到一个绿屏。

查看视频的管道:

为什么在旧版本中可以使用,而在新版本中无法使用?

0 投票
1 回答
2388 浏览

gstreamer - Gstreamer HLSSink 管道在 Safari 中显示黑框

这个get-launch-1.0命令行管道gst-launch-1.0 videotestsrc num-buffers=680 ! x264enc ! mpegtsmux ! hlssink location=junk2.%05d.ts playlist-location=junk2.m3u8

该服务器python -m SimpleHTTPServer 8000

Mac OS X Safari 上的这个本地 URLhttp://localhost:8000/junk2.m3u8

似乎在本地 Safari 浏览器中播放,但显示黑框。为什么?

注意:python 控制台输出看起来很开心,所以所有路径都是正确的:

注意:还尝试了 hlssink 插件的各种选项而不改变行为:

  • target-duration=2
  • max-files=0
  • playlist-length=0

其他播放器:在 VLC 中正确播放和显示: VLC 回放

0 投票
0 回答
287 浏览

gstreamer - GStreamer RTSP-Server 将自定义 GstMeta 数据传输到客户端

我需要将每个帧的自定义时间戳共享给客户端。我的想法是在 GstMeta 中添加一个自定义的 MetaData-Structure,它与客户端共享时间戳。

为了分享视频,我们使用了 GStreamer 的 rtsp-server。有谁知道是否可以使用该服务器传输任何类型的 GstMeta 数据?

0 投票
1 回答
214 浏览

ios - 如何为 iOS 平台的 g-streamer 中的特定元素启用调试?

我正在尝试使用以下管道从 iOS 设备发送 RTMP 流,但它失败而没有给出任何错误。有什么方法可以获取更多日志来解决问题。

avfvideosrc !vtenc_h264 !h264解析!!队列 !rtmpsink location='rtmp://192.168.11.210/live/livestream

我试过setenv("GST_DEBUG", "*:5", 1)但没有帮助。

此外,如果我将avfvideosrc更改为videotestsrc管道工作正常。

*没有权限问题,因为我可以使用avfvideosrc 从相机获取数据!自动视频接收器

0 投票
1 回答
1301 浏览

gstreamer-1.0 - gstreamer rtpjpegdepay 收到无效的 RTP 有效负载

我想在发送者和接收者之间传输 RTP 视频。如果我使用以下命令通过 UDP 流式传输视频,它工作正常:

发件人

接收者

但是当我尝试将视频保存到文件时

然后使用这些命令通过 UDP 发送

发件人

接收者

接收器无法解码流并显示此错误

0 投票
0 回答
497 浏览

server - H264 //RTSP 使用安卓手机

我想创建一个 VR,所以我创建了一个 RTSP 服务器来链接到我的 Zedmini。如果我使用 h265 编码器它可以工作,但不好的是 RTSP 只有在我使用 Iphone7 VLC 应用程序或计算机窗口 8 VLC 软件时才有效,我的 Android 手机 huawei p7 Onvifer 应用程序根本无法使用这个 RTSP 地址。我需要为我的项目使用华为 p7,因为我要创建应用程序并链接到这个 RTSP 服务器。

根据我的检查,一些 Android 设备不支持 h265 编码器,所以我决定使用 h264,我已经在谷歌上搜索了好几个星期,但因为找不到使用 h264 的解决方案而感到沮丧。

这是我从 test-readme.c 修改的代码------>

此代码适用于流式视频、JX2 摄像头、简单的 USB 摄像头(低端)以及 zedmini 摄像头,但使用的是 h265。我需要使用 h264 运行代码,这里肯定有一些元素遗漏或错误。

0 投票
1 回答
1872 浏览

c - GStreamer 1.0 在 C 中将原始编码为 H.264

我正在使用 GStreamer-1.0版本:1.10.4

我有一个原始视频文件,我想在 C 中使用 GStreamer 使用 h.264 对其进行编码。

我的管道如下所示:

gst-launch-1.0 filesrc location=myVideo.yuv blocksize=2073600 !视频解析宽度=1920 高度=1080 !解码器!视频转换!x264enc !队列 !mp4mux 名称=mux !文件接收器位置=myFile.mp4

当我在终端中执行它时,这个管道工作正常。但我想用 C-API 来做,所以我的源代码如下所示:

正如我所说,终端中的管道工作正常,但 C 实现只创建一个空的 mp4 文件。我不明白为什么。

如果它可能会有所帮助:原始视频文件的录制也已使用 GStreamer 完成。用于此的管道是:

gst-launch-1.0 -e v4l2src device=/dev/video0 num-buffers=300 !队列 !图像/JPEG,宽度=1920,高度=1080,帧率=30/1!JPEG格式!视频/x-raw,格式=I420,宽度=1920,高度=1080,帧率=30/1!文件接收器位置=myVideo.yuv

我想知道是否有人能看到我犯的错误,或者是否有人遇到过类似的问题。

0 投票
0 回答
300 浏览

audio - Demuxing HLS 流和再次复用的管道

我正在尝试从包含 DISCONTINUITY 标记的 HLS 流中生成 MP4。我正在尝试再次对音频和视频流进行解复用和重新混合,以便它们对齐。我尝试生成以下管道,但它似乎不起作用。

非常感谢你的帮助。

0 投票
1 回答
1506 浏览

ffmpeg - AVFrame:如何获取/替换平面数据缓冲区和大小?

我正在研究 gstreamer1.0-libav (1.6.3),试图从 gstreamer 0.10 移植基于 FPGA 的自定义 H264 视频加速。

数据平面 (YUV) 过去在 gstreamer 0.10 中由简单的 malloc 分配,因此我们只需将 AVFrame.data[i] 指针替换为指向视频加速核心中的内存的指针。在 gstreamer 1.12 中似乎要复杂得多。

对于初学者,我尝试将 YUV 平面从 AVFrame.data[i] 复制到单独的缓冲区 - 效果很好!由于我还没有看到获得 AVFrame.data[i] 大小的直接方法,并且我认识到 data[0]、data[1]、data[2] 似乎在一个连续的缓冲区中,所以我只是使用了(data[1] - data [0]) 用于 Y 平面的大小, (data[2] - data[1]) 分别用于 U/V 平面的大小。这工作正常,期待一种情况:

  • 输入 H264 流,分辨率为 800x600 或更高
  • 相机被覆盖(夹克,手,......)

这会导致使用如上所述确定的大小在 V 平面 (data[2]) 的 memcpy 中出现 SEGFAULT。在覆盖相机之前,流显示完全正常......所以由于某种原因,暗屏改变了平面尺寸?

我的最终目标是用我的自定义内存分配替换 gstreamer 分配的 data[i] 指针(用于进一步处理)......这些缓冲区究竟分配在哪里,我可以更改它们以及如何获得每个平面的大小(数据[0]、数据[1]、数据[2])?