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

标签 video ffmpeg h.264 rtsp http-live-streaming

尝试使用 ffmpeg 重新流式传输和录制我的海康威视 IP 摄像机通过 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 资源进行编码。

最佳答案

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

关于video - FFmpeg HLS 分段开始时间计算错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45679892/

相关文章:

ios - Http 直播缓存

ffmpeg - 在我的服务器 Centos 5.8 中使用命令 yum

c# - 从原始 H.264 帧流创建视频流服务器

c# - C# 中的 H.264(或类似)编码器?

video - RTP 的 H264 关键帧问题

php mysql视频上传无法成功运行

algorithm - H.264编解码器解释

android - 删除时未删除的文件仍显示在 ListView 中

ruby - 使用 Rmagick 和 FFmpeg 实现图片缩放效果

video - 如何在空间上将视频拆分为 NxM 切片?