您好,我正在尝试使用 gstreamer 构建视频流管道,但我很难使其工作。我有一个支持 MJPG 的相机,所以我想将 jpeg 图像传递给jpegparse并使用rtpjpegpay转换为 rtp 。
./test-launch --gst-debug=3 '(v4l2src device=/dev/video0 ! image/jpeg,width=800,height=600 ! jpegparse ! rtpjpegpay name=pay0 pt=96)'
Run Code Online (Sandbox Code Playgroud)
对于接收端,我尝试了 VLC 播放器,但没有成功打开文件。我不知道为什么 - 这是否意味着上面的语法不正确?
有人可以帮忙吗?
我试过
examples$ ./test-launch --gst-debug=3 '(v4l2src device=/dev/video0 ! image/jpeg,width=800,height=600 ! jpegparse ! rtpjpegpay name=pay0 pt=96)'
stream ready at rtsp://127.0.0.1:8554/test
0:00:05.121994463 207540 0x56458325ef60 ERROR GST_PIPELINE grammar.y:453:gst_parse_element_set: could not set property "pt" in element "pay0" to "96)"
0:00:05.122054890 207540 0x56458325ef60 WARN default grammar.y:1137:priv_gst_parse_yyerror: Error during parsing: syntax error, unexpected $end
0:00:05.122069622 207540 0x56458325ef60 …Run Code Online (Sandbox Code Playgroud) 我有 gstreamer 管道,它接受来自 RTSP 流的输入,将其转换并将其汇入appsink:
data.source = gst_element_factory_make("uridecodebin", "source");
data.convert = gst_element_factory_make("videoconvert", "conv");
data.app_sink = gst_element_factory_make("appsink", "app_sink");
Run Code Online (Sandbox Code Playgroud)
我学会了如何将媒体缓冲区提取到我的应用程序中,但我想知道的是它的时间戳。媒体在左下角附带了我认为相机硬件预渲染的时钟,有没有办法让我得到那个时间?我查看了RTP 标头
,其中应该包含时间戳信息。我查看了 Gstreamer 信息和教程以及具有时间戳的缓冲区描述,但我认为这不是我需要的,它听起来像本地机器时间。ptsdts
总结一下问题,如何从 RTSP 流中提取相机时间戳?
编写以下代码来播放.wav文件,但它似乎不起作用.我想知道我是否遗漏了一些东西.
码:
#include <gst/gst.h>
#include <glib.h>
int main(int argc , char *argv[])
{
GMainLoop *loop;
GstElement *source,*audioparser,*sink,*pipeline;
GstBus *bus;
gst_init(&argc,&argv);
// create a pipeline
loop = g_main_loop_new (NULL, FALSE);
pipeline = gst_pipeline_new ("wav-player");
source = gst_element_factory_make("filesrc","file-source");
audioparser = gst_element_factory_make("wavparse","wav-parser");
sink = gst_element_factory_make("alsasink","sink1");
g_object_set (G_OBJECT (source), "location", argv[1], NULL);
gst_element_set_state (pipeline, GST_STATE_NULL);
// set location to current sourceg_object_set(G_OBJECT(source),"location",argv[1],NULL);
// add elements to bin
gst_bin_add_many(GST_BIN(pipeline),source,audioparser,sink,NULL);
gst_element_link_many(source,audioparser,sink,NULL);
// create bus
bus = gst_pipeline_get_bus(GST_PIPELINE(pipeline));
gst_bus_add_watch (bus, bus_call, loop);
gst_object_unref (bus);
gst_element_set_state(pipeline, GST_STATE_PLAYING);
g_main_loop_run (loop); …Run Code Online (Sandbox Code Playgroud) 除了playbin/playbin2之外,如何在GStreamer应用程序中一起播放音频和视频?
解复用器如何在音频接收器和视频接收器中的视频中播放音频?
请回复.如果可能,请举一个代码示例.提前致谢.
我试图安装gstreamer的所有插件,当我安装gst-plugins-ugly时,它显示了一个无法构建的插件列表,并说没有找到Orc.信息:
configure: *** Plug-ins with dependencies that will NOT be built:
a52dec
amrnb
amrwbdec
cdio
dvdreadsrc
lame
mad
mpeg2dec
sid
twolame
x264
configure: *** Orc acceleration disabled. Requires Orc >= 0.4.6, which was
not found. Slower code paths will be used.
Run Code Online (Sandbox Code Playgroud)
我试图找到Orc,但找不到任何东西.Liborc我发现并安装了,但那是版本0.4.0.有谁知道我在哪里可以找到兽人?我正在运行ubuntu 10.04.
我陷入了困境.我正在遵循以下教程(特别是6.4.2)
http://majorsilence.com/pygtk_audio_and_video_playback_gstreamer
我正在运行Python 2.7,PyGTK 2.24和GStreamer WinBuilds 10.7(主安装程序和SDK).
当我尝试编译程序时,我收到以下错误:
回溯(最近一次调用最后一次):文件"",第1行,在导入gst文件"C:\ Program Files\OSSBuild\GStreamer\v0.10.6\lib\site-packages\gst-0.10\gst__init __.py",line 193,来自_gst import*ImportError:DLL加载失败:找不到指定的模块.
如何导入gst模块?(记住你,我查了一下,pygst导入了.)
先感谢您!
我需要一个gstreamer音频接收器,它输出表示音频流音量级别的整数.采样率不必与输入音频流相同,它可以低得多,例如:每秒一个值就足够了.
这样的水槽存在吗?
似乎可以修改这个来做到这一点:
但如果已经存在某些东西,我宁愿避免写一个!
我目前正在尝试将GStreamer集成到iOS项目中.
我已经下载了gstreamer-1.0-devel-1.2.1-ios-universal.pkg并将GStreamer.framework添加到项目中.我在http://docs.gstreamer.com/display/GstSDK/iOS+tutorial+4%3A+A+basic+media+player上关注iOS 教程,上一篇教程工作正常但是在创建基本媒体时播放器,我一直有启动管道的问题,下面是我使用的代码
-(void) app_function{
GstBus *bus;
GSource *timeout_source;
GSource *bus_source;
GError *error = NULL;
GST_DEBUG ("Creating pipeline");
/* Create our own GLib Main Context and make it the default one */
context = g_main_context_new ();
g_main_context_push_thread_default(context);
/* Build pipeline */
pipeline = gst_parse_launch("playbin2 uri=http://docs.gstreamer.com/media/sintel_trailer-480p.webm", &error);
if (error) {
gchar *message = g_strdup_printf("Unable to build pipeline: %s", error->message);
g_clear_error (&error);
[self setUIMessage:message];
g_free (message);
return;
}
....
}
Run Code Online (Sandbox Code Playgroud)
我得到错误:无法构建管道:没有元素"playbin2"
我同样下载GStreamer for mac,使用相同的方法(gst_parse_launch()),我可以启动一个内部视频播放器来播放视频.
我想也许插件(playbin2)没有很好地安装或配置,我到处寻找希望找到解决方案,但我没有找到...任何帮助将不胜感激.
提前致谢
关于gstreamer 1.0文档和移植指南的Okey我没有发现任何关于events.I试图在我的管道中设置一个eos信号,以便mp4mux可以像这样最终化流:
self.pipe.send_event(Gst.event_new_eos())
Run Code Online (Sandbox Code Playgroud)
但得到了错误:
AttributeError: 'gi.repository.Gst' object has no attribute 'event_new_eos'
Run Code Online (Sandbox Code Playgroud)
而且我认为我拼写错误或者出了什么问题我用Google搜索并在1.00中找到了一些示例而1.0中没有任何例子但问题是我没有找到任何关于send_event或Gst.event_new_eos()移植指南的内容.如果有人能告诉我我是什么,我将不胜感激在这里失踪?
关于gstreamer和tee元素我很好奇处理不同的分支,例如,如果我有这个管道:
gst-launch-1.0 -e videotestsrc ! tee name=spliter spliter. ! queue ! udpsink spliter. ! queue ! x264enc ! mp4mux ! filesink location=something.mp4
Run Code Online (Sandbox Code Playgroud)
如果出现类似的情况,我怎么能处理连接丢失或硬盘不够而没有管道故障的问题?
我想显示原始图像(1.8MB)用gst-launch-1.0。我了解必须先将数据编码为JPG,然后才能实现。如果图像已经以jpg文件存储,那么故事将非常简单:
gst-launch-1.0.exe -v filesrc location=output.jpg ! decodebin ! imagefreeze ! autovideosink
Run Code Online (Sandbox Code Playgroud)
但是,我需要组装管道以显示由3D应用程序转储到磁盘上的原始BGRA 800x600图像(与上面相同)。
到目前为止,这是我所做的,但是问题是它在磁盘上创建了一个完全黑的图像:
gst-launch-1.0.exe -v filesrc location=dumped.bin ! video/x-raw,format=BGRA,width=800,height=600,framerate=1/1 ! videoconvert ! video/x-raw,format=RGB,framerate=1/1 ! jpegenc ! filesink location=out.jpg
Run Code Online (Sandbox Code Playgroud)
GStreamer可以处理此任务吗?