首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >使用GStreamer将RTSP保存到文件中,无需重新编码。

使用GStreamer将RTSP保存到文件中,无需重新编码。
EN

Stack Overflow用户
提问于 2016-08-08 09:08:19
回答 1查看 1.8K关注 0票数 3

我想问一些技巧,如何从监视IP摄像头保存rtsp 流到GStreamer文件。我发现了这个:

gst-launch -e rtspsrc location="rtsp://(my-camera-stream-address)" ! decodebin ! x264enc ! mp4mux ! filesink location=file.mp4

它工作良好,但它有一个非常高的CPU消耗。我确信它会解码我的原始流并将其编码到另一个流中。

请您告诉我,如何做到这一点,而不需要重新编码-如何只是捕获实时流并保存到容器?

EN

回答 1

Stack Overflow用户

发布于 2016-08-08 11:08:44

那么,首先检查一下流的类型。

方法1

使用标识调试元素检查缓冲区:

代码语言:javascript
运行
复制
gst-launch-1.0 rtspsrc location=rtsp://mpv.cdn3.bigCDN.com:554/bigCDN/definst/mp4:bigbuckbunnyiphone_400.mp4 name=r ! application/x-rtp,media=video ! identity silent=false ! fakesink -v

并检查缓冲区的信息,这些信息应该是形式的:

/GstPipeline:pipeline0/GstRTSPSrc:r.GstGhostPad:recv_rtp_src__2072847348_96.GstProxyPad:proxypad9: caps =“application/x\,\media\=(String)音频\,\ payload\=(int)96\,\时钟速率\=(Int)48000\,\编码-名称\=(字符串)MPEG4 4-泛型\,\编码-params\=(String)2\,\profile-level-id=(String)1\,\mode\=(String)AAC\,\ config\=(string)119008c400002000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000\,\ a-sdplang\=(string)en\,\ ssrc\=(uint)2072847348\,\sizelength\=-base\=(Uint)0\,\ seqnum-base\=(uint)1\,\npt start\=(Guint64)0,\npt-停止\=(Guint64)596458000000播放速度\=(双)1\\播放比例尺\=(双)1

注意编码名称..。这指向在mp4中默认使用的aac。同样适用于视频搜索应用程序/x、media=video类型的缓冲区。对我来说,它又是mp4泛型-- h264。

方法2

更简单的方法是使用uridecodebin并转储点文件,查看它是如何构造管道的,并复制相应的元素:

代码语言:javascript
运行
复制
GST_DEBUG_DUMP_DOT_DIR=`pwd` gst-launch-1.0 uridecodebin uri=rtsp://mpv.cdn3.bigCDN.com:554/bigCDN/definst/mp4:bigbuckbunnyiphone_400.mp4 ! fakesink

这将生成具有.dot扩展名的文件--获取PAUSE_PLAYING文件,并使其成为dot -T png 0.0blabla.dot -o blabla.png的图片。检查rtpsometginfdepay后的元素。

对于所有的信息,您可以构建类似的管道:

代码语言:javascript
运行
复制
gst-launch-1.0 -e mp4mux name=m ! filesink location=bla.mp4  rtspsrc location=rtsp://mpv.cdn3.bigCDN.com:554/bigCDN/definst/mp4:bigbuckbunnyiphone_400.mp4 name=r r. ! "application/x-rtp,media=video" ! rtph264depay ! h264parse ! m.  r. ! "application/x-rtp,media=audio" ! rtpmp4gdepay ! aacparse ! m.

请记住,您可以在gst启动开始时创建元素,但稍后使用它们(就像我对mp4mux所做的那样)。

HTH

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

https://stackoverflow.com/questions/38825194

复制
相关文章

相似问题

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