我正在使用运行arago linux的AM335x入门套件开发基于gstreamer的应用程序."gst-launch"(带有测试管道)提供正确的命令行输出(串行),但在屏幕上不显示任何内容.BTW屏幕默认显示一个qt演示应用程序.杀死这个演示应用程序会导致gst-launch失败.
我编译了一个"hello world"gtk app,它给出了"Gtk-WARNING**:无法打开显示:"错误.顺便说一句,这里没有X.
但是当我运行Qt"hello world"应用程序时,演示应用程序顶部会显示一个弹出窗口.
有人可以解释原因.我们欢迎任何解决此问题的建议.
更新1:如果我错了,请纠正我.我在想也许使用qt-gstreamer API可能是最简单的方法.
UPDATE2:我能够使用"fbdevsink"gstreamer插件完成这项工作.感谢所有指针.
寻找有关如何在一个模块中混合两个输入方面使用命名元素的解释。例如在一个 mpegtsmux 模型中混合音频和视频
gst-launch filesrc location=surround.mp4 !解码箱名称=dmux !队列 !音频转换!lammp3enc dmux。!队列 !x264enc!mpegtsmux 名称=多路复用器!队列 !文件接收器位置=out.ts
上面的管道提供了如下所示的插件互连

所以它显示音频没有连接到 mpegtsmus。
如何修改命令行以在 mpegtsmux 中进行音频和视频复用?
谢谢!
我想知道如何检查 gstreamer 中元素的接收垫是否正在获取数据。
每当它没有获取数据时,我想重置或重新启动管道。
谁能告诉我如何重置或重新启动管道?重新启动管道时会发生什么?以及如何知道 pad 的传入数据?
我想创建 rtsp 服务器,其工作方式类似于某些 ip 摄像机。
RTSP 查询相机外观:
DESCRIBE /axis-media/media.amp?videocodec=h264&camera=1&resolution=640x480&fps=15
Run Code Online (Sandbox Code Playgroud)
gst-rtsp-streamer 的文档说:
通常 url 将决定应创建哪种类型的管道。例如,您可以使用查询参数来配置管道的某些部分,或根据某些 url 模式选择编码器和负载器。
但我找不到任何示例来解析查询字符串并创建不同的管道。我只看到不同的道路。
有类似的问题,但我无法理解答案。
先感谢您!
我正在尝试使用 gstreamer 对音频文件进行编码。我正在使用命令
gst launch filesrc location=s.pcm ! audio/x-raw-int, rate=4000, channels=2, endianness=1234, width=16, depth=16, signed=true ! ffenc_aac ! filesink location=file.wav
Run Code Online (Sandbox Code Playgroud)
我收到一条错误消息:-
将管道设置为暂停...管道正在预滚动...错误:来自元素 /GstPipeline:pipeline0/GstFileSrc:filesrc0:内部数据流错误。其他调试信息:gstbasesrc.c(2625):gst_base_src_loop():/GstPipeline:pipeline0/GstFileSrc:filesrc0:流任务已暂停,原因未协商(-4)错误:管道不想预卷。将管道设置为 NULL ...正在释放管道...
谁能指导我解决这个问题
我正在使用OpenCV捕获和处理视频帧,我想将它们写成h265视频文件.我正在努力从OpenCV获得适当的Gstreamer管道.
Gstreamer本身很好用.特别是,我能够运行这个命令,它可以非常快速地编码视频(感谢GPU加速)并将其保存到mkv文件中:
gst-launch-1.0 videotestsrc num-buffers=90 ! 'video/x-raw, format=(string)I420, width=(int)640, height=(int)480' ! omxh265enc ! matroskamux ! filesink location=test.mkv
Run Code Online (Sandbox Code Playgroud)
现在我想从我的OpenCV应用程序中做同样的事情.我的代码是这样的:
Mat img_vid = Mat(1024, 1024, CV_8UC3);
VideoWriter video;
video.open("appsrc ! autovideoconvert ! omxh265enc ! matroskamux ! filesink location=test.mkv", 0, (double)25, cv::Size(1024, 1024), true);
if (!video.isOpened()) {
printf("can't create writer\n");
return -1;
}
while ( ... ) {
// Capture frame into img_vid => That works fine
video.write(img_vid);
...
}
Run Code Online (Sandbox Code Playgroud)
乍一看,这似乎有效,但它的作用是创建文件命名 "appsrc ! autovideoconvert ! omxh265enc ! matroskamux ! filesink location=test.mkv"并用未压缩的视频帧填充它, …