【发布时间】:2018-01-22 14:37:37
【问题描述】:
尝试通过 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 资源进行编码。
【问题讨论】:
标签: video ffmpeg h.264 rtsp http-live-streaming