当前位置: 首页 > news >正文

gsteamer日志输出实例

gstreamer打印时间

输出为可读字符串

  • GST_TIME_ARGS:参数后面跟的时间单位是纳秒

  • GST_TIME_FORMAT:“%"GST_TIME_FORMAT是时间格式化字符串,就相当于”%lld“

搭配起来,要打印一个比较Human Readable String用这个特别方便,下面这个例子:

 GST_DEBUG("PTS %" GST_TIME_FORMAT, GST_TIME_ARGS(GST_TIME_ARGS(frameTimeNs)));

直接输出数值

frameTimeNs是以纳秒为单位,64位整形,需要用’%lld’(long long)格式化:

 GST_DEBUG("PTS %lld" frameTimeNs);

自定义category输出日志

在Gstreamer中日志输出非常强大,可以根据category设置需要显示的部分,还可以设置颜色,突出显示。

首先,需要定义一个category:

GST_DEBUG_CATEGORY_STATIC (codec2dec_debug);
#define GST_CAT_DEFAULT codec2dec_debug

然后在初始化这个category,这里是放在构造函数里面的:

GST_DEBUG_CATEGORY_INIT (codec2dec_debug, "codec2dec", 0, "video decoder");

codec2dec是codec2dec_debug的name,定义好之后,在代码中通过GST_DEBUG输出log,在命令行用GST_DEBUG=codec2dec:5这样的环境变量来打开,就可以看到log输出了。

比如:

GST_DEBUG("Hello world.");

如果想定义category的颜色,可以像下面这样:

  GST_DEBUG_CATEGORY_INIT (debug_dataflow, "GST_DATAFLOW", \
      GST_DEBUG_BOLD | GST_DEBUG_FG_GREEN, "dataflow inside pads"); \

其中GST_DEBUG_BOLD是color flag,定义在gstreamer/gst/gstinfo.h文件中,可以设置前景色,背景色,粗体和下划线。

typedef enum { /*< flags >*/
  /* colors */
  GST_DEBUG_FG_BLACK		= 0x0000,
  GST_DEBUG_FG_RED		    = 0x0001,
  GST_DEBUG_FG_GREEN		= 0x0002,
  GST_DEBUG_FG_YELLOW		= 0x0003,
  GST_DEBUG_FG_BLUE		    = 0x0004,
  GST_DEBUG_FG_MAGENTA		= 0x0005,
  GST_DEBUG_FG_CYAN	     	= 0x0006,
  GST_DEBUG_FG_WHITE		= 0x0007,
  /* background colors */
  GST_DEBUG_BG_BLACK		= 0x0000,	
  GST_DEBUG_BG_RED		    = 0x0010,
  GST_DEBUG_BG_GREEN		= 0x0020,
  GST_DEBUG_BG_YELLOW		= 0x0030,
  GST_DEBUG_BG_BLUE		    = 0x0040,
  GST_DEBUG_BG_MAGENTA		= 0x0050,
  GST_DEBUG_BG_CYAN		    = 0x0060,
  GST_DEBUG_BG_WHITE		= 0x0070,
  /* other formats */
  GST_DEBUG_BOLD		    = 0x0100,
  GST_DEBUG_UNDERLINE		= 0x0200
} GstDebugColorFlags;

在前面的例子中加上颜色定义:

GST_DEBUG_CATEGORY_INIT (codec2dec_debug, "codec2dec", GST_DEBUG_BOLD | GST_DEBUG_FG_GREEN, "video decoder");

最后输出的log就是这样的效果:

0:00:00.340767721 ^[[331m14232^[[00m 0xdef6ec00 ^[[37mDEBUG  ^[[00m ^[[00;01;32m            codec2dec

看着有点难受,这个用less查看就能解析了,用less替换vim看起来非常方便。

相关文章:

  • git与ssh配置方法及注意事项
  • indiegogo/kickstarter海外众筹是什么
  • 微信公众号如何运营和管理?
  • 《大数据之路:阿里巴巴大数据实践》-第1篇 数据技术篇 -第7章 数据挖掘
  • 15万果断给?2022年郫都区高新技术企业认定奖励、时间、条件及申报流程
  • 【校招VIP】[产品][985][5分]实习经历无法凸显个人能力
  • 浅析一下,什么是股票量化机器人?
  • Pai到用时方恨少
  • GPIO端口之AFIO的完全映射与部分映射的理解
  • SpringCloud搭建微服务之Zuul网关
  • Python使用Redis计算经纬度距离
  • 可重入函数
  • ib课程北京国际学校哪里有?
  • 宠物保存服务市场现状及未来发展趋势分析
  • Three.js使用rotation旋转模型
  • 实现windows 窗体的自己画,网上摘抄的,学习了
  • 【159天】尚学堂高琪Java300集视频精华笔记(128)
  • css属性的继承、初识值、计算值、当前值、应用值
  • docker容器内的网络抓包
  • ES6 ...操作符
  • JWT究竟是什么呢?
  • Spark VS Hadoop:两大大数据分析系统深度解读
  • 大数据与云计算学习:数据分析(二)
  • 解析带emoji和链接的聊天系统消息
  • 聊聊hikari连接池的leakDetectionThreshold
  • 融云开发漫谈:你是否了解Go语言并发编程的第一要义?
  • 如何合理的规划jvm性能调优
  • 如何优雅地使用 Sublime Text
  • 我从编程教室毕业
  • 小程序、APP Store 需要的 SSL 证书是个什么东西?
  • 延迟脚本的方式
  • # 数据结构
  • #git 撤消对文件的更改
  • #QT(一种朴素的计算器实现方法)
  • (a /b)*c的值
  • (delphi11最新学习资料) Object Pascal 学习笔记---第8章第2节(共同的基类)
  • (HAL库版)freeRTOS移植STMF103
  • (第二周)效能测试
  • (分布式缓存)Redis持久化
  • (黑马C++)L06 重载与继承
  • (未解决)macOS matplotlib 中文是方框
  • (转)ObjectiveC 深浅拷贝学习
  • .naturalWidth 和naturalHeight属性,
  • .NET Micro Framework初体验(二)
  • .set 数据导入matlab,设置变量导入选项 - MATLAB setvaropts - MathWorks 中国
  • .so文件(linux系统)
  • :O)修改linux硬件时间
  • @DependsOn:解析 Spring 中的依赖关系之艺术
  • @RequestBody的使用
  • [ CTF ]【天格】战队WriteUp- 2022年第三届“网鼎杯”网络安全大赛(青龙组)
  • [Android Studio] 开发Java 程序
  • [BZOJ] 2006: [NOI2010]超级钢琴
  • [IE技巧] 让IE 以全屏模式启动
  • [Java][算法 双指针]Day 02---LeetCode 热题 100---04~07
  • [LeetCode]--61. Rotate List