2024全面拥抱AI

6 月 2 日
阅读 3 分钟
992
从去年年初大模型开始火了之后,最开始注册账号体验了下,后面就没有太用了,感觉没有诉求似的,老板们也在念叨,自己思维上一直在想如何让公司的业务和AI结合,结果想破脑袋也没有找个结合点,包括公司去年的一号项目最后也很鸡肋,我们在负责的业务探索了一个让AI帮助实现将语音输入的内容去口语化,以此降低语音输入...
封面图

从ChatGPT到AGI还有多远

6 月 2 日
阅读 7 分钟
474
21年开始在公司负责一个全链路语音的项目,支持公司的Iot设备,有点类似于市面上”小爱“、”小度“之类的音响,算是语音+语言在AI方向的综合应用,整体交互流程如下图:
封面图

2024年移动端技术探索

6 月 18 日
阅读 5 分钟
1.1k
2023年号称AI元年,AI带来了一些不是很清晰的机会,没有看到有多好的落地,对于互联网,不止技术层面没有突破,业务层面的需求也断崖式下滑,没有创新就没有需求,老业务的修修补补也带不来多少需求。以音视频行业为例,业界很有影响力的LiveVideoStack也停止了商务活动,音视频大会也不再开了。一切都在朝着萎缩的方向...
封面图

多媒体技术简介

8 月 25 日
阅读 1 分钟
188
所有的视频都至少包含一个关键帧,作为文件的第一个帧。其它的关键帧可用来改善视频的质量,不过它们也会增加文件大小。一般而言,每一秒视频至少需要使用 1 个关键帧。若使用此公式,在每秒播放 25个帧的视频中,每 25 个帧就会有 1 个关键帧。增加关键帧个数可改善质量,但是同时增加带宽和网络负载。

多媒体技术(一)之图形图像

8 月 25 日
阅读 8 分钟
148
人眼看到的物体的颜色不仅取决于该物体所反射的光的波长,还与照射它的光源有关.如果用单一蓝色去照射绿色的树叶,则此时的树叶只能是黑色的.因为蓝色光源中没有绿色成分,树叶吸收了全部蓝色而呈现黑色.

多媒体技术(1.1)之图像分辨率

8 月 24 日
阅读 2 分钟
160
「分辨率」这个概念还有「解析度」等说法,所以能从字面上看出来,它描述的其实就是图像包含多少细节、有多「清晰」。但具体到怎么用数字来描述一个图像有多少细节,就有很多个描述的角度,于是「分辨率」有很多种意思。

Image Stride(内存图像行跨度)

8 月 24 日
阅读 5 分钟
157
When a video image is stored in memory, the memory buffer might contain extra padding bytes after each row of pixels. The padding bytes affect how the image is store in memory, but do not affect how the image is displayed.

多媒体技术(1.1)之图像中频率的概念

8 月 23 日
阅读 3 分钟
236
一、图像高频信号和低频信号的理解1.1 图像中的低频信号和高频信号也叫做低频分量和高频分量。简单一点说,图像中的高频分量,指的是图像强度(亮度/灰度)变化剧烈的地方,也就是我们常说的边缘(轮廓);图像中的低频分量,指的是图像强度(亮度/灰度)变换平缓的地方,也就是大片色块的地方。人眼对图像中的高频信号...

Skype SILK codec 介绍

8 月 23 日
阅读 1 分钟
195
 最近简单看了一下Skype SILK codec 算法, 基本原理和流程大体明白了, 以后有时间再仔细研究一下细节,今天就简单说说. SILK Codec是一个语音和音频编解码算法, 对于音频带宽、网络带宽和算法复杂度都具有很好的弹性。支持4种采样率:8KHz、12KHz、16KHz、24KHz;三种复杂度:低、中、高。编码码率在 6~40kbps(不同采样...

多媒体技术(五)之数字音频视频信号的压缩

8 月 22 日
阅读 3 分钟
155
按ITU-R BT. 601建议,数字化后的输入图像格式为720*576像素,帧频为25帧/s,采样格式为4:2:2,量化精度为8bit,则数码率:(720 576 + 360 576 + 360 576) 25帧/s * 8bit = 165.888Mbit/s。如果视频信号数字化后直接存放在650MB的光盘中,在不考虑音频信号的情况下,每张光盘只能存储31s的视频信号。数据压缩的理论基础...

音频编码与容器关系

8 月 22 日
阅读 4 分钟
246
音频编码与容器关系MEPG-1 or MPEG-2 Audio Layer III有损压缩mepg 组织即 MP3 编码格式扩展名.mp3Layer 3:320 kbit/s优秀,192 - 224 kbit/s很好,128 - 192 kbit/s好mimeaudio/mepg audio/MPA audio/mpa-robustAAC有损压缩Fraunhofer IIS、杜比实验室、AT&T、Sony、Nokia扩展名.aac 使用 MPEG-2 Audio Transport Strea...

多媒体技术(二)之声音

8 月 21 日
阅读 19 分钟
399
信息论的观点来看,描述信源的数据是信息和数据冗余之和,即:数据=信息+数据冗余。音频信号在时域和频域上具有相关性,也即存在数据冗余。将音频作为一个信源,音频编码的实质是减少音频中的冗余。自然界中的声音非常复杂,波形极其复杂,通常我们采用的是脉冲代码调制编码,即PCM编码。PCM通过抽样、量化、编码三个步...

linux 网卡配置

8 月 21 日
阅读 8 分钟
274
通常需要以root身份登录或使用sudo以便在Linux机器上使用ifconfig工具。依赖于ifconfig命令中使用一些选项属性,ifconfig工具不仅可以被用来简单地获取网络接口配置信息,还可以修改这些配置(用ifconfig命令配置的网卡信息,在网卡重启后机器重启后,配置就不存在)。

Python 之函数

8 月 20 日
阅读 3 分钟
185
函数参数位置参数: def power(x):默认参数: def power(x, n=2): 默认参数必须指向不变对象!可变参数: def calc(*numbers):关键字参数: def person(name, age, **kw):命名关键字参数:def person(name, age, *, city, job):参数组合:在Python中定义函数,可以用必选参数、默认参数、可变参数、关键字参数和命名关键字参数...

使用sphinx自动提取python中的注释成为接口文档

8 月 20 日
阅读 2 分钟
192
写好了代码,交付给他人使用的时候,查看代码固然可以了解各类和函数的功能细节,但接口文档能更方便的查找和说明功能。所以,一价与代码同步的接口文档是很有必要的。sphinx可以根据python中的注释,自动的生成接口文档,这样有利于保证文档和代码功能的同步。让我们来了解如何自动生成文档。

Python 之面向对象

8 月 19 日
阅读 4 分钟
306
__slots__限制类的绑定属性__str__: print打印对象,返回用户看到的字符串__repr__:返回程序开发者看到的字符串,如直接输入变量,是为调试服务的 {代码...} 可以直接: {代码...} __iter__: 一个类用于for...in循环 {代码...} __getitem__:Fib实例虽然能作用于for循环,看起来和list有点像,但是,把它当成list来使用还是不...

python服务器程序部署

8 月 19 日
阅读 6 分钟
261
WSGI(Web Server Gateway Interface),翻译为Python web服务器网关接口,即Python的Web应用程序(如Flask)和Web服务器(如Nginx)之间的一种通信协议。也就是说,如果让你的Web应用在任何服务器上运行,就必须遵循这个协议。那么实现WSGI协议的web服务器有哪些呢?就比如uWSGI与gunicorn。两者都可以作为Web服务器。可...

python 之基础语法

8 月 18 日
阅读 1 分钟
274
对于作为函数中的list,方法1行不通,因为函数执行后,list长度是不变的,但是可以在函数中释放一个参数list所占内存:del list_new[:]或者list_new[:] = []达到清空列表的目的,速度快,并且彻底

Kotlin 语法

8 月 18 日
阅读 3 分钟
692
比较两个字符串,如果两个字符串的内容一致,在Java中使用 str1 == str2 时,是比较两个字符串的地址值,很清楚两个字符串的地址不一样,返回false,但是在kotlin中,则不是如此,比较的只是字符串的内容,而===相当于Java中的==,用来比较引用对象, 上述代码返回的是true。

CPP 小技巧

8 月 17 日
阅读 10 分钟
190
标准C语言预处理要求定义某些对象宏,每个预定义宏的名称一两个下划线字符开头和结尾,这些预定义宏不能被取消定义(#undef)或由编程人员重新定义。下面预定义宏:

cmake 语法入门

8 月 17 日
阅读 13 分钟
386
其中,通过 cmake_minimum_required 方法指定 CMake 使用版本,通过 project 指定工程名。而 add_executable 就是指定最后编译的可执行文件名称和需要编译的 cpp 文件,如果工程很大,有多个 cpp 文件,那么都要把它们添加进来。定义了 CMake 文件之后,就可以开始编译构建了。CMake 在构建工程时会生成许多临时文件,避...

Android声音播放与录制

8 月 16 日
阅读 9 分钟
636
STREAM的意思是由用户在应用程序通过write方式把数据一次一次得写到audiotrack中。这个和我们在socket中发送数据一样,应用层从某个地方获取数据,例如通过编解码得到PCM数据,然后write到audiotrack。这种方式的坏处就是总是在JAVA层和Native层交互,效率损失较大。

vscode开发android ndk的环境配置

8 月 16 日
阅读 8 分钟
1.2k
最近公司新需求,要求用C/C++实现部分核心代码,打包成静态库跨平台(Android和iOS)使用。 作为Android开发出身的C/C++老白程序员兴奋不已(又可以开心的学习niubility的C/C++了),但之前写JNI代码的集成环境都是Android Studio,最后打包生成的so库也是面向Android平台的。 有什么IDE适合这种跨平台开发的呢?请教了...

NDK 编译常见问题

8 月 15 日
阅读 5 分钟
653
depends on undefined modules问题: {代码...} 解决方案:Android.mk中增加APP_ALLOW_MISSING_DEPS=trueshared library text segment is not shareable问题: {代码...} 解决: {代码...} shared library text segment is not shareablehas text relocations问题: {代码...} 解决:方案一This issue could be solved by chec...

Android线程思考

8 月 15 日
阅读 6 分钟
612
在编程中我们经常遇到多线程相关的问题,记得刚工作的时候对线程没有太多概念,只知道new Thread()run函数中是新的线程,函数多调用几层,特别是一些别人的回调函数中,就忽略了线程引起的并发问题,产生了并发修改异常的崩溃。今天总结一些线程相关的知识。

Android gradle 系列之配置

8 月 14 日
阅读 9 分钟
1k
buildscript中的声明是gradle脚本自身需要使用的资源。可以声明的资源包括依赖项、第三方插件、maven仓库地址等。而在build.gradle文件中直接声明的依赖项、仓库地址等信息是项目自身需要的资源。

OpenGL PBO介绍

8 月 14 日
阅读 7 分钟
743
总结:虽然使用一个PBO但是效果改变不是很明显,因为单个PBO传输还是需要等待的,假如使用2个pbo,这样错开接收就会使效率大大提高,请看下篇使用2个PBO速度慢的问题。

FBO与PBuffer区别

8 月 13 日
阅读 14 分钟
688
渲染管线的最后一个阶段是到帧缓冲区。大部分OpenGL所做的渲染操作都是在默认的帧缓冲中进行的,这个默认的帧缓冲是我们创建一个Surface时自动创建和配置好的,默认情况下,我们使用OpenGL ES使用的窗口系统提供的帧缓冲区,这样绘制的结果是显示到屏幕上,然而实际中有很多情况并不需要渲染到屏幕上,那么使用窗口系统...

OpenGL Frame Buffer Object(FBO)介绍

8 月 13 日
阅读 26 分钟
359
Update: Framebuffer object extension is promoted as a core feature of OpenGL version 3.0, and is approved by ARB combining the following extensions;

OpenGL 之EGL API 介绍

8 月 12 日
阅读 9 分钟
909
EGL 是 OpenGL ES 和底层 Native 平台视窗系统之间的接口。OpenGL ES 本质上是一个图形渲染管线的状态机,而 EGL 则是用于监控这些状态以及维护 Frame buffer 和其他渲染 Surface 的外部层。EGL提供如下机制: