公司是做车载行车记录仪 APP 的。在升级 HTTPS 的过程中,APP 和记录仪之间的点播视频流总是报错: 1:[ERROR] [URLContext] error:00000000:lib(0):func(0):reason(0) 2:[ERROR] [URLContext] Stream ends prematurely at 41074926, should be 251658240
已知: 1,记录仪都是自签名证书,APP 已经在代码里信任。 2,和记录仪之间的其他 HTTPS 请求都能正常进行,且 APP 能正常播放公开测试的 HTTPS 链接。但是和记录仪 HTTPS 之间视频回放会出错。具体表现为:视频播 2S 要缓冲 1 分钟的样子。 3:用 Mac 端 ffplay 命令播放,同样会 error: [ tls @ 0x600002858000 ] Error in the pull function.sq=0B Itls @ Ox600002858000 ] IO error:End of file [ https @ 0x600003154580 ] Stream ends prematurely at 286720, should be 142944860 Itls @ 0x600002858000 ] The specified session has been invalidated for some reason.
根据错误提示,个人感觉是记录仪硬件的问题可能性较大,因为大多数播放器播放,都会加载不出来,但 IINA 就能播出来,不知道使用了什么黑科技。
现在人比较迷茫,因为我也搞不清楚问题到底是出在 APP 还是记录仪。ijkplayer 已经编译 ssl 版本不知道多少次了
希望音视频大佬指点一二,,助我走出困局。感激!
1
iOCZS 17 天前
说是内存不足。。。。
|
![]() |
2
ysc3839 17 天前 via Android
感觉像是 TCP 连接断开了,先抓包看看吧
|
![]() |
3
yplam 17 天前 via Android
视频流是不是用 mp4 来模拟的?如果这样感觉可能是记录仪返回的 mp4 容器头不规范,后面拼接数据包就有问题
|
4
semistack OP 视频有 ts 和 mp4 ,都会出现这种情况。如果如您所说是容器头不规范,我该如何验证
|
![]() |
8
yplam 17 天前 via Android
@semistack 你不用播放器而是直接下载文件可以吗?下载下来然后按 mp4 规范把 box 信息解析出来然后校验里面的信息。有一种可能是行车记录仪先把自己的视频流声明为一个很大的 mp4 文件,然后再一边录像一边给 mp4 补数据帧,但你的视频播放器却想着先把 mp4 未来的帧信息先缓冲起来,数据当然是不存在导致出错。
|
![]() |
9
yplam 17 天前 via Android
或者你看看播放器是不是有缓冲相关参数,禁用或者设小点
|