七牛云直播后,利用其 Api 取回放地址,我们取的是 m3u8 格式,所以不存在转码,立即生成,但是返回结果却是零长度字符串。
仔细看,原来使用 try、catch 没让异常触发,注释掉多层 try、catch,发现出现 619 的 HTTP 错误,我还第一次见到 619。
继续分析,发现七牛云在这里传入的两个参数:回放时间范围 start、end,是指 1970 年 1 月 1 日以来的秒数,这在意料之中,但是进一步分析,它这里采用的是 UTC!而在播放认证那里却是使用的本地时区!开发文档中并没有说明此事项。
C# 将本地时间转为 UTC 时间
localDateTime.ToUniversalTime()
1970年1月1日的 UTC 时间
(localDateTime.ToUniversalTime() - new DateTime(1970, 1, 1)).TotalSeconds