PS:第一次gstreamer用户在这里。 🙂 我试图从Logitech c920摄像头连接到使用gstreamer的beaglebone的videostream到一个nginx服务器。 但不知何故rtmpsink正在失败。 但是,使用filesink可以将video保存在beaglebone上。 虽然我仍然有一些帧丢失的问题,没有audio,我希望stream媒体部分是第一个工作。 我使用的命令是 GST_DEBUG=4 GST_DEBUG_FILE=gst2.log gst-launch-1.0 -v -e uvch264src device=/dev/video0 name=src auto-start=true average-bitrate=5000000 iframe-period=33 src.vidsrc ! queue ! video/x-h264,width=1920,height=1080,framerate=30/1 ! h264parse ! flvmux ! rtmpsink location="rtmp://192.168.1.104:1935/hls/movie" 我的debugging输出在这里。 要旨 gstreamer只在5秒内退出。 我证实了stream媒体服务器的工作原理。 但是从客户端,gstreamer不给我任何types的错误信息。 或者我不知道如何正确debugging它。 我在这个问题上坚持了这么多天。 任何帮助,将不胜感激。 谢谢。 更新1 :我能够发送本地文件到我的rtmp服务器与ffmpeg和服务器正在处理它如预期。 ffmpeg -re -i /Users/r3dsm0k3/10.mp4 -vprofile baseline -ar 44100 -ac 1 -c copy -f […]
我正在寻找正确的技术,如果有的话,dynamicreplace正在运行的gstreamerpipe道中的元素。 我有一个基于gstreamer的c + +应用程序,它创build的pipe道看起来像这样(使用gst-launch语法): souphttpsrc location =“http://localhost/local.ts”! mpegtsdemux name = d! 排队! mpeg2dec! xvimagesink d。 ! 排队! a52dec! pulsesink 在播放过程中(即GST_STATE_PLAYING是pipe道状态,用户正在欣赏video),我需要从pipe道中删除souphttpsrc,并创build一个新的souphttpsrc,甚至是一个新的霓虹灯源,然后立即将其添加回pipe道并在我们执行此操作之前的同一时间位置处继续播放相同的uri源码stream。 用户可能会看到一个小延迟,这很好。 我们几乎不知道如何删除和replace源代码,我们需要更多的理解。 这是我们迄今为止最好的尝试: gst_element_unlink(source, demuxer); gst_element_set_state(source, GST_STATE_NULL); gst_bin_remove(GST_BIN(pipeline), source); source = gst_element_factory_make("souphttpsrc", "src"); g_object_set(G_OBJECT(source), "location", url, NULL); gst_bin_add(GST_BIN(pipeline), source); gst_element_link(source, demuxer); gst_element_sync_state_with_parent(source); 这并不完美,因为源从头开始播放,其余的pipe道正在等待正确的时间戳缓冲区(我假设),因为几秒钟后,播放select备份。 我试图以多种方式寻找来源,但没有任何工作。 我需要知道正确的方法来做到这一点。 如果我们想要dynamic地replace解码器或其他元件,那么知道一种通用技术(如果存在的话)也是很好的。 谢谢
我在Ubuntu操作系统上使用g streamer-0.10将networking摄像机videostream传输到rtmp服务器,我正在获取video输出,但是它们在audio方面存在问题。 下面的命令用于stream式传输 gst-launch-0.10 v4l2src! videoscale方法= 0! video / x-raw-yuv,width = 852,height = 480,framerate =(fraction)24/1! ffmpegcolorspace! x264enc pass = pass1 threads = 0 bitrate = 900 tune = zerolatency! flvmux name = mux! rtmpsink location ='rtmp://…./live/testing'demux。 alsasrc device =“hw:0,0”! audioresample! audio / x-raw-int,rate = 48000,channels = 2,depth = 16! pulseaudiosink Blockquote 通过运行上述命令我得到一个错误 gstbaseaudiosrc.c(840):gst_base_audio_src_create():/ GstPipeline:pipeline0 / […]
我正在使用gstreamer(gst-launch)来捕捉摄像头,并保存为video和图像帧。 stream水线的问题是,当stream水线结束(中断)videologging时,它不能支持位置跟踪和搜寻。 因此,video播放与未知长度的VLC播放器。 我认为问题在于pipe道本身。 我们如何能够实现支持位置跟踪和寻找。 下面你可以看到gstreamerpipe道代码: gst-launch -v –gst-debug-level=0 \ v4l2src device=/dev/video0 \ ! videorate \ ! video/x-raw-yuv, width=320, height=240, framerate=5/1 \ ! tee name=tp tp. \ ! queue \ ! videobalance saturation=0.0 \ ! textoverlay halign=left valign=top text="(c)PARK ON OM " shaded-background=true \ ! clockoverlay halign=right valign=top time-format="%D %T " text="Date:" shaded-background=true \ ! […]
我试图在Debian上安装gstreamer1.0。 sudo apt-get install gstreamer1.0 有一些依赖性错误。 其中之一是libgstreamer-plugins-base1.0-0的错误版本 我尝试安装它: sudo apt-get install libgstreamer-plugins-base1.0-0 我得到另一个依赖性错误。 这一次错误说 Depends: liborc-0.4-0 (>= 1:0.4.18) but 1:0.4.16-2 is to be installed E: Unable to correct problems, you have held broken packages 如果我尝试安装/重新安装liborc-0.4-0与apt-get,它告诉我,我已经有了最新的版本。 我已经search,发现这是一个问题,因为libgstreamer-plugins-base1.0-0最近更新了回购站,但没有能力更新与apt-get,我不知道如何进行。 我是debian / linux的新手,所以任何帮助都会很棒。 有没有办法让gstreamer1.0安装在我不知道的debian wheezy上?
我试图在Linux上的Qt小部件播放video。 如何在Qt中实现一个基于GStreamer的video小部件? 上述问题与我想要的非常接近,但6岁。 QApplication::syncX(); 在qt5中不再存在,所以我放弃了这一点。 我也更改gst_x_overlay_set_xwindow_id() gst_video_overlay_set_window_handle为gstreamer版本更改。 我的pipe道工程,如果我没有通过video接收器的任何窗口句柄(它只是popup一个新的video窗口)。 我不知道是否我错过了一些东西来让它在Qt中呈现。 编辑 我可以将整个应用程序窗口设置为覆盖,但不是主窗口小部件的一个子部分。 此外,无法让appsink工作,但glimagesink似乎工作。 // QWidget* widget = QApplication::activeWindow(); // this works QWidget* widget = new QWidget(ui->base_widget); // this doesn't work widget->setAttribute(Qt::WA_NativeWindow, true); widget->resize(320,240); widget->update(); widget->setStyleSheet("background-color: red"); widget->show(); winId = widget->winId(); QApplication::sync(); gst_video_overlay_set_window_handle(GST_VIDEO_OVERLAY(sink) , winId);
我试图在RPI 1的x86_64(linux)系统上构build一个项目。我有一个工作工具链 – 我已经构build了一个小程序并在RPi(“Hello World”)上运行它。 我试图build立的项目是gstreamer 。 在configuration脚本中 ,我添加了相应的–host = ,它find了所有正确的工具并成功完成。 但是,当我做这个项目的时候,我得到了以下错误: In file included from gsttracerutils.h:30:0, from gst_private.h:68, from gst.c:96: ../gst/gstutils.h: In function '__gst_slow_read64_be': ../gst/gstutils.h:111:61: error: left shift count >= width of type [-Werror=shift-count-overflow] (((guint##__size) (((const guint8 *) (__data))[__idx])) << (__shift)) ^ ../gst/gstutils.h:164:36: note: in expansion of macro '_GST_GET' #define _GST_READ_UINT64_BE(data) (_GST_GET (data, 0, […]
我的gstreamer版本是0.10,我想通过在顶部和底部插入空白将16:9video扩展到4:3。 我用gst-inspectsearch了插件列表。 有“videoscale”和“videocrop”,但没有“videoexpand”。 有没有直接做这个工作的插件? 编辑:问题已经解决。 “videobox”filter正好符合我的要求。
我正在写一个gstreamer源代码元素。 为此,我查看了类似于我需要的v4l2src之类的源代码。 通过这个函数后,我想知道它的set_caps函数是什么时候调用的? 我知道set_caps会在上游元素执行gst_pad_set_caps被调用,但是谁会为没有sinkpad的源元素调用。 我对这个感兴趣,因为在v4l2src中,像这样的set_caps函数可以获取像width,height和framerate这样的stream参数。 所以我想知道这些值在哪里设置? 请尽快回复。
我试图debugging使用gstreamer库0.10的Linux应用程序,但我无法让gstreamer日志工作。 这是我到目前为止所尝试的: export GST_DEBUG="*:6" GST_DEBUG=*:6 ./app 我也试图把标志选项放在pipe道创build中: gst_parse_launch("appsrc name=myappsrc ! alsasink –gst-debug=*:6", NULL); gst-launch无法正常工作,我试过了: GST_DEBUG=6 gst-launch-0.10 filesrc location=out.opus ! oggdemux ! opusdec ! audioconvert ! alsasink 要么 gst-launch-0.10 filesrc location=out.opus ! oggdemux ! opusdec ! audioconvert ! alsasink –gst-debug-level=6 我浪费了很多时间在这个,一些帮助将非常感激。