FFmpeg HLS分段开始时间计算错误

时间:2017-08-14 17:32:47

标签: video ffmpeg h.264 rtsp hls

尝试通过HLS重新流式传输并使用ffmpeg录制我的海康威视IP摄像机。

所以基本上一切都运行正常,但是,当我试图计算一整天记录的持续时间时,会导致分段TS文件之间的不匹配。

基本上我在FFmpeg做的事情是什么:

"ffmpeg",
"-rtsp_transport", "tcp",
"-stimeout", "3000000",
"-re",
"-i", stream,
"-vcodec", "copy",
"-acodec", "libfdk_aac",
"-f", "segment",
"-segment_list_type", "m3u8",
"-segment_list", name,
"-segment_list_size", "1",
"-segment_format", "mpegts",
"-segment_time", "5",
segment_filename,

结果是:

filename   cam1-1502731225-000018.ts
start_time 90.128000
end_time   96.150489

filename    cam1-1502731225-000019.ts
start_time  96.128000
end_time    102.150489

filename    cam1-1502731225-000020.ts
start_time  102.128000
end_time    105.150489

因此文件的每个end_time应该与下一个文件的start_time相同。虽然不是这样。

已经失去了寻找解决方案的日子 - 到目前为止没有运气!但我确实观察到,如果我将视频输出到MP4文件然后继续作为输入(对于相同的命令行) - 它会没问题。

我认为它必须是原始RTSP URL的PTS问题。尝试应用-filter_complex setpts=N/(16*TB)时 - 它解决了问题,但为编码提取了CPU资源。

1 个答案:

答案 0 :(得分:0)

音频帧和视频的长度不完全相同。开始和结束时间可能是根据首先开始的流和最后的结束来计算的。因此,如果音频在一个片段中的视频前20ms结束,则它必须在下一个片段的早期开始20ms。