来个音视频大佬给指明方向,感激不尽

53 天前
 semistack

公司是做车载行车记录仪 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 版本不知道多少次了

希望音视频大佬指点一二,,助我走出困局。感激!

1770 次点击
所在节点    程序员
9 条回复
iOCZS
52 天前
说是内存不足。。。。
ysc3839
52 天前
感觉像是 TCP 连接断开了,先抓包看看吧
yplam
52 天前
视频流是不是用 mp4 来模拟的?如果这样感觉可能是记录仪返回的 mp4 容器头不规范,后面拼接数据包就有问题
semistack
52 天前
视频有 ts 和 mp4 ,都会出现这种情况。如果如您所说是容器头不规范,我该如何验证
semistack
52 天前
semistack
52 天前
@ysc3839 这种连接着记录仪的 WIFI ,有什么工具抓包吗
ysc3839
52 天前
@semistack iOS 设备可以用 rvictl 抓包。Android 的话似乎只能 root 后抓包。
yplam
52 天前
@semistack 你不用播放器而是直接下载文件可以吗?下载下来然后按 mp4 规范把 box 信息解析出来然后校验里面的信息。有一种可能是行车记录仪先把自己的视频流声明为一个很大的 mp4 文件,然后再一边录像一边给 mp4 补数据帧,但你的视频播放器却想着先把 mp4 未来的帧信息先缓冲起来,数据当然是不存在导致出错。
yplam
52 天前
或者你看看播放器是不是有缓冲相关参数,禁用或者设小点

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/1145901

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX