Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

[技术咨询] RK3588使用mk动态库推流(低帧率1FPS),再通过addStreamProxy拉流,帧率变为1000FPS #3494

Closed
TRYOKETHEPEN opened this issue Apr 25, 2024 · 8 comments

Comments

@TRYOKETHEPEN
Copy link

TRYOKETHEPEN commented Apr 25, 2024

咨询的功能模块

  • zlmediakit c++ sdk(mk动态库)推流
  • zlmediakit addStreamProxy拉流

咨询的具体内容和问题
RK3588开发板,使用mk动态库推流rtsp输出,本应为1FPS,记为流yolo。
使用vlc无法播放流yolo(参考#608 可能是播放器本身的问题)。
部署在另一台服务器上的zlmediakit通过addStreamProxy对流yolo拉流,录制的MP4文件帧率为1000FPS,zlmediakit的web管理页面显示的时间戳增量信息也异常,看起来像是把dts除了1000倍。
不知道是mk动态库的问题,还是zlmediakit的问题,请问有没有进一步排查的思路建议?

开发板相关信息

zlemdiakit服务相关信息

  • 操作系统及版本:Ubuntu 22.04, 内核5.15.0-97-generic
  • zlmediakit docker版本:zlmediakit/zlemediakit:master,镜像ID为b872a073743e
@xiongguangjie
Copy link
Member

z这个应该是编码器码流里面携带的帧率

@TRYOKETHEPEN
Copy link
Author

TRYOKETHEPEN commented Apr 25, 2024

z这个应该是编码器码流里面携带的帧率

你好,编码器使用的是RK3588的MPP硬件编码器,fps相关参数如下:
image
来自文档https://github.com/rockchip-linux/mpp/blob/develop/doc/Rockchip_Developer_Guide_MPP_CN.md#351-control%E4%B8%8Emppenccfg
image
来自文档https://github.com/rockchip-linux/mpp/blob/develop/doc/Rockchip_Developer_Guide_MPP_CN.md#42-%E7%BC%96%E7%A0%81%E5%99%A8demo

开发板按照如下设置编码器后:
encodefpssetting

只是会使此处的fps变化,时间戳增量仍然异常,录制视频帧率仍然是900~1000fps:
encode固定帧率

异常应该与编码器无关。

@TRYOKETHEPEN
Copy link
Author

另外进行试验如下:
输入视频流为25FPS,对输入的每n帧中丢弃(n-1)帧,只对其中1帧进行AI视觉处理并输出。
n≥6时,时间戳增量稳定出现异常。
n=4或5时,时间戳增量不稳定异常,刷新一下可能又正常了。
n≤3时,时间戳增量稳定正常。

n=8:
8抽7
n=5:
5抽4
5抽4临界
n=4:
4抽3
n=3:
3抽2

@xiongguangjie
Copy link
Member

ZLMediakit 的帧率,是通过解析sps里面的信息获取的(这个是h264的标准规定的,参考h264 sps vui 的解析),播放器也是这么做的,我看你的代码,dts 应该从0开始计数,你的代码直接获取系统时间,作为dts的,你要看dts的间隔值

@TRYOKETHEPEN
Copy link
Author

ZLMediakit 的帧率,是通过解析sps里面的信息获取的(这个是h264的标准规定的,参考h264 sps vui 的解析),播放器也是这么做的,我看你的代码,dts 应该从0开始计数,你的代码直接获取系统时间,作为dts的,你要看dts的间隔值

(1)sps我去学习一下,感谢回复。
(2)dts的间隔值是正常的。我也尝试了从0开始,每次+1000,现象一样。
(3)另外,这个yolo流转record4流,昨晚尝试了开启转hls后用web播放器播放,是正常的1FPS。

@xiongguangjie
Copy link
Member

ZLMediakit 的帧率,是通过解析sps里面的信息获取的(这个是h264的标准规定的,参考h264 sps vui 的解析),播放器也是这么做的,我看你的代码,dts 应该从0开始计数,你的代码直接获取系统时间,作为dts的,你要看dts的间隔值

(1)sps我去学习一下,感谢回复。 (2)dts的间隔值是正常的。我也尝试了从0开始,每次+1000,现象一样。 (3)另外,这个yolo流转record4流,昨晚尝试了开启转hls后用web播放器播放,是正常的1FPS。
(2), 时间间隔正常,那你的截图中时间戳异常是咋回事,是怎么判断识别的,如果hls 正常的,其他协议应该也一样,因为都是用的同一个时间戳

@TRYOKETHEPEN
Copy link
Author

“时间间隔正常,那你的截图中时间戳异常是咋回事” 这就是我提这个issue要问的问题呀

@xiongguangjie
Copy link
Member

“时间间隔正常,那你的截图中时间戳异常是咋回事” 这就是我提这个issue要问的问题呀

你是通过什么办法来判断时间戳异常的?你可以通过rtsp协议抓包来分析时间戳是否异常

@xia-chu xia-chu closed this as completed May 23, 2024
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

No branches or pull requests

3 participants