随笔 - 1940  文章 - 0  评论 - 8  阅读 - 45万

EasyPlayer-rtsp播放器中码率及帧率统计的实现方法

EasyPlayer播放器作为一个开放性和可塑性较强的视频流媒体播放器,所具备的功能并不仅仅只有视频播放,很多功能可以通过改写或者添加代码、调用接口获得,比如添加水印、统计时间等功能,也包括码率、分辨率的统计或者显示。

由于有用户询问到了码率和分辨率的统计,所以本文我们就把EasyPlayer的相关代码分享出来,实现统计后,则可以在左上角看到码率和分辨率的相关信息。

 

码率统计实现代码:

//统计码率
	if (frameinfo.type == 0x01)
	{
	struct timeval tv = {0,0};
	gettimeofday(&tv, NULL);
	unsigned int uiTimes = (tv.tv_sec*1000 + tv.tv_usec/1000) - (sinkParams.tv_bps.tv_sec*1000 + sinkParams.tv_bps.tv_usec/1000);
		if (uiTimes > 0U)
		{
			sinkParams.video_bps = (float)(sinkParams.video_bps_total / (float)uiTimes * 8.0f);//	 / 1024.0f;
		}
		sinkParams.video_bps_total = (float)iFrameSize;
		gettimeofday(&sinkParams.tv_bps, NULL);
	}
	else
	{
		sinkParams.video_bps_total += (float)iFrameSize;
	}

帧率统计实现代码:

//统计帧率
if (uiCurrTime - sinkParams.video_timestamp_total >= 2)
	{
		//if (sinkParams.fpsInSps==0)
		{
			sinkParams.video_fps = sinkParams.video_fps_total / (uiCurrTime - sinkParams.video_timestamp_total);
			sinkParams.video_fps_total = 1;
		}
		sinkParams.video_timestamp_total = uiCurrTime;
	}
	else
	{
		//if (mediainfo.fpsInSps==0)	
		sinkParams.video_fps_total ++;
	}

拓展

EasyPlayer播放器系列项目底层采用了高性能的EasyRTSPClient组件,其低延时控制在行业处于领先位置,提供了非常简单易用的SDK及API接口,用户通过API调用就可以非常快速地开发出属于自己的应用程序,进行第二次开发。

 

posted on   TSINGSEE  阅读(388)  评论(0编辑  收藏  举报
编辑推荐:
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
阅读排行:
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 单元测试从入门到精通
· 上周热点回顾(3.3-3.9)
· winform 绘制太阳,地球,月球 运作规律
< 2025年3月 >
23 24 25 26 27 28 1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30 31 1 2 3 4 5

点击右上角即可分享
微信分享提示