繁体   English   中英

如何通过gstreamer将RTSP视频流保存到MP4文件?

[英]How to save a RTSP video stream to MP4 file via gstreamer?

我需要通过RTSP从我的相机获取视频流并将其保存到文件中。 所有这些都需要通过gstreamer来完成。

经过一些谷歌搜索,我尝试了以下内容:

gst-launch-1.0 rtspsrc location=rtsp://192.168.1.184/live2.sdp ! queue ! rtph264depay ! avdec_h264 ! mp4mux ! filesink location=result3.mp4

但它给出了错误:“错误的管道:无法将avdec_h264-0链接到mp4mux0”

gst-launch-1.0 rtspsrc location=rtsp://192.168.1.184/live2.sdp ! queue ! rtph264depay ! h264parse ! mp4mux ! filesink location=result3.mp4

它开始工作,但结果文件无法通过VLC播放。

什么是正确的命令? 如果你在h264parse和avdec_h264之间做出选择,你能解释一下原因吗?

您需要添加-e标志(流结束),以便mp4mux可以最终确定文件,否则您将损坏不可播放的文件。

 gst-launch -e rtspsrc location=url ! decodebin ! x264enc ! mp4mux ! filesink location=file.mp4

第二个命令看起来正确。 原始h264视频数据有点棘手,因为它有两个特征 - “对齐”和“流格式”,它们可以变化。 h264parse可以将h264数据转换为不同h264相关GStreamer元素所需的形式。

avdec_h264是一个解码器元素。 您不想解码数据,因为您显然没有显示它。 您将来自RTSP流的已编码h264数据放入mp4容器文件中。

如果文件没有播放,您应检查流是否正常,或尝试其他媒体播放器,看看它们是否有效(mplayer,Media Player,Quicktime等等)。

您还可以使用“matroskamux”元素尝试多路复用到matroska容器文件中。

如果你的rtspsrc流已经在H264中编码,只需直接写入mp4容器,而不是编写代码。

这是我用于将rtsp录制到mp4的gst-launch-1.0命令:

$ gst-launch-1.0 -e rtspsrc location=rtsp://admin:pass@192.168.85.7/rtsph2641080p protocols=tcp ! rtph264depay ! h264parse ! mp4mux ! filesink location=~/camera.mp4

如果你想做一些事情,比如修改宽度,高度(使用视频),颜色空间(使用视频转换),帧速率(使用封顶滤镜)等,这应该基于视频/ x-raw类型的功能,你应该从视频解码/ x-h264到video / x-raw。

并且,在修改之后,您应该在链接到mux元素之前再次编码(如mp4mux,mpegtsmux,matroskamux,...)。

好像你不确定何时使用视频解码器。 这里只是分享一些使用视频编解码器的经验:

  1. 如果source已经编码,并且我想用相同的编码写入容器,那么管道将会:

    src ! ... ! mux ! filesink

  2. 如果source已被编码,并且我想用不同的编码写入容器,或者我想使用videosink,那么管道将会:

    src ! decode ! ... ! encode ! mux ! filesink src ! decode ! ... ! videosink

  3. 如果source尚未编码(如videotestsrc),并且我想写入容器,那么管道将会:

    src ! encode ! mux ! filesink

注意:执行编解码器时,它需要很高的CPU资源! 因此,如果您不需要执行编解码器工作,请不要这样做。

您可以使用方便的工具gst-inspect-1.0查看src,sink,mux,demux,enc,dec,convert,...等元素。 例如:

$ gst-inspect-1.0 | grep mux

显示所有可用的mux元素。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM