我必须首先说一下,当涉及到使用gstreamer和linux时,我是一条脱离水的鱼,所以我希望有人可以指出我正确的方向。我正在开展一个ANN项目,该项目涉及从树莓派中获取视频流并将流保存在可由神经网络使用的jpeg中。
到目前为止,我可以使用此代码将pi流式传输到我的计算机上。
raspivid -t 999999 -h 720 -w 1080 -fps 25 -hf -b 2000000 -o - | gst-launch-1.0 -v fdsrc ! h264parse ! rtph264pay config-interval=1 pt=96 ! gdppay ! tcpserversink host=MY_IP_ADDRESS port=5000
并在我的笔记本电脑上运行..
gst-launch-1.0 -v tcpclientsrc host=SAME_IP port=5000 ! gdpdepay ! rtph264depay ! avdec_h264 ! videoconvert ! autovideosink sync=false
我遇到的问题是我无法保存帧。
我知道我需要使用multifilesink来保存文件,但问题是我对此很新,我不知道如何将其合并到代码中。
答案 0 :(得分:0)
我建议您阅读应用程序开发手册,以便了解GStreamer的概念:https://gstreamer.freedesktop.org/documentation/application-development/index.html
阅读gst-launch手册也有助于您开始使用它的语法。您基本上构建了元素管道并使用val intent = Intent(ACTION_DIAL)
if (intent.resolveActivity(packageManager) != null) {
context.startActivity(intent)
} else {
Toast.makeText(context, "Cannot launch dialer", Toast.LENGTH_SHORT).show()
}
将它们链接在一起。
进入你的管道,接收器在tcp连接上获取数据,它将降低GDP格式,然后RTP depayloading,h264解码并进入色彩空间转换并发送到scree。您想要以jpeg格式保存内容来替换屏幕部分。因此,让我们将输出部分替换为可编码并保存到磁盘的内容:
!