标签: gstreamer

GStreamer插件搜索路径?

我能以某种方式告诉GStreamer在指定目录中查找插件吗?

c gstreamer

14
推荐指数
2
解决办法
9542
查看次数

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

流式RTP/RTSP:同步/时间戳问题

我在通过RTSP传输H.264视频时遇到了一些麻烦.目标是将摄像机图像直播到RTSP客户端(理想情况下是最终的浏览器插件).到目前为止,这个问题一直很顺利,除了一个问题:视频会在启动时滞后,每隔几秒就会断断续续,并且延迟时间约为4秒.这是不好的.

我们的设置是使用x264(w/zerolatency和ultrafast)进行编码,并使用ffmpeg 0.6.5的libavformat打包到RTSP/RTP中.为了测试,我在连接到RTSP服务器时接收带有gst-launch的GStreamer管道的流.但是,当我只使用RTP从另一个GStreamer实例直接流式传输时,我已经能够重现相同的问题.

发送机:

gst-launch videotestsrc ! x264enc tune=zerolatency ! rtph264pay ! udpsink host=10.89.6.3
Run Code Online (Sandbox Code Playgroud)

收货机:

gst-launch udpsrc ! application/x-rtp,payload=96 ! rtph264depay ! decodebin ! xvimagesink
Run Code Online (Sandbox Code Playgroud)

您也可以在同一台计算机上运行这两者,只需将主机更改为127.0.0.1即可.在接收端,您应该注意到口吃和通常效果不佳的视频,以及控制台上的重复警告:

WARNING: from element /GstPipeline:pipeline0/GstXvImageSink:xvimagesink0: A lot of buffers are being dropped.
Additional debug info:
gstbasesink.c(2875): gst_base_sink_is_too_late (): /GstPipeline:pipeline0/GstXvImageSink:xvimagesink0:
There may be a timestamping problem, or this computer is too slow.
Run Code Online (Sandbox Code Playgroud)

我在互联网上看到的一个常见建议的"修复"是sync=false与xvimagesink 一起使用:

gst-launch udpsrc ! application/x-rtp,payload=96 ! rtph264depay ! decodebin ! xvimagesink sync=false
Run Code Online (Sandbox Code Playgroud)

即使使用我们的相机软件进行测试,视频也会以接近零的延迟播放.这对于测试非常有用,但对于部署并不是很有用,因为它不适用于Totem,VLC或其浏览器插件嵌入.

我想尝试从源头解决问题; 我怀疑x264或者RTP有效载荷在H.264流上缺少某种时间戳信息.有什么办法来修改 GST管道,这样我就不会需要使用 …

video streaming rtp gstreamer h.264

13
推荐指数
2
解决办法
2万
查看次数

什么是gstreamer caps语法?

在gstreamer中,cap的语法是什么,指定媒体功能?Caps是指定允许的媒体类型的字符串,看起来像"audio/x-raw-int,..."但是我无法找到关于cap字符串中允许的确切内容的良好文档.

gstreamer

12
推荐指数
5
解决办法
2万
查看次数

寻找具有最少延迟的最快视频编码器来流式传输到ipad的网络摄像头

我正在寻找最快的方法来编码可在html5视频标签中查看的网络摄像头流.我正在使用Pandaboard:http://www.digikey.com/product-highlights/us/en/texas-instruments-pandaboard/686#tabs-2获取硬件.可以使用gstreamer,cvlc,ffmpeg.我将用它来驱动一个机器人,所以在视频流中需要最少的延迟.质量不一定很好,也不需要音频.此外,这仅适用于一个客户端,因此带宽不是问题.到目前为止最好的解决方案是使用带有mpjpeg的ffmpeg给我约1秒的延迟.还有什么更好的?

ffmpeg vlc video-streaming gstreamer html5-video

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

使用Gstreamer从相机捕获h.264流

我正试图从/dev/video0带有Gstreamer 1.0 v4l2src元素的本地安装的Logitech C920相机捕获H264流.

v4l2-ctl --list-formats 表明相机能够提供H264视频格式:

# v4l2-ctl --list-formats
ioctl: VIDIOC_ENUM_FMT
        ...

        Index       : 1
        Type        : Video Capture
        Pixel Format: 'H264' (compressed)
        Name        : H.264

        ...
Run Code Online (Sandbox Code Playgroud)

但管道

# gst-launch-1.0 -vvv v4l2src device=/dev/video0 ! video/x-h264, width=800, height=448, framerate=30/1 ! fakesink

一直给我not-negotiated (-4)错误:

/GstPipeline:pipeline0/GstV4l2Src:v4l2src0.GstPad:src: caps = video/x-h264, width=(int)800, height=(int)448, interlace-mode=(string)progressive, pixel-aspect-ratio=(fraction)1/1, framerate=(fraction)30/1
/GstPipeline:pipeline0/GstCapsFilter:capsfilter0.GstPad:src: caps = video/x-h264, width=(int)800, height=(int)448, interlace-mode=(string)progressive, pixel-aspect-ratio=(fraction)1/1, framerate=(fraction)30/1
/GstPipeline:pipeline0/GstFakeSink:fakesink0.GstPad:sink: caps = video/x-h264, width=(int)800, height=(int)448, interlace-mode=(string)progressive, pixel-aspect-ratio=(fraction)1/1, framerate=(fraction)30/1
/GstPipeline:pipeline0/GstCapsFilter:capsfilter0.GstPad:sink: caps = video/x-h264, …
Run Code Online (Sandbox Code Playgroud)

gstreamer h.264 v4l2

12
推荐指数
1
解决办法
4万
查看次数

如何流媒体视频没有延迟(ffplay,mplayer)和什么样的包装可以用于ffplay?

我一直在测试使用不同的播放器播放多个直播流,因为我想获得最低的延迟值.我尝试了gstreamer播放器(gst-launch-0.01),mplayer,totem和ffmpeg播放器(ffplay).我使用不同的配置值来获得每个配置值的最低延迟,例如:

ffplay -fflags nobuffer 
mplayer -benchmark
Run Code Online (Sandbox Code Playgroud)

我流媒体的协议是udp,我使用ffplay比mplayer或gst-launch获得更好的价值.说实话,我不知道我需要什么样的配置才能让gstreamer获得更低的延迟.现在,我需要的是两件事:

  1. 我想知道是否有人有更好的建议来流式传输低延迟<100毫秒的直播流.我现在高于100毫秒,这对我来说效率不高.

  2. 由于我目前正在使用ffplay,因为它是目前为止最好的.我想做一个带有播放和录制按钮的简单gui和3个屏幕从不同的视频服务器流,我只是不知道使用什么样的包装(应该真的很快)!

video ffmpeg video-streaming gstreamer mplayer

12
推荐指数
2
解决办法
2万
查看次数

g_main_loop_run阻止Qthread并且不允许停止视频

我为gstreamer创建了一个单独的类来传输视频.
该类使用moveToThread()在单独的线程上运行.
我正在使用Qt5.5进行开发.
当我在主线程上发出startcommand时,Qthread启动并且gstreamer用于g_main_loop_run流式传输视频.这绝对没问题.但不知何故g_main_loop_run阻止线程,当我发出信号从主线程停止视频时,它不会在gstreamer类中执行插槽.

有人可以建议我如何解决这个问题?我可以用其他g_main_loop_r命令替换un或者可以使用g_main_loop_quit( gloop ); 用另一种方式.

void StreamingVideo::slotStartStream() // this slot called on start of thread from main thread
{

    if( !isElementsLinked() )
    {
       qDebug() << " we are emitting in dummy server ";
        //emit sigFailed( "elementsFailed" ); // WILL CONNECT IT WITH MAIN GUI ONXCE CODE IS FINISHED
        return;
    }

    gst_bus_add_watch( bus, busCall, gloop );
    gst_object_unref( bus );

    //proper adding to pipe
    gst_bin_add_many( GST_BIN( pipeline ), source, capsFilter, conv, …
Run Code Online (Sandbox Code Playgroud)

c++ qt multithreading gstreamer qthread

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

Debian sid下的RStudio安装失败:libgstreamer依赖问题

我使用Debian sid(amd64),每周滚动更新.我最近从他们的官方网站下载了RStudio桌面版0.99.902并发布了(当然是root用户):

dpkg -i rstudio-0.99.902-amd64.deb

无济于事:

dpkg:依赖问题会阻止rstudio的配置:rstudio取决于libgstreamer0.10-0; 但是:未安装包libgstreamer0.10-0.rstudio取决于libgstreamer-plugins-base0.10-0; 但是:未安装包libgstreamer-plugins-base0.10-0.

系统上安装了这两个软件包的较新版本(1.0-0),但官方Debian存储库中不再提供那些较旧版本(0.10-0).

如何在Debian sid下安装RStudio并完全运行?当然,我从官方Debian存储库安装了R debs,没有任何问题......

谢谢你的帮助!

debian r gstreamer rstudio

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

为什么python gstreamer会在我的脚本顶部没有"gobject.threads_init()"的情况下崩溃?

我编写了一个python脚本来使用gstreamer(pygst和gst模块)来计算replaygain标签,并且它与各种gobject错误不一致.我发现你可以通过在脚本顶部放置以下样板来解决这个问题:

import gobject
gobject.threads_init()
Run Code Online (Sandbox Code Playgroud)

我试了一下,它运作了.任何人都可以解释为什么这些行是必要的,为什么pygst本身不这样做?

python gobject thread-safety gstreamer

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