首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >gstreamer-1.0,RTSP H264流和共享内存

gstreamer-1.0,RTSP H264流和共享内存
EN

Stack Overflow用户
提问于 2018-03-07 07:20:14
回答 1查看 2.2K关注 0票数 0

我试图在共享内存中编写RTSP流,然后将其写入.mkv文件中。

我使用这个命令直接在.mkv文件中写入流:

代码语言:javascript
复制
gst-launch-1.0 rtspsrc location=rtsp://admin:admin@192.168.88.248:554/h264 ! rtph264depay ! h264parse ! matroskamux ! filesink location= file.mkv

它起作用了。

现在我添加共享内存:

代码语言:javascript
复制
gst-launch-1.0 rtspsrc location=rtsp://admin:admin@192.168.88.248:554/h264 ! shmsink socket-path=/tmp/foo shm-size=2000000

代码语言:javascript
复制
gst-launch-1.0 shmsrc socket-path=/tmp/foo ! rtph264depay ! h264parse ! matroskamux ! filesink location=file.mkv

我收到消息:

输入缓冲区需要设置RTP上限。

好吧,我写

代码语言:javascript
复制
gst-launch-1.0 rtspsrc location=rtsp://admin:admin@192.168.88.248:554/h264 caps="application/x-rtp, media=(string)video, clock-rate=(int)90000, encoding-name=(string)H264" ! shmsink socket-path=/tmp/foo shm-size=2000000

我又收到了这条消息。

我做错了什么?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-03-07 09:59:55

您需要在shmsrc之后设置上限,例如,下面是我的接收管道:

gst-启动-1.0 -v rtspsrc位置=rtsp://192.168.1.150:8554/8554视频!Shm接收器套接字-path=/tmp/false=2000000等待连接=false

你必须记下上面的水槽上的盖子,下面是我的盖子:

/GstPipeline:pipeline0/GstShmSink:shmsink0.GstPad:sink: caps =“application/x\,\media\=(字符串)视频\,\ payload\=(int)96\,\ clock-rate\=(int)90000\,\caps\=(String)H 264\,\packetization\=(String)1\,\profile-level id\=(String)64002a\,\ sprop-parameter-sets\=(string)\"J2QAKqwbKgHgCJ+WEAAAPoAADqYOAAEZABGQve6wgA\=\=\,KP4Briw\=\”,\ a-tool\=(string)GStreamer\,\a-type\=(String)广播\,\a-framerate\=(String)30,\a refclk=(String)local\,\a-mediaclk\=(String)发件人\,\ ssrc\=(uint)4083957277\ \ clock-base\=(uint)1018840792\,\ seqnum-base\=(uint)13685\,\npt-npt=(Guint64)0\\,播放速度\=(双)1\,\播放比例尺\=(双)1“

现在,使用shmsrc,

启动-1.0 -vm shmsrc套接字-path=/tmp/foo时间戳=true is-live=true num-buffers=1000!应用程序/x,media=(字符串)视频,payload=(int)96,分组化-模式=(字符串)1“!rtph264depay!h264parse!mp4mux!文件墨迹location=file.mp4

注意:我从上面设置了上限,还注意到我在使用mp4mux时设置了um-buffers=1000,我需要发送和eos才能播放该文件。

所以在你的情况下:

代码语言:javascript
复制
gst-launch-1.0 -v rtspsrc location=rtsp://admin:admin@192.168.88.248:554/h264 ! shmsink socket-path=/tmp/foo shm-size=2000000

请记下shmsink0管道中的上限,然后在管道中使用它:

代码语言:javascript
复制
gst-launch-1.0 shmsrc socket-path=/tmp/foo is-live=true num-buffers=1000 ! caps ! rtph264depay ! h264parse ! mp4mux ! filesink location=file.mp4
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/49146230

复制
相关文章

相似问题

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