【问题标题】:FFmpeg HLS Segmenting start time miscalculatedFFmpeg HLS 分段开始时间计算错误
【发布时间】: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


    【解决方案1】:

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

    【讨论】:

    • 感谢您的回复。我想过完全相同的事情,尝试了不同的选项(例如-an(无音频)-同样的事情。你能给我一些建议吗?
    • 我的建议是忽略它。
    猜你喜欢
    • 2016-08-10
    • 2016-06-08
    • 2018-07-18
    • 2016-05-27
    • 1970-01-01
    • 1970-01-01
    • 2013-08-20
    • 2018-03-01
    • 1970-01-01
    相关资源
    最近更新 更多