zoukankan      html  css  js  c++  java
  • 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调用就可以非常快速地开发出属于自己的应用程序,进行第二次开发。

  • 相关阅读:
    浅谈线段树
    并查集最简单讲解
    mysql索引原理深度解析
    算法、数据结构可视化
    php算法题---对称的二叉树
    php算法题---连续子数组的最大和
    Jsoup一个简短的引论——采用Java抓取网页数据
    宏定义详细信息
    解决java.sql.SQLException: ORA-01789: query block has incorrect number of result columns
    BZOJ 2435 NOI2011 道路建设 BFS/DFS
  • 原文地址:https://www.cnblogs.com/TSINGSEE/p/15036115.html
Copyright © 2011-2022 走看看