Jus*_*ter 10 video mp4 rtsp video-streaming 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
Run Code Online (Sandbox Code Playgroud)
但它给出了错误:"错误的管道:无法将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
Run Code Online (Sandbox Code Playgroud)
它开始工作,但结果文件无法通过VLC播放.
什么是正确的命令?如果你在h264parse和avdec_h264之间做出选择,你能解释一下原因吗?
Har*_*vic 15
您需要添加-e标志(流结束),以便mp4mux可以最终确定文件,否则您将损坏不可播放的文件.
gst-launch -e rtspsrc location=url ! decodebin ! x264enc ! mp4mux ! filesink location=file.mp4
Run Code Online (Sandbox Code Playgroud)
第二个命令看起来正确.原始的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
Run Code Online (Sandbox Code Playgroud)
如果你想做一些像修改宽度、高度(使用 videoscale)、颜色空间(使用 videoconvert)、帧率(使用 capsfilter)等,这应该基于 video/x-raw 类型的能力,你应该从视频解码/x-h264 到视频/x-raw。
并且,修改后,您应该在链接到 mux 元素(如 mp4mux、mpegtsmux、matroskamux 等)之前再次编码。
您似乎不确定何时使用视频解码器。这里简单分享一些使用视频编解码器的经验:
如果源已被编码,并且我想用相同的编码写入容器,那么管道将喜欢:
src ! ... ! mux ! filesink
如果源已被编码,并且我想用不同的编码写入容器,或者我想玩视频接收器,那么管道将喜欢:
src ! decode ! ... ! encode ! mux ! filesink
src ! decode ! ... ! videosink
如果源尚未编码(如 videotestsrc),并且我想写入容器,则管道将像:
src ! encode ! mux ! filesink
注意:做codec的时候cpu资源消耗很大!因此,如果您不需要进行编解码器工作,请不要这样做。
您可以使用方便的工具gst-inspect-1.0查看 src、sink、mux、demux、enc、dec、convert、...等元素。例如:
$ gst-inspect-1.0 | grep mux
Run Code Online (Sandbox Code Playgroud)
显示所有可用的 mux 元素。
| 归档时间: |
|
| 查看次数: |
16272 次 |
| 最近记录: |