Video streaming 使用GStreamer将RTSP连接至HLS

Video streaming 使用GStreamer将RTSP连接至HLS,video-streaming,gstreamer,rtsp,http-live-streaming,Video Streaming,Gstreamer,Rtsp,Http Live Streaming,我试图用GStreamer捕获RTSP(H264/AAC)流并将其保存到HLS。命令runnung是: gst-launch-1.0 -v -e rtspsrc protocols=tcp \ location=rtsp://${AXIS_CAMERA_ADDR}/axis-media/media.amp \ ! queue ! rtph264depay ! h264parse ! mpegtsmux \ ! hlssink location="%06d.ts" targ

我试图用GStreamer捕获RTSP(H264/AAC)流并将其保存到HLS。命令runnung是:

gst-launch-1.0 -v -e rtspsrc protocols=tcp \
    location=rtsp://${AXIS_CAMERA_ADDR}/axis-media/media.amp \
    ! queue ! rtph264depay ! h264parse ! mpegtsmux \
    ! hlssink location="%06d.ts" target-duration=5
乍一看,一切都很好:*.ts文件和播放列表已生成。但是*.ts无效-没有玩家可以玩它们(VLC、Safari、MPV)。有趣的是,第一个000000.ts文件就可以了

我还尝试使用FFMPEG执行相同的工作:

ffmpeg -rtsp_flags prefer_tcp \
    -i rtsp://${AXIS_CAMERA_ADDR}/axis-media/media.amp \
    -acodec copy -vcodec copy -f ssegment \
    -segment_list ffmpeg.m3u8 \
    -segment_list_flags +live \
    -segment_time 5 \
    ffmpeg%06d.ts
它正在按预期工作

我的GStreamer命令有什么问题?我还注意到GStreamer和FFMPEG生成不同的*.ts文件头

GStreamer TS头:
4740 003a a600 ffff ffff ffff ffff
ffff ffff ffff…

FFMPEG TS头:
47401110 0042 f03b 0001 c100 00ff 01ff
0001 fc80 2a48 2801 0646 466d 7065 671f
5365 7373 696f 6e20 7374 7265 616d 6564
2077697468204753747265616D657251
f383 85ff ffff ffff ffff ffff ffff ffff
ffff ffff ffff ffff

看起来FFMPEG生成了包含更多信息的标题


顺便说一句,使用GStreamer从RTSP保存到MKV(matroskamux)效果很好。

可能缺少SPS和PPS信息?试试看
h264解析配置间隔=-1
@florianwoch你怎么知道的?!:)谢谢,成功了!根据经验。这是很常见的疏忽……)