首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >用gstreamer将RTP转换为RTSP

用gstreamer将RTP转换为RTSP
EN

Stack Overflow用户
提问于 2022-03-10 01:04:29
回答 1查看 484关注 0票数 0

我有一个第三方应用程序,它从热摄像机读取数据,并生成RTP流到给定的UDP源。我试图将这个RTP封装到一个RTSP流中,但是我遇到了问题.

第三方应用程序基本上使用以下命令运行gstreamer

代码语言:javascript
运行
复制
appsrc format=GST_FORMAT_TIME is-live=true block=true caps=video/x-raw,width=640,height=480,format=GRAY8,clock-rate=90000,framerate=10/1 ! openjpegenc ! rtpj2kpay ! udpsink host=127.0.0.1 port=3000

使用下面的命令,我可以可视化机器上的流

gst-launch-1.0 udpsrc port=3000 caps="application/x-rtp, media=(string)video, clock-rate=(int)90000, encoding-name=(string)JPEG2000, sampling=(string)GRAYSCALE, width=(int)640, height=(int)480, payload=(int)96" ! queue ! rtpj2kdepay ! openjpegdec ! videoconvert ! xvimagesink

但是,当尝试使用默认RTP到RTSP应用程序示例时,使用https://github.com/freedesktop/gstreamer-gst-rtsp-server/blob/master/examples/test-launch.c将其转发给RTSP容器时,连接在VLC中失败。命令如下:

代码语言:javascript
运行
复制
./rtp-src-to-rtsp '( udpsrc port=3000 caps="application/x-rtp, media=(string)video, clock-rate=(int)90000, encoding-name=(string)JPEG2000, sampling=(string)GRAYSCALE, width=(int)640, height=(int)480, payload=(int)96" ! queue ! rtpj2kdepay ! rtpj2kpay )'

我做错了什么有什么线索吗?VLC只提供一个非描述性错误。

代码语言:javascript
运行
复制
live555 error: Nothing to play for rtsp://{IP}:{PORT}/test
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2022-03-10 20:45:07

这可能是在VLC中缺乏对J2K的支持(我使用的是3.0.80-0版本)。用以下方式模拟您的源:

代码语言:javascript
运行
复制
gst-launch-1.0 videotestsrc ! video/x-raw,width=640,height=480,framerate=10/1,format=GRAY8 ! openjpegenc ! rtpj2kpay ! udpsink host=127.0.0.1 port=3000

并以下列方式作为RSTP进行中继:

代码语言:javascript
运行
复制
./test-launch "udpsrc port=3000 auto-multicast=0 ! application/x-rtp,encoding-name=JPEG2000,sampling=GRAYSCALE ! queue ! rtpj2kdepay ! image/x-jpc ! jpeg2000parse ! rtpj2kpay name=pay0 "

使用X在Linux上工作,使用:

代码语言:javascript
运行
复制
gst-launch-1.0 rtspsrc location=rtsp://127.0.0.1:8554/test ! application/x-rtp, encoding-name=JPEG2000,sampling=GRAYSCALE ! rtpj2kdepay ! jpeg2000parse ! openjpegdec ! videoconvert ! xvimagesink -v

不过,我还不能在VLC中接收到,也不能为VLC或ffmpeg做出正确的J2K/RTP SDP。更熟练的人可能会提出进一步的建议。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/71417704

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档