2017-08-14 45 views
0

试图通过HLS重新串流并记录我的Hikvision IP摄像机ffmpegFFmpeg HLS分段开始时间计算错误

因此,基本上一切工作正常,但是,当我试图计算整个记录的持续时间时,它会导致分段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资源。

回答

0

音频帧和视频不是完全相同的长度。开始和结束时间可能基于任何流首先开始计算,最后结束。因此,如果音频在一段中的视频前20ms结束,它必须在接下来的20ms开始。

+0

感谢您的回复。我认为完全相同的东西,尝试了不同的选择(例如-an(没有音频) - 同样的东西,你能告诉我些什么吗? –

+0

我的建议是忽略它。 – szatmary