suninf 's blog

It’s not what you know, it’s how you think

Java常用工具类

本文整理Java中常用的工具类,如StringUtils, Arrays, CollectionUtils等

Read more ...

Java8 之Stream

本文整理下Java8引入的Stream流,能大大简化集合类的操作,同时引入了常用的filter, map, reduce等高阶函数的操作类型。

Stream有点类似C++库boost.Range的概念,是基于容器的迭代范围的一个视图,并能够给予视图做各种算法。

Read more ...

Java序列化

Java对象的序列化主要有两种用途:

  1. 把对象的字节序列永久地保存到硬盘上,通常存放在一个文件中;
  2. 在网络上传送对象的字节序列。

Read more ...

GN使用笔记

之前介绍过GYP,它是Google早期用来维护chromium项目的meta-build system,GN则是用来替代GYP的工具,目前chromium及相关的开源项目都迁移到基于GN来管理。并且GN是基于C++编写,效率上比基于python的GYP快了近20倍。

Read more ...

Java8 之Lambda

本文整理下Java8引入的最重要的函数式编程的特征 — lambda表达式,能让代码更加简单易懂。

Read more ...

Java嵌套类

嵌套类(nested class)是指定义在另一个类内部的类,嵌套类存在的目的应该只是为外围类提供服务。

Read more ...

Java范型

Java在5.0开始支持范型,能做到更好的类型安全性可读性,减少容器的元素类型与Object的强制转换。不过,与C++相比,Java的范型相对比较弱,因为范型类的不同类型参数并不会真正实例化出独立的类型,而是通过类型擦除的技术来实现范型。

Read more ...

Java常用容器类

Java容器类是java提供的工具包,包含了常用的数据结构:集合、链表、队列、栈、数组、映射等。

Read more ...

Java反射与动态代理

Java反射机制(Reflection)是区别于C++之类的语言的重要特征,能在运行时自省,操作类的属性,方法,以及创建等等。

Read more ...

FFmpeg滤镜学习

FFmpeg中的libavfilter提供了一整套的基于filter的机制,filter本身是一个插件的形式,可以快速的组装需要的效果。filter可以翻译成过滤器,滤镜,可用于检查输入或者输出,按照预定的规则处理并传递这些数据,将输入数据做特定的变换并输出。

Read more ...

FFmpeg命令使用

本文整理一些常用的ffmpeg的命令。

Read more ...

视频编解码的层次

视频编解码按照处理数据类型的不同,可以分成几个层次:

  • 协议层(Protocol Layer):该层处理的数据为符合特定流媒体协议规范的数据,例如http,rtmp,file等。
  • 封装层(Format Layer):该层处理的数据为符合特定封装格式规范的数据,例如mkv,mp4,flv,mpegts,avi等。
  • 编码层(Codec Layer):该层处理的数据为符合特定编码标准规范的数据,例如h264,h265,mpeg2,mpeg4等。
  • 像素层(Pixel Layer):该层处理的数据为符合特定像素格式规范的数据,例如yuv420p,yuv422p,yuv444p,rgb24等。

Read more ...

avformat_open_input阻塞操作中断的支持

avformat_open_input默认是阻塞操作,如果不加控制,等待时间可能会达到30s以上,对于有些情况,等待30s的体验是无法接受的。

Read more ...

《最重要的事只有一件》之三:成就卓越 释放你内在的潜能

成就卓越的3个关键字:目标,优先事务,生产力。

Read more ...

CentOS上编译FFmpeg动态库

如果基于ffmpeg库来做音视频开发,常常需要自己编译ffmpeg,本文整理了下编译动态库模式的,官方参考文档:https://trac.ffmpeg.org/wiki/CompilationGuide/Centos,不过官方默认是静态编译模式。

Read more ...