Gstreamer Android HW加速的H.264编码
我正在使用从Jetson Nano上Jetson Nano UDP到Android设备的Gstreamer流式传输两个相机流的机器人. 在这一点上,我正在使用其中一个流,并试图编码在Android设备上显示的视频.我的Gstreamer管道看起来像这样: rtspsrc location=rtsp://192.168.1.239:8554/test ! application/x-rtp, payload=96 ! rtph264depay ! amcviddec-omxexynosavcdec ! videoconvert ! autovideosink sync=false" On the phone I'm using pre-built binaries of Gstreamer and have an implementation very similiar to this . 来自MediaCodecList Android API,我设法发现我的设备具
6 2023-05-16
编程技术问答社区
处理与gst-rtsp-server Python绑定的错误
我有一个简单的Python程序,使用GSTSP-Server创建了RTSP流.它有效,但是由于没有错误处理.如果管道有错别字或连接到视频源的问题,我看不到堆栈跟踪或任何记录.我在哪里可以挂接代码来处理此类问题? 我应该提到我是Gobject世界的完整初学者.我怀疑这些库有一种报告错误的标准方法,但是我找不到有关如何完成的文档中的任何内容. 以防有帮助,这是我现在的代码: from threading import Thread from time import sleep import signal import gi gi.require_version("Gst", "1.0") gi.require_version("GstRtsp", "1.0") gi.require_version("GstRtspServer", "1.0") from gi.repository import GLib, GObject, Gst, GstRtsp, GstRtspSe
4 2023-05-16
编程技术问答社区
Python3与Gstreamer的错误
我运行: raspivid -t 999999 -w 1080 -h 720 -fps 25 -hf -b 2000000 -o - | \gst-launch-1.0 -v fdsrc ! h264parse ! rtph264pay config-interval=1 pt=96 \! gdppay ! tcpserversink host=serverIp port=5000 在覆盆子pi上运行: gst-launch-1.0 -v tcpclientsrc host=serverIp port=5000 \! gdpdepay ! rtph264depay ! avdec_h264 ! videoconvert ! autovideosink sync=false 在我的计算机上.然后我收到了从Raspberry流的视频. 现在,我想在计算机中编写一个Python代码来进行.我的代码是: #!/usr/bin/python3 from os impor
50 2023-05-16
编程技术问答社区
并排播放720p时出现gstreamer错误
GSTREAMER在试图从立体UVC摄像机并排流式传输视频时会引起错误. 我有一个通过USB连接到臂板的立体摄像头,但是在摄像机允许GStreamer的最高分辨率设置上,请增加无效的尺寸0x0错误. v4l2-ctl --list-formats-ext -d /dev/video2 ioctl: VIDIOC_ENUM_FMT Index : 0 Type : Video Capture Pixel Format: 'MJPG' (compressed) Name : Motion-JPEG Size: Discrete 2560x960 Interval: Discrete 0.017s (60.000 fps) Interval: Discr
6 2023-05-16
编程技术问答社区
如何用Gstreamer从PNG图像中创建一个mp4视频文件
我正在使用GSTREAMER命令行界面播放,并在创建PNG图像的MP4视频文件时卡住.你们可以帮忙解决这个问题吗? 使用以下命令我从摄像机创建了png图像: gst-launch-1.0.exe -v ksvideosrc!队列 ! Decodebin! VideoConvert! PNGENC! MultiFileSink location =" frame%05D.png" 我能够使用以下命令播放PPNG图像: gst-launch-1.0 -v multifilesRC location =" frame%05d.png" index = 0! pngdec! GlimagesInk 但是,在从PNG图像中创建MP4视频时,我从Pipeline收到EOS: 将管道设置为暂停... 管道正在预计... /GSTPIPELINE:PIPELINE0/GSTDECODEBIN:DECODEBIN0/GSTTYPEFINDELMENT:TYPEFIND.
4 2023-05-16
编程技术问答社区
在opencv中使用gstreamer从raspberrry pi捕捉数据流
我正在尝试通过本地网络将视频从Raspberry Pi摄像机流到我的PC. 在RaspberryPi侧,我将GSTREAMER与以下命令: raspivid -n -t 0 -rot 270 -w 960 -h 720 -fps 30 -b 6000000 -o - | gst-launch-1.0 -e -vvvv fdsrc ! h264parse ! rtph264pay pt=96 config-interval=5 ! udpsink host=192.168.1.85 port=5000 我在PC侧使用以下命令: gst-launch-1.0 -e -v udpsrc port=5000 ! application/x-rtp, payload=96 ! rtpjitterbuffer ! rtph264depay ! avdec_h264 ! fpsdisplaysink sync=false text-overlay=false 在这种情况下,视
0 2023-05-16
编程技术问答社区
使用Gstreamer播放流媒体内容
我想将GSTREAMER用于网络蒸汽.目的是启动视频内容(来自发射器),并在接收方面播放. 我编写了用于蒸网络内容的示例测试代码. 在发射器侧: gst_debug ="*:2" gst-launch-1.0 videotestsrc!视频/X-RAW! jpegenc! rtpjpegpay! udpsink主机= 127.0.0.1端口= 5001 在接收方: gst_debug ="*:2" gst-launch-1.0 udpsrc port = 5001!应用程序/X-RTP,编码名称= JPEG,有效载荷= 26! rtpjpegdepay! jpegdec! AutovideOsink 在接收器中,我会得到以下错误: 将管道设置为暂停... 管道是直播的,不需要preroll ... 将管道设置为玩... 新时钟:GSTSYSTEMCLOCK 0:00:00.130187750 4589 0x1A690A0 WARN GST_PADS GSTPAD.
14 2023-05-16
编程技术问答社区
如何使用gstreamer来叠加视频与字幕
这个问题与如何在视频中添加SRT文件的字幕,并在C程序中与Gstreamer一起播放 我想从SRT文件中叠加带有字幕的MP4视频. 在我看来,这个过程需要两个线程:一个要读取和解码MP4文件,另一个要读取和解析字幕.然后需要以某种方式将它们组合在一起,这就是我认为元素subtitleoverlay的目的.最后,我想查看结果. (当工作起作用时,我将在python中重新编写,并在网络服务器后面安装它,该网络服务器将带有自定义字幕的视频内容并流式传输结果.) 这是我的第一次尝试: gst-launch-1.0 -v \ filesrc location=titles.srt \ ! subparse name=txt \ ! queue \ ! filesrc location=sample.mp4 \ ! decodebin \ ! subtitleoverlay \ ! autovideosink 此打印: WARNING:
4 2023-05-16
编程技术问答社区
vala: 找不到Gst命名空间
使用GSTREAMER名称空间" GST"时,我在" Vala"方面有一些问题 瓦拉无法认出它...有人可以帮我吗? 错误:Gst namaspace could not be found 我是瓦拉的新手,所以我不知道该怎么办 解决方案 编译时您需要将--pkg gstreamer-1.0之类的东西传递到valac. 您需要使用的任何软件包都需要告诉编译器.有34个包装与valac分发,使用" GST"名称空间,并且您没有提供有关您实际尝试做的事情的任何信息……大多数基本内容都在gstreamer-1.0>中(或者,如果您是使用0.10,gstreamer-0.10),但最终您可能至少使用其他几个.
14 2023-05-16
编程技术问答社区
如何通过gstreamer管道播放两个mp4视频?
我想创建一个GSTREAMER管道来播放两个MP4视频. 是否可以使用GST Launch玩? 我可以将MultiFileSRC用于此目的吗? 请告诉我播放两个视频背对背的途径. 预先感谢! 解决方案 实际上没有一种使用单个GST-Launch命令来执行此操作的方法.视频解码器在使用MultiFileSRC时第一个视频结束后,发送了流的结束事件. 如果您使用GST-Launch的设置已死,则可以在Shell脚本中包装两个GST-Launch命令: #!/bin/sh file1=$1 file2=$2 gst-launch filesrc location="$file1" ! decodebin2 ! autovideosink gst-launch filesrc location="$file2" ! decodebin2 ! autovideosink 另一种方法是在C中编写一个简单的GStreamer应用程序,以创建第一个视频的管道,播放它
4 2023-05-16
编程技术问答社区
当与Tee一起使用时,带有VADER元素的gstreamer管道在PAUSE时停顿。
我有使用Pocketsphinx的VAD元素的管道: Gst.parse_launch( "pulsesrc device=\"alsa_input.usb-046d_08c9_674634A4-02-U0x46d0x8c9.analog-mono\" " + "! vader name=vad auto-threshold=true " + "! level name=wavelevel interval=100000000 " + // level interval is in nanoseconds "! wavenc " + "! filesink location=audioz.wav" ); 它可以正常工作,除了流式传输在没有声音的情况下停止 资源. 我想录制以继续独立于V
8 2023-05-16
编程技术问答社区
如何使用RTCP的RTP时间和NTP时间计算RTP数据包的延迟
我正在使用WEBRTC向GSTREAMER发送视频流.我可以从GSTREAMER中的RTCP SR数据包中获取数据包的RTP时间和NTP时间.在接收方的接收器我想计算该数据包在发件人处创建的时间. 我目前正在计算延迟为 delay =发送的数据包 - 接收数据包的时间 (所有客户端都没有相同的NTP时间) 时间差=(接收器的ntp -ntp发件人的NTP) 我将每个RTP数据包的RTP时间转换为NTP值 90000是时钟速率 发送packet =(RTP数据包中的RTP时间)-RTCP数据包中的RTP时间)/90000) * 1000000000 + rtcp中的NTP(转换为NS) delay =(ns中的接收器NTP - 时间差) - ns中的数据包发送时间(NTP值) 延迟显示在本地网络中的12046392纳米SEC左右,我认为我在计算中做错了什么. 解决方案 RTCP SR可以帮助映射RTP(基于示例时钟的相对)时间戳
8 2023-05-16
编程技术问答社区
GStreamer: 多个RTMP源,画中画在Jetson Nano上复用,然后与Belabox的RTMP管道一起使用。
我的目标是在图片组合中的图片中将(2)RTMP源编码为H265 mpegts,仅从CAM1 RTMP源将音频发送到AppSink; 这就是我在脑海中看到它的方式,但我可能错了: [已确认]图片管道中的图片(在设备上)图片: 使用的设备:CAMLink 4K(Sony Action Cam FDR-X3000)和Logitech C920 v4l2src device=/dev/video0 ! nvvidconv ! queue ! comp.sink_0 v4l2src device=/dev/video1 ! video/x-raw, width=800, height=448, framerate=30/1, format=YUY2 ! videobox left=-4 right=-4 top=-4 bottom=-4 ! nvvidconv ! queue ! comp.sink_1 nvcompositor name=comp sink_0::width
10 2023-05-16
编程技术问答社区
在一个进程中多次加载相同的gstreamer元素
这可能是愚蠢的问题. GSTREAMER元素如何在一个过程中多次加载?当创建Gstreamer元素时,如果已经创建并存在在内存中,它们是否共享?就我而言,一个过程会创建多个线程,对于每个线程,我正在创建以下gstreamer元素,将管道链接到播放状态,filesrc-> q-> filesink,这起作用.但是,当我在q-> filesink之间添加GSTREAMER元素(新编写的用于处理GST缓冲区数据)时,所有线程停止工作时,可能是什么问题?我该如何调试?请提供输入.提前致谢. -opensid 解决方案 这些元素在共享库中,因此代码将仅在内存中.但是,每个实例都会为自己的状态占据一些内存.在进行多线程的内容时,您应该从主线程中调用GST_INIT().由于GSTREAMER已经为数据处理创建了新线程,因此可以节省从一个主线程创建所有GSTREAMER管道.您可以并行运行多个管道. 其他解决方案 我同意Ensonic的答案,因为它适用于存储在Klass中的数据.但是,
18 2023-05-16
编程技术问答社区
Gstreamer v4l2src在Jetson Nano上运行时未能分配缓冲区
我正在尝试运行一条复制视频流的GSTREAMER管道,以便在两个应用程序中使用.这是我的示例管道,在Jetson Nano上运行时失败,但在我的Ubuntu PC上工作. 我已经使用v4l2loopback创建2个V4L2设备(/dev/dev/video1和/dev/videet2),例如: sudo modprobe v4l2loopback video_nr=1,2 生产者: gst-launch-1.0 videotestsrc ! tee name=t ! queue ! v4l2sink device=/dev/video1 t. ! queue ! v4l2sink device=/dev/video2 消费者: gst-launch-1.0 v4l2src device=/dev/video2 ! xvimagesink 您可以看到我正在尝试使用tee复制流并将其发送到我使用v4l2loopback创建的2 v4l2设备.
6 2023-05-16
编程技术问答社区
Javafx不能在ubuntu 20上播放mp3文件并出现MediaException。
配置:Ubuntu 20,Javafx 11,JDK15,语言级别8 问题:MP3文件可以直接在Ubuntu上播放,而不能在以下代码中播放,但是该代码可用于播放 *.wav和 *.aiff音频文件,除了mp3: Media media = new Media(new File("assets/audios/shoot.mp3").toURI().toString()); MediaPlayer mediaPlayer = new MediaPlayer(media); mediaPlayer.play(); 例外: Exception in thread "main" MediaException: UNKNOWN : com.sun.media.jfxmedia.MediaException: Could not create player! : com.sun.media.jfxmedia.MediaException
8 2023-05-16
编程技术问答社区
使用gstreamer通过RTP传输视频流
我正在尝试使用GSTREAMER从一个设备传输一个视频文件,然后通过RTP将视频文件传输到另一台设备.在发件人侧我使用以下命令: gst-launch filesrc location =/home/kuber/desktop/melt.mpg! mpegparse! rtpsend ip = localhost 但这给出以下错误:没有元素" rtpsend",我下载了所有RTP工具,但仍然存在相同的错误.我是否以某种错误的方式使用rtpsend? 另外,有人可以从一个设备到另一台设备传输视频文件(本地存储在我的笔记本电脑,而不是testVideOSRC文件)的命令行代码? 强文 解决方案 假设这是一个MPEG1/2基本流(因为您使用的是MPEGPARSE),您要发送出来,您需要在mpegparse之后使用rtpmpvpay,然后将输出提供给UDPSINK. > . mpegparse ! rtpmpvpay ! udpsink host="hostipad
10 2023-05-16
编程技术问答社区
如何在Gstreamer插件链函数中解析GstBuffer和Mat之间的图像
我正在尝试根据其模板实现GSTREAMER插件_CHAIN函数,该函数只需将输入视频框架(BGRX)替换为我的转换图像以相同的大小,如下所示: static GstFlowReturn gst_myplugin_chain (GstPad * pad, GstObject * parent, GstBuffer * buf) { Gstmyplugin *filter; filter = GST_MYPLUGIN (parent); if(filter->silent == FALSE) g_print("I'm plugged, therefore I'm in. \n"); // retrieve pass-in image frame from input buf GstMapInfo map; gst_buffer_map(buf, &map, GST_MAP_READ); cv::Mat frame(cv::Size(width, h
6 2023-05-16
编程技术问答社区
如何在python上用rtsp和GStreamer串流pc网络摄像头
我正在尝试使用Python将笔记本电脑网络摄像头帧传输. 为此,我正在使用GSTREAMER. 在网络上浏览一些示例,我获取以下代码,并使用.mp4格式的本地视频进行了测试 #!/usr/bin/env python import sysimport gi gi.require_version('Gst', '1.0') gi.require_version('GstRtspServer', '1.0') from gi.repository import Gst, GstRtspServer, GObject, GLib loop = GLib.MainLoop() Gst.init(None) class TestRtspMediaFactory(GstRtspServer.RTSPMediaFactory): def __init__(self): GstRtspServer.RTSPMediaFactory.__ini
14 2023-05-16
编程技术问答社区
Python Gstreamer从麦克风录制音频并立即播放
我想从MIC录制音频,并使用GSTREAMER立即从同一个人的扬声器播放它.换句话说;在输入和输出记录之间制作电线 很少有样本并立即播放.我可以使用此代码记录音频到OGG文件: #!/usr/bin/env python import gi gi.require_version('Gst', '1.0') from gi.repository import GObject, Gst, Gtk GObject.threads_init() Gst.init(None) pipeline = Gst.Pipeline() autoaudiosrc = Gst.ElementFactory.make("autoaudiosrc", "autoaudiosrc") audioconvert = Gst.ElementFactory.make("audioconvert", "audioconvert") vorbisenc = Gst.ElementFactory.make("vorb
8 2023-05-16
编程技术问答社区