使用GStreamer将RTSP转换为HLS

时间:2018-07-17 14:12:24

标签: video-streaming gstreamer rtsp hls

我正在尝试使用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 ffff ...

FFMPEG TS头:4740 1110 0042 f03b 0001 c100 00ff 01ff 0001 fc80 2a48 2801 0646 466d 7065 671f 5365 7373 696f 6e20 7374 7265 616d 6564 2077 6974 6820 4753 7472 6561 6d65 7251 f383 85ff ffff ffff ffff ffff ffff ffff ffff ffff ffff ffff

看起来FFMPEG产生了具有更多信息的标头。

并且使用GStreamer从RTSP保存到MKV(matroskamux)很好。

0 个答案:

没有答案