GStreamer-RTSP至HLS/mp4

GStreamer-RTSP至HLS/mp4,gstreamer,mp4,rtsp,http-live-streaming,Gstreamer,Mp4,Rtsp,Http Live Streaming,我尝试将RTSP h.264流保存到HLS mp4文件: gst-launch-1.0 rtspsrc location="rtsp://....." ! rtph264depay ! h264parse ! matroskamux ! hlssink max-files=0 playlist-length=0 location="/home/user/ch%05d.mp4" playlist-location="/home/user/list.m3u8" target-duration=15

我尝试将RTSP h.264流保存到HLS mp4文件:

gst-launch-1.0 rtspsrc location="rtsp://....." ! rtph264depay ! h264parse ! matroskamux ! hlssink max-files=0 playlist-length=0 location="/home/user/ch%05d.mp4" playlist-location="/home/user/list.m3u8" target-duration=15
因此,只有一个文件ch00000.mp4,其中包括整个视频流(3分钟而不是“目标持续时间”中的15秒)

如果我保存到mpegtsmux/ts文件-对于同一个命令,一切都正常


怎么了?提前感谢。

HLS由MPEG传输流段组成。所以首先:
matroskamux
在这里没有意义。您将需要
mpegtsmux
。要指明文件的真正含义,通常需要使用扩展名
.ts
来命名文件。它可能仍然适用于GStreamer,因为它只是一个文件名——玩家可能会拒绝播放它,因为他们希望使用另一种文件格式

例如


您必须使用gstreamer吗?否则,我相信这个ffmpeg命令可以满足您的需要

ffmpeg -i rtsp://... -c copy -hls_list_size 10 -hls_segment_type fmp4 output.m3u8

谢谢你的回复!对于我的问题,制作“.ts”文件的hls播放列表没有问题。主要目标是录制“.mp4”文件的播放列表。我在一个主题问题中给出的命令将视频记录在一个文件中,尽管没有警告/错误。。。因此,我继续寻找解决方案。我不知道GStreamer是否支持苹果最新HLS规范的MP4功能。无论哪种方式,您都需要使用
mp4mux
而不是
matroskamux
。再说一次,我认为这个规范使用了碎片化的MP4文件。所以这些文件本身就有片段。所以我看不出增加播放列表的意义。或者是什么让这种模式与MPEG-DASH完全不同。谢谢您的回复。我知道ffmpeg可以简单地解决这个问题。但我对从gstreamer获得mp4块的可能性感兴趣。据我所知,它不能。。。
ffmpeg -i rtsp://... -c copy -hls_list_size 10 -hls_segment_type fmp4 output.m3u8