尝试通过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资源。
答案 0 :(得分:0)
音频帧和视频的长度不完全相同。开始和结束时间可能是根据首先开始的流和最后的结束来计算的。因此,如果音频在一个片段中的视频前20ms结束,则它必须在下一个片段的早期开始20ms。