我尝试将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,因为它只是一个文件名 - 玩家可能拒绝播放它,因为期望另一种文件格式。
EG
gst-launch-1.0 rtspsrc location="rtsp://....." ! rtph264depay ! h264parse ! \
mpegtsmux ! hlssink max-files=0 playlist-length=0 location="/home/user/ch%05d.ts" \
playlist-location="/home/user/list.m3u8" target-duration=15
你必须使用gstreamer吗?否则我相信这个ffmpeg命令能做你想要的。
ffmpeg -i rtsp://... -c copy -hls_list_size 10 -hls_segment_type fmp4 output.m3u8