02 2023 档案
摘要:在Linux系统中有大量的临界资源需要保护,如何让各个任务有条不紊的访问这些资源,这涉及到Linux中并发访问的保护机制设计相关知识。后面会详细介绍这几个机制。 (据可靠消息,锁的实现经常出现在笔试环节。既可以考察面试者对锁的原理的理解,又可以考察面试者编程技能)。 注:部分代码都是根据ARM64架
阅读全文
摘要:前面3篇我们讲解了camera的基础概念,MIPI协议,CSI2,常用命令等,本文带领大家入门,如何用c语言编写应用程序来操作摄像头。 Linux下摄像头驱动都是基于v4l2架构,要基于该架构编写摄像头的应用程序,必须先要搞清楚什么是v4l2。 1. 什么是v4l2v4l2是video for Li
阅读全文
摘要:我们常用的电脑摄像头接口是USB接口,而常见的智能手机上的摄像头是MIPI接口,还有一部分的摄像头(比如说某些支持DVP接口的硬件)是DVP接口;通俗的讲,USB是串行通用串行总线(Universal Serial Bus)的简称,而MIPI是移动行业处理器接口(Mobile Industry Pr
阅读全文
摘要:前言 Uart在一个嵌入式系统中是一个非常重要的模块,他承担了CPU与用户交互的桥梁。用户输入信息给程序、CPU要打印一些信息给终端都要依赖UART。 本文将以Exynos4412的UART控制器为基础,讲解UART的原理以及驱动程序如何编写。 UART是什么 UART是通用异步收发传输器(Univ
阅读全文
摘要:SPI概述 Serial Peripheral interface 通用串行外围设备接口 是Motorola首先在其MC68HCXX系列处理器上定义的。SPI接口主要应用在 EEPROM,FLASH,实时时钟,AD转换器,还有数字信号处理器和数字信号解码器之间。 SPI,是一种高速的,全双工,同步的
阅读全文
摘要:前言 状态机在实际工作开发中应用非常广泛,在刚进入公司的时候,根据公司产品做流程图的时候,发现自己经常会漏了这样或那样的状态,导致整体流程会有问题,后来知道了状态机这样的东西,发现用这幅图就可以很清晰的表达整个状态的流转。 一口君曾经做过很多网络协议模块,很多协议的开发都必须用到状态机;一个健壮的状
阅读全文
摘要:前言 有粉丝问我到底什么是ARM,搞不清楚Cortex、arm内核、arm架构、ARM指令集、soc这些概念都是什么关系,下面一口君给大家整理一下关于ARM相关的一些概念。 1、ARM既可以认为是一个公司的名字,也可以认为是对一类微处理器的通称,还可以认为是一种技术的名字。2、ARM公司是专门从事基
阅读全文
摘要:最近为了在arm板子上移植刷卡器,比较简单,但也遇到了坑,现在和大家分享下。 购买刷卡器 某宝很多,应该选哪一种呢?一口君一共买了4种刷卡器,有2种可以用,还有2种不能用。下图为最方便的一款,一口君选的是ID卡。 为了避免做广告嫌疑,就不贴购买链接了,但是切记:一定要买带serial芯片的,比如ch
阅读全文
摘要:一、CSM300概述 CSM300(A)系列是一款可以支持 SPI / UART 接口的CAN模块。 1. 简介 CSM300(A)系列隔离 SPI / UART 转 CAN 模块是集成微处理器、 CAN 收发器、 DC-DC隔离电源、 信号隔离于一体的通信模块, 该芯片可以很方便地嵌入到具有 SP
阅读全文
摘要:概念 Linux内核的信号量在概念和原理上和用户态的System V的IPC机制信号量是相同的,不过他绝不可能在内核之外使用,因此他和System V的IPC机制信号量毫不相干。 如果有一个任务想要获得已经被占用的信号量时,信号量会将其放入一个等待队列(它不是站在外面痴痴地等待而是将自己的名字写在任
阅读全文
摘要:一、1个端口号可以同时被两个进程绑定吗? 根据端口号的绑定我们分以下几种情况来讨论: 2个进程分别建立TCP server,使用同一个端口号8888 2个进程分别建立UDP server,使用同一个端口号8888 2个进程1个建立TCP server、1个建立UDP server,都使用端口号888
阅读全文
摘要:一、粉丝提问 i2c的设备树和驱动是如何匹配以及何时调用probe的?粉丝手里的I2C外设是ov5640,一个摄像头。粉丝提问,一口君必须安排。 二、问题分析 设备树信息如下: ov5640: ov5640@3c { compatible = "ovti,ov5640"; reg = <0x3c>;
阅读全文
摘要:一、什么是PWM PWM,英文名Pulse Width Modulation,是脉冲宽度调制缩写,它是通过对一系列脉冲的宽度进行调制,等效出所需要的波形(包含形状以及幅值),对模拟信号电平进行数字编码,也就是说通过调节占空比的变化来调节信号、能量等的变化,占空比就是指在一个周期内,信号处于高电平的时
阅读全文
摘要:概述 用简单的话来定义tcpdump,就是:dump the traffic on a network,根据使用者的定义对网络上的数据包进行截获的包分析工具。 tcpdump可以将网络中传送的数据包的“头”完全截获下来提供分析。它支持针对网络层、协议、主机、网络或端口的过滤,并提供and、or、no
阅读全文
摘要:一、概念 看门狗的简称是WDT(Watch Dog Timer),exynos4412scp中的看门狗定时器(WDT)是一种定时装置。 1. 工作原理 由(一般需要客户编写)软件读写定时器相关的寄存器,打开看门狗,并设定计数时间(以秒或分钟计算),定时器计数计满,由软件清零,以表明系统状态正常,这时
阅读全文
摘要:一、RTC RTC(Real-Time Clock) 实时时钟。 RTC是集成电路,通常称为时钟芯片。在一个嵌入式系统中,通常采用RTC来提供可靠的系统时间,包括时分秒和年月日等,而且要求在系统处于关机状态下它也能正常工作(通常采用后备电池供电)。它的外围也不需要太多的辅助电路,典型的就是只需要一个
阅读全文
摘要:目录 前言 一、uboot 1. 概念 2. uboot基本功能 3. 常用命令 4. 配置参数举例 1)ubuntu环境 2)开发板设置 二、exynos-4412 Soc 启动顺序 1. exynos-4412内存布局 2. Booting Sequence 三、内核启动流程概述 1. 内核启动
阅读全文
摘要:1. SPI总线 1.1. SPI总线概述 SPI,是英语Serial Peripheral interface的缩写,顾名思义就是串行外围设备接口。是Motorola首先在其MC68HCXX系列处理器上定义的。SPI接口主要应用在 EEPROM,FLASH,实时时钟,AD转换器,还有数字信号处理器
阅读全文
摘要:驱动认知 1. 什么是驱动 驱动就是对底层硬件设备的操作进行封装,并向上层提供函数接口。 设备分类:linux系统将设备分为3类:字符设备、块设备、网络设备。 字符设备:指只能一个字节一个字节读写的设备,不能随机读取设备内存中的某一数据,读取数据需要按照先后顺序。字符设备是面向流的设备,常见的字符设
阅读全文
摘要:https://zhuanlan.zhihu.com/p/139394687 写在前面,本文为笔者参考了很多篇博客,传感器手册,芯片手册,汇总了 ISP 可能涉及到的步骤流程,整理所得万字长文,并针对 ISP 芯片流程图总结画出了题图的 ISP流程图,如有错误轻喷。 主要包含:内部结构/控制方式 /
阅读全文
摘要:《2.Linux驱动|瑞芯微rtc-hym8563移植笔记》 《3.Linux驱动 | Linux内核 RTC时间架构-基于瑞芯微》 0、环境 soc : rk3568 board: EVB1-DDR4-V10 软 件:Android 11 Linux:4.19.232 BASH 复制 全屏 一、o
阅读全文
摘要:最近在玩瑞芯微平台的产品,移植了几个设备的驱动,遇到了一些问题,总结后发现大部分问题都出在了GPIO配置的问题上,写下本篇文章,用来分享一下调试的心得。 有喜欢瑞芯微的朋友,可以加我好友,拉你进群,一起学习进步。 0、前言 本文基于rk3568平台。 要查看rk3568 GPIO分组及地址信息,需要
阅读全文
摘要:一口君最近在玩瑞芯微的板子,之前写了几篇基于瑞芯微的文章,大家可以学习一下。 《瑞芯微rk356x板子快速上手》 《Linux驱动|rtc-hym8563移植笔记》 《Linux驱动 | Linux内核 RTC时间架构》 《瑞芯微 | 摄像头ov13850移植笔记》 《rk3568 | 瑞芯微平台G
阅读全文
摘要:前面2篇我们讲解了camera的一些基础概念和知识。 本文主要讲述在瑞芯微平台上摄像头开发常用的调试命令。 0、环境 soc : rk3568 board: EVB1-DDR4-V10 软 件:Android 11 Linux:4.19.232 Camera:ov13850 1. v4l2-util
阅读全文
摘要:上一篇我们讲解了camera的一些基础概念和知识。我们说了,现在的手机由于高分辨率的要求,现在基本上都是基于MIPI、CSI协议来实现的,本篇讲解MIPI、CSI的一些基础知识。 摄像头常用术语 下面这些术语是camera驱动中经常用到的缩略语。 AE(Auto Exposure):自动曝光。 AF
阅读全文
摘要:Makefile: 1 2 3 4 5 6 all: gcc -o server server.c -lpthread gcc -o client client.c clean: rm server client server.c: /*TCP: server.c */ #include <sys/
阅读全文
摘要:编写守护进程的步骤: 1、创建子进程,父进程退出。 2、在子进程中创建新会话。 setsid(); 3、改变当前目录为根目录。 chdir("/"); 4、重设文件权限掩码。 umask(0); 5、关闭文件描述符。 for(i = 0; i < getdtablesize(); i++) /* 第
阅读全文
摘要:实验内容:有3个进程,其中一个为父进程,其余两个是该父进程创建的子进程,其中一个子进程运行"ls -l"指令,另一个子进程暂停5s之后异常退出,父进程先用阻塞方式等待第一子进程的结束,然后用非阻塞方式等待另一个子进程退出,等待收集到第二个子进程结束的信息,父进程就返回。 /* multi_proc.
阅读全文
摘要:1、编译openwrt系统内核使它支持usb,进入在/openwrt/trunk上执行make menuconfig 2、1). 添加USB 相关支持Kernel modules —> USB Support —> <*> kmod-usb-core. ##默认已经选了Kernel modules
阅读全文
摘要:界面退出后进程程序还在运行,不会被杀死,如音乐播发器、后台下载等 注:本文只讨论Started方式 main.xml代码分析 <?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.andr
阅读全文
摘要:本文只讨论扩展Binder类 创建一个Binder.xml <?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:
阅读全文
摘要:首先建立一个Intent.xml <?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:orientation="
阅读全文
摘要:界面UI: package my.work.Library; import java.util.Timer; import java.util.TimerTask; import java.util.regex.Matcher; import java.util.regex.Pattern; imp
阅读全文
摘要:Advertisement.java public interface Advertisement { //接口 public void showAdvertisement(); public String getCorpName(); } AdvertisementBoard.java publi
阅读全文
摘要:Example10_1.java import java.io.*; public class Example10_1 { public static void main(String args[]) { File f = new File("C:\\ch10","Example10_1.java"
阅读全文
摘要:Example10_4.java import java.io.*; public class Example10_4 { public static void main(String args[]) { int n=-1; byte [] a=new byte[100]; try{ File f=
阅读全文
摘要:Example10_5.java import java.io.*; public class Example10_5 { public static void main(String args[]) { byte [] a = "新年快乐".getBytes(); byte [] b = "Hap
阅读全文
摘要:english.txt The arrow missed the target. They rejected the union demand. Where does this road go to? Where does this road go to? Example10_7.java impo
阅读全文
摘要:Example10_8.java import java.io.*; public class Example10_8 { public static void main(String args[]) { RandomAccessFile inAndOut=null; int data[]={1,2
阅读全文
摘要:Example10_10.java import java.io.*; public class Example10_10 { public static void main(String args[]) { try { ByteArrayOutputStream outByte=new ByteA
阅读全文
摘要:Example10_11.java import java.io.*; public class Example10_11 { public static void main(String args[]) { File file=new File("apple.txt"); try{ FileOut
阅读全文
摘要:https://www.cnblogs.com/yihujiu Example12_7.java public class Example12_7 { public static void main(String args[]) { Bank bank = new Bank(); bank.setM
阅读全文
摘要:Example12_8.java public class Example12_8 { public static void main(String args[ ]) { TicketHouse officer = new TicketHouse(); Thread zhangfei,likui;
阅读全文
摘要:Server.java import java.io.*; import java.net.*; public class Server { public static void main(String args[]) { String [] answer ={"南非","进入世界杯了","哈哈..
阅读全文
摘要:Client.java import java.io.*; import java.net.*; import java.util.*; public class Client { public static void main(String args[]) { Scanner scanner =
阅读全文
摘要:Example13_1.java import java.net.*; import java.io.*; import java.util.*; public class Example13_1 { public static void main(String args[]) { Scanner
阅读全文
摘要:main.xml <?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="fill_pa
阅读全文
摘要:驱动程序的调试一. 打印: prink, 自制proc文件UBOOT传入console=ttySAC0 console=tty11. 内核处理UBOOT传入的参数console_setupadd_preferred_console // 我想用名为"ttySAC0"的控制台,先记录下来 2. 硬件驱
阅读全文
摘要:一、应用调试1:使用strace命令来跟踪系统调用 二、应用调试2:使用GDB来调试应用程序 编译gdb,gdbservertar xjf gdb-7.4.tar.bz2cd gdb-7.4/./configure --target=arm-linuxmake把arm-linux-gdb复制到/bi
阅读全文
摘要:poll机制:为了减少CPU资源的占用率,在编写驱动函数中添加poll机制 select,poll,epoll都是IO多路复用的机制。I/O多路复用就通过一种机制,可以监视多个描述符,一旦某个描述符就绪(一般是读就绪或者写就绪),能够通知程序进行相应的读写操作。 POLL:应用程序在一定时间内没有事
阅读全文
摘要:编写驱动程序需要编写那些代码: 1、硬件相关的驱动程序 2、Makefile的编译程序 3、还需要编写一个相关的测试程序 比如说:一个摄像头驱动程序 1、驱动程序的编写,需要编写一些硬件相关的操作,编译Makefile 2、安装、运行、卸载驱动程序(insmod ***、。./*** 、remod
阅读全文
摘要:中断函数:包含#include<linux/irq.h> request_irq(irq,handle,irqflag,name,dev_id) { 1,分配一个irqaction结构体 2、把这个结构体放到irq_desc[irq](action链表)中 3、设置引脚 4、使能中断 } free_
阅读全文
摘要:异步通知: 驱动程序的所谓异步通知,就是说并不是应用程序来对驱动程序操作的,而是驱动程序查询到有事件发生或者有数据发生变化的时候通知应用程序。角色发生了变化,应用程序由主动改为被动执行。 比如按键驱动: 1、有不断进行查询引脚状态的,CPU资源消耗非常的打; 2、有中断操作的,发生按键事件后采取执行
阅读全文
摘要:1. 原子操作原子操作指的是在执行过程中不会被别的代码路径所中断的操作。常用原子操作函数举例:atomic_t v = ATOMIC_INIT(0); //定义原子变量v并初始化为0atomic_read(atomic_t *v); //返回原子变量的值void atomic_inc(atomic_
阅读全文
摘要:系统时钟: 在开发版上,不同的器件运行在不同的时钟频率上,如CPU可能运行在400Mhz的频率上、SDRAM、DM9000等内存存储运行在100Mhz~133MHz上、 串口i2c等运行在50Mhz上,而在开发板上只有一个12Mhz的晶振,则我们需要设置两个部分 1、提高时钟频率12Mhz提高到40
阅读全文
摘要:#include <stdio.h> #include <netinet/in.h> int main() { int i_num = 0x12345678; printf("[0]:0x%x\n", *((char *)&i_num + 0)); printf("[1]:0x%x\n", *((c
阅读全文
摘要:1、OpenWrt系统编译好的固件位于哪个文件夹?root@ald888:/work/openwrt/trunk/bin/ramips# lsopenwrt-ramips-rt305x-mpr-a2-squashfs-sysupgrade.bin 2、搭建smb服务器,实现虚拟机与Windows共享
阅读全文
摘要:1 OpenWrt 简介1.1 历史渊源OpenWrt 项目是针对嵌入式设备的 Linux 操作系统,常用在路由器上。作为一个简介的嵌入式 Linux 操作系统,OpenWrt 高度模块化、自动化,不仅占用空间小,而且具有强大的网络组件。国内很多商用的家庭路由器,都有 OpenWrt 的影子,也就是
阅读全文
摘要:客户端: package com.wulala;import java.io.FileOutputStream;import java.io.IOException;import java.io.InputStream;import java.io.OutputStream;import java.
阅读全文
摘要:String byteToString = ""; //将19968到40869的汉字都搞一遍. for (int i = 19968; i < 40869; i++) { byte byte1 = (byte) (224 + (i >> 12)); byte byte2 = (byte) ((i
阅读全文
摘要:package com.wulala;import java.io.IOException;import java.net.ServerSocket;import java.net.Socket;public class JavaThreadCreationAndRun { public stati
阅读全文
摘要:http://www.cnblogs.com/vijayfly/p/5960603.html 成功! 首先下载stunnel, 然后修改配置文件为: [https]client = yesaccept = 192.168.123.123:8080connect = 47.88.1.140:443 然
阅读全文
摘要:1. 首先, 下载ffmpeg的源码, 编译 先./configure --disable yasm --prefix=/usr/local/ffmpeg 然后make 跟make install 2. 修改环境变量 修改/etc/profile文件, 在最后加入 export PATH="/usr
阅读全文
摘要:#include <opencv2/opencv.hpp>#include <opencv2/imgproc/imgproc.hpp>#include <opencv2/highgui/highgui.hpp>using namespace cv;#define WINDOW_NAME "line
阅读全文
摘要:#include <opencv2/core/core.hpp>#include <opencv2/highgui/highgui.hpp>#include <iostream>using namespace std;using namespace cv;static void on_Contras
阅读全文
摘要:Service: @Service public class ScheduledTaskService { private static final SimpleDateFormat dateFormat = new SimpleDateFormat("HH:mm:ss"); @Scheduled(
阅读全文
摘要:用全部Annotation配置方式来传文件, 首先也是修改配置类: @Override public void addViewControllers(ViewControllerRegistry registry) { registry.addViewController("/index").set
阅读全文
摘要:1. 建Dockerfile: FROM ubuntu:14.04 MAINTAINER Marc LAW "zunly@hotmail.com" ENV REFRESHED_AT 2019-02-03 RUN apt-get -yqq update && apt-get -yqq install
阅读全文
摘要:Jenkins集成 $ mkdir jenkins $ cd jenkins 起一个Dockerfile, 顺手把ubuntu的repo也放一起 FROM ubuntu:16.04 MAINTAINER zunly@hotmail.com ENV REFRESHED_AT 2019-02-05 RU
阅读全文
摘要:最近需要统计一下项目中代码的总行数,写了一个Python小程序,不得不说Python是多么的简洁,如果用Java写至少是现在代码的2倍。 import os path="/Users/rony/workspace/ecommerce/ecommerce/hot-deploy/" global tot
阅读全文
摘要:Posix线程中的线程属性pthread_attr_t主要包括scope属性、detach属性、堆栈地址、堆栈大小、优先级。在pthread_create中,把第二个参数设置为NULL的话,将采用默认的属性配置。 pthread_attr_t的主要属性的意义如下: __detachstate,表示新
阅读全文
摘要:1:安装libevent 用wget指令直接下载libevent:# wget http://www.monkey.org/~provos/libevent-1.2.tar.gz 然后,在配置时需要指定一个安装路径,即./configure –prefix=/usr;然后make;然后make in
阅读全文
摘要:Android中JNI编程的那些事儿 首先说明,Android系统不允许一个纯粹使用C/C++的程序出现,它要求必须是通过Java代码嵌入Native C/C++——即通过JNI的方式来使用本地(Native)代码。因此JNI对Android底层开发人员非常重要。 如何将.so文件打包到.APK 让
阅读全文
摘要:下面我们开始编写HelloWorld程序,由于涉及到要编写c/c++代码因此我们会在开发中使用Microsoft VC++工具。 编写java代码我们在硬盘上建立一个hello目录作为我们的工作目录,首先我们需要编写自己的java代码,在java代码中我们会声明native方法,代码非常简单。如下所
阅读全文
摘要:概述: 字符设备驱动程序: 是按照字符设备要求完成的由操作系统调用的代码。重点理解以下内容: 1. 驱动是写给操作系统的代码,它不是直接给用户层程序调用的,而是给系统调用的 2. 所以驱动要向系统注册。 3. 注册的时候,要求驱动必须符合一定的规范,否则系统就会不认识。这就是程序架构。 4. 字符设
阅读全文
摘要:Repo:就是一组git命令的集合,repo init 下载一个分支。 repo start 文件名 --all本地传建的另一个代码分支,用于备份作用。 比如:repo start zhao --all git brach 查看当前的分支,切换分支用git checkout 分支名 git diff
阅读全文
摘要:1.什么是epoll epoll是当前在Linux下开发大规模并发网络程序的热门人选,epoll 在Linux2.6内核中正式引入,和select相似,都是I/O多路复用(IO multiplexing)技术,按照man手册的说法:是为处理大批量句柄而作了改进的poll。 Linux下有以下几个经典
阅读全文
摘要:如何使用JNI的一些基本方法和过程在网上多如牛毛,如果你对Jni不甚了解,不知道Jni是做什么的,如何建立一个基本的jni程序,或许可以参考下面下面这些文章:利用VC++6.0实现JNI的最简单的例子 JNI入门教程之HelloWorld篇 SUN JNI Tutorial谢谢大家的回复,有人说类型
阅读全文
摘要:Explain 最近在做游戏接入SDK时用到C++的json库jsoncpp,jsoncpp 是一款优秀的json库,但恶心的一点是它采用Assert作为错误处理方法,而assert在linux下通过调用 abort 来终止程序运行,对于服务器而言将会收到SIGABRT,崩溃打出core,这对于服务
阅读全文
摘要:1. RCF: 纯c++的RPC, 不引入IDL, 大量用到boost,比较强大.2. casocklib: protobuf + asio 较完善实现3. eventrpc: protobuf + libevent 较完善实现4. evproto: protobuf + libevent 简单实现
阅读全文
摘要:EPOLL事件分发系统可以运转在两种模式下:Edge Triggered (ET)、Level Triggered (LT)。 LT是缺省的工作方式,并且同时支持block和no-blocksocket;在这种做法中,内核告诉你一个文件描述符是否就绪了,然后你可以对这个就绪的fd进行IO操作。如果你
阅读全文
摘要:一、http_load程序非常小,解压后也不到100Khttp_load以并行复用的方式运行,用以测试web服务器的吞吐量与负载。但是它不同于大多数压力测试工具,它可以以一个单一的进程运行,一般不会把客户机搞死。还可以测试HTTPS类的网站请求。下载地址:http://soft.vpser.net/
阅读全文
摘要:简介 在前面一篇文章里讨论过几种应用系统集成的方式,发现实际上面向消息队列的集成方案算是一个总体比较合理的选择。这里,我们先针对具体的一个消息队列Activemq的基本通信方式进行探讨。activemq是JMS消息通信规范的一个实现。总的来说,消息规范里面定义最常见的几种消息通信模式主要有发布-订阅
阅读全文
摘要:码农自己制作小风扇,妈妈再也用不担心我们夏天晚上被热醒了。 简要描述: 硬件线路连接=>硬件编程=>软件编程 实现功能 : 1、红外线遥控板 控制风扇开关 挡速 2、液晶显示器 显示风扇的工作情况 3、客户端 显示风扇工作情况 4、开启风扇时 记录上次的挡速 关键技术: 1、硬件中断 2、红外线通信
阅读全文
摘要:一 电源线布置: 1、电源线、地线的走向应与资料的传递方向一致。 二 地线布置: 1、数字地与模拟地分开。 2、接地线应尽量加粗,致少能通过3倍于印制板上的允许电流,一般应达2~3mm。 3、接地线应尽量构成死循环回路,这样可以减少地线电位差。 三 去耦电容配置: 1、印制板电源输入端跨接10~10
阅读全文
摘要:#include <stdio.h>#include <cv.h>#include <cxcore.h>#include <highgui.h>#include <cvaux.h>//必须引此头文件 void main( ){ //参数初始化定义 IplImage* pFrame = NULL; I
阅读全文
摘要:1. 牢记Ahmdal定律 funccost表示是函数func的运行时间百分比,funcspeedup是你优化后函数的运行系数; 所以,如果函数TriangleIntersect()占用40%的运行时间,而在你优化后使它运行快了两倍,那么你的程序运行能够快了25%; 这意味着不经常使用的代码不需要做
阅读全文
摘要:第四章 视频编码基础 1. 压缩码流 语法:码流中各个元素的位置关系 01001001… 图像编码类型(01),宏块类型(00),编码系数1001等 语义:每个语法元素所表达的意义。 例如:图像编码类型 2. 编码层次 序列(Sequence) 图像组(Group of Pictures,GOP)
阅读全文
摘要:最近一直在做视频项目的外围事情,工作中发现了一个比较奇怪的问题。在接入某一家平台厂商的视频流时,使用4核2.33G机器对16路cif视频进行解码居然要占用了50%的cpu。这真是个非常不可思议的数据。在和厂商沟通过程中,对方告诉我,他们的解码可以做到2核2G的机器上跑到40路cif。这和我的测试结果
阅读全文
摘要:YUV视频格式到RGB32格式转换的速度优化 上篇 HouSisong@GMail.com 2007.10.30 tag: YUV,YCbCr,YUV到RGB颜色转换,YUV解码,VFW,视频,MMX,SSE,多核优化 摘要: 我们得到的很多视频数据(一些解码器的输出或者摄像头的输出等)都使用了一种
阅读全文
摘要:我使用OpenCV2.4.4的windows版本+Qt4.8.3+VS2010的编译器做了一个手势识别的小程序。 本程序主要使到了Opencv的特征训练库和最基本的图像处理的知识,包括肤色检测等等。 废话不多,先看一下基本的界面设计,以及主要功能: 相信对于Qt有一些了解的人都不会对这个界面的设计感
阅读全文
摘要:/********************************************************************************* 程序名称:快速傅里叶变换(FFT)** 程序描述:本程序实现快速傅里叶变换** 程序作者:宋元瑞** 最后修改:2011年4月5日**
阅读全文
摘要:消息队列(也叫做报文队列)能够克服早期unix通信机制的一些缺点。作为早期unix通信机制之一的信号能够传送的信息量有限,后来虽然POSIX 1003.1b在信号的实时性方面作了拓广,使得信号在传递信息量方面有了相当程度的改进,但是信号这种通信方式更像"即时"的通信方式,它要求接受信号的进程在某个时
阅读全文
摘要:什么时候需要创建线程池呢?简单的说,如果一个应用需要频繁的创建和销毁线程,而任务执行的时间又非常短,这样线程创建和销毁的带来的开销就不容忽视,这时也是线程池该出场的机会了。如果线程创建和销毁时间相比任务执行时间可以忽略不计,则没有必要使用线程池了。 下面是Linux系统下用C语言创建的一个线程池。线
阅读全文
摘要:FFMPEG工程浩大,可以参考的书籍又不是很多,因此很多刚学习FFMPEG的人常常感觉到无从下手。我刚接触FFMPEG的时候也感觉不知从何学起。 因此我把自己做项目过程中实现的一个非常简单的视频播放器(大约100行代码)源代码传上来,以作备忘,同时方便新手学习FFMPEG。 该播放器虽然简单,但是几
阅读全文
摘要:录制程序要添加新功能:录制CMMB电视节目,我们的板卡发送出来的是RTP流(H264视频和AAC音频),录制程序要做的工作是: (1)接收并解析RTP包,分离出H264和AAC数据流; (2)将H264视频和AAC音频以某种格式封装,最后存成文件,供用户查看。 第一步已经有部分代码可供参考,因此很快
阅读全文
摘要:onvif规范的实现:成功实现ONVIF协议RTSP-Video-Stream与OnvifDeviceManager的视频对接.有了前几篇的基础,现在可以正式开始onvif的实现工作,其中一项非常重要的部分就是 视频流的对接,即能够在符合onvif标准的监控客户端软件里接收到设备端NVT发来的RTS
阅读全文
摘要:YUV格式有两大类:planar和packed。对于planar的YUV格式,先连续存储所有像素点的Y,紧接着存储所有像素点的U,随后是所有像素点的V。对于packed的YUV格式,每个像素点的Y,U,V是连续交*存储的。 YUV,分为三个分量,“Y”表示明亮度(Luminance或Luma),也就
阅读全文
摘要:以前做的智能家居的项目用的是Linux2.6.13的核,使用的中星微的摄像头,移植了spcaview进行图像的获取,后来用了2.6.29的核,发现以前移植的spcaview不能用了,后来查了一下,发现2.6.29核采用了UVC的驱动(万能驱动),采用了V4L2框架,而spcaview是基于V4L1的
阅读全文
摘要:汉字是方块字,宽高相等的汉字库在嵌入式领域有着广泛的应用,且其解析也相对来说是比较简单的。汉字在汉字库中的索引一般会遵循GB2312/GBK编码规则,GB2312/GBK规定汉字编码由2个字节组成,其中低字节区码,高字节为位码。本文以最常见的UCDOS中16x16的宋体字库HZK16来演示汉字的显示
阅读全文
摘要:今天小X教你用你的智能手机做一个万能遥控器 需要准备一些材料: 1:一个搭载38K载波的红外发射管,(波长940nm) 标准模式:30KHz~60KHz;远程模式:38K。 我们的万能遥控器最好使用品牌的 品牌的38K+-5KB都适用 正常的38K+-3KB适用 部分山寨的遥控器载波最大到最大38K
阅读全文
摘要:基于SURF特征的图像与视频拼接技术的研究和实现(一) 一直有计划研究实时图像拼接,但是直到最近拜读西电2013年张亚娟的《基于SURF特征的图像与视频拼接技术的研究和实现》,条理清晰、内容完整、实现的技术具有市场价值。因此定下决心以这篇论文为基础脉络,结合实际情况,进行“基于SURF特征的图像与视
阅读全文
摘要:一. 概念 SPI是 Serial Peripheral Interface(串型外部接口)的缩写。SPI接口有4根PIN脚,分别是: * SPICLK : 用于传输数据的同步时钟 * SPIMISO : 用于主模式下的输入,或从模式下的输出信号线 * SPIMOSI : 用于主模式下的输出,或从模
阅读全文
摘要:(0)应用背景 (1)i2c 两根线 (2)spi 用作控制接口4根线 (2)emif 用作大数据传输接口16位数据带宽 (3)dma (4)输入口 (0) 在雷达信号处理、数字图像处理等领域中,信号处理的实时性至关重要。由于FPGA芯片在大数据量的底层算法处理上的优势及DSP芯片在复杂算法处理上的
阅读全文
摘要:简单来说,YUV: luma (Y) + chroma (UV) 格式, 一般情况下sensor支持YUV422格式,即数据格式是按Y-U-Y-V次序输出的RGB: 传统的红绿蓝格式,比如RGB565,其16-bit数据格式为5-bit R + 6-bit G + 5-bit B。G多一位,原因是人
阅读全文
摘要:这种检测可以做宽动态的检测,也可应用稳像算法 我们实现了拉普拉斯方差算法,该算法提供给我们一个浮点数来代表具体图像的“模糊度”。该算法快速,简单且易于使用——用拉普拉斯算子与输入图像做卷积然后计算方差即可。如果方差低于预定义阈值,图像就被标记为“模糊”。 还可以用fft 计算高频区域来判别 http
阅读全文
摘要:Linux平台延时之sleep、usleep、nanosleep、select比较 1、sleep的精度是秒 2、usleep的精度是微妙,不精确 3、select的精度是微妙,精确 struct timevaldelay; delay.tv_sec =0; delay.tv_usec =20 *
阅读全文
摘要:Linux下的定时器有两种,以下分别介绍:1、alarm 如果不要求很精确的话,用alarm()和signal()就够了 unsigned int alarm(unsigned int seconds) 函数说明: alarm()用来设置信号SIGALRM在经过参数seconds指定的秒数后传送给目
阅读全文
摘要:https://www.cnblogs.com/pengkunfan/p/13530990.html 并发历史 在计算机最早期的时候,没有操作系统,执行程序只需要一种方式,那就是从头到尾依次执行。任何资源都会为这个程序服务,在计算机使用某些资源时,其他资源就会空闲,就会存在 浪费资源 的情况。 这里
阅读全文
摘要:(1)、为什么需要daemon守护进程 (2)、什么是守护进程daemon (3)、守护进程daemon和一般进程有什么区别 (4)、linux下的daemon 实现 (5)、fork、wait,nohup (6)、killall app 和kill -9 123 的区别 (7)、守护进程的实现方案
阅读全文
摘要:最近发现一个特别强的视频超分算法————BasicVSR,在真实世界数据集中,实现了前所未有的视觉重建效果,最近它还拿下了超分比赛NTIRE 2021三冠一亚的优异成绩,登上了CVPR 2022。 视频超分,假设低分辨率视频是从高分辨率的视频经过一系列的退化操作而得到,超分算法就是将该退化操作进行求
阅读全文
摘要:上篇介绍了Python的环境搭建,主要是开发环境的介绍,本篇主要介绍Python的GUI开发工具Boa-constructor的使用和我们的程序开发完毕后的打包问题,本篇还会介绍在Python中我们如何使用第三方扩展库。 一、如何选择GUI开发工具 Python的gui开发工具有很多,有Thiner
阅读全文
摘要:一、环境搭建二、相关配置(部分)三、调试运行四、测试源码参考五、常见错误六、扩展(CCGI,SQLite) # 一、环境搭建操作系统:Ubuntu12.04 LTSboa下载地址(但是我找不到...): http://www.boa.org/我是其他网站找到的资源,但是忘了网址了,所以我直接上云盘资
阅读全文
摘要:https://www.cnblogs.com/ikaros-521/p/15323411.html 目录 前言 ESP8266模块 相关资料 代码下载: 功能介绍: 拓展应用 功能介绍: 接线 接ATK MODULE 没有ATK MODULE情况 效果图 TCP 服务端 网络调试助手 网络测试 双
阅读全文
摘要:目录 前言 代码下载: 功能介绍: 接线 效果图 核心代码 main.c 参考用图 DHT11 步进电机28BYJ-48 ULN2003驱动 前言 注意:浇水由LED1的亮灭进行模拟源码参考: 正点原子定时器中断实验 正点原子RTC实验 正点原子RTC实验 正点原子TFTLCD显示实验 正点原子按键
阅读全文
摘要:目录 前言 代码下载: 功能介绍: 接线 效果图 摇头模式 转圈模式1 转圈模式2 自定义模式 核心代码 main.c step.h step.c exti.h exti.c 前言 具体细节内容可以参考:STM32F103+步进电机28BYJ-48+ULN2003 实现简单的正反转demo,这里不再
阅读全文
摘要:目录 前言 代码下载 版本更新 效果图 完整演示动图 主界面 效果页 核心代码 index.js index.htnl 前言 算法讲解:RSSI 平面 三点定位算法(C语言、JS源码例程)你已经装好了cordova及其环境和插件cordova-plugin-ble-central。插件官网:Blue
阅读全文
摘要:目录 前言 环境搭建 Anaconda yolov5克隆到本地 安装相关依赖库 安装CUDA和cuDNN(有显卡需求的话) pytorch单独再次安装(视情况采用) 测试官方demo detect.py识别 bus.jpg train.py训练模型 训练官方提供的coco128 训练自己的模型 训练
阅读全文
摘要:操作系统Ubuntu14.04LTS 1.搭载网桥模块 sudo apt-get install bridge-utils安装软件包 modprobe bridge//网上参考步骤,加载网桥模块,实际未用 cho "1">/proc/sys/net/ipv4/ip_forward//网上参考步骤,开
阅读全文
摘要:一、 概述 硬件资源:IAC-335X-Kit 开发板宿主机:ubuntu16.04交叉编译工具:arm-arago-linux-gnueabi二、 BOA搭建 先确定交叉编译工具是否安装正确。安装需要工具bison,flexsudo apt-get install bison flex解压boa-
阅读全文
摘要:博主最近在最有做一个嵌入式课程设计,要求是利用基于cortax a8的物联网实验箱做一个简单的嵌入式网页交互系统作为课程设计来验收评分。因为本身自己是学前端的,所以网页部分并不是重点,主要是和boa服务器之间的通信,课程实验给的例子是直接使用printf来打印html标签形成新的页面,有过前端开发经
阅读全文
摘要:实现原理:vueRouter控制前端页面跳转路由,当登录成功后,返回用户登录token信息,将token信息放到store中,router路由跳转取store中状态有token时,当取到token时跳转到首页,反之跳转到登录页。 步骤: 1.登陆校验: 2.路由配置: 3.全局导航守卫: vueRo
阅读全文
摘要:https://www.cnblogs.com/vickylinj/?page=18 路由,其实就是指向的意思,当我点击页面上的home按钮时,页面中就要显示home的内容,如果点击页面上的about 按钮,页面中就要显示about 的内容。Home按钮 => home 内容, about按钮 =>
阅读全文
摘要:背景:因为axios中只能使用get和post方法来进行请求数据,没有提供jsonp等方法进行跨域访问数据 axios中文网址:https://www.kancloud.cn/yunye/axios/234845 // axios 中的GET请求 axios.get('/user', { param
阅读全文
摘要:一、正常动画实践 为了使用户达到更好的体验,做动画的时候都知道用requestAnimationFrame了,但是他也是有极限的,当绘制的东西足够多或者复杂的时候,频繁的删除与重绘降低了很多性能。 在canvas中粒子系统应该算是比较常见的一种了,现在创建一个canvas画布,并绘制100个粒子在整
阅读全文
摘要:一.后台服务器端开发:先搭建一个springMVC项目 1.新建一个web项目 2.引入相关jar包,编写配置文件 (1).引入spring包 spring-framework-5.0.8.RELEASE,这个包里有相关Bean、context、core、web、webmvc、aop、aspect、
阅读全文
摘要:一、项目配置注解 @SpringBootApplication:申明让spring boot自动给程序进行必要的配置,这个配置等同于:@Configuration ,@EnableAutoConfiguration 和 @ComponentScan 三个配置。 package com.example
阅读全文
摘要:1.TestThread.java import java.lang.reflect.Method; public class TestThread { public static String variables = "variables"; public static void main(Str
阅读全文
摘要:以前一直是在DAO层直接从数据库里分页,但是今天因为有些数据,需要混合展示,就是根据条件取出了多个对象的集合,然后把这些多个List放到一个List里,然后在从这个List里进行分页。 1 public SearchResult paging(List<T> list, int pageNumber
阅读全文
摘要:一、 sleep 是线程类(Thread)的方法,导致此线程暂停执行指定时间,给执行机会给其他线程,但是监控状态依然保持,到时后会自动恢复,调用sleep 不会释放对象锁。由于没有释放对象锁,所以不能调用里面的同步方法。 sleep()使当前线程进入停滞状态(阻塞当前线程),让出CUP的使用、目的是
阅读全文
摘要:一、导入微信SDK 二、在微信商户平台下载证书放在项目的resources目录下的cert文件夹下(cert文件夹需要自己建) 三、实现微信的WXPayConfig接口 1 package com.ieou.demo.common; 2 3 4 import com.github.wxpay.sdk
阅读全文
摘要:.已获取小程序的access_token 为例,通过Get请求url 1 import com.alibaba.fastjson.JSONObject; 2 3 String wechatUrl = "https://api.weixin.qq.com/cgi-bin/token?grant_typ
阅读全文
摘要:java根据地址获取百度API经纬度(详细文档) 1 public void getLarLng(String address) throws Exception { 2 3 String ak = "vZ5wAkH9uc6mCnrhtYWey2fBHBmU9Rh5"; 4 5 String add
阅读全文
摘要:1.数据库表设计 2.实体类设计 1 package com.ieou.capsule.dto.SystemPermissions; 2 3 import java.util.List; 4 5 /** 6 * 功能菜单类 7 */ 8 public class SystemPermissionsT
阅读全文
摘要:分布式锁三种实现方式: 1 2 3 1. 基于数据库实现分布式锁; 2. 基于缓存(Redis等)实现分布式锁; 3. 基于Zookeeper实现分布式锁; 一, 基于数据库实现分布式锁 1. 悲观锁 利用select … where … for update 排他锁 注意: 其他附加功能与实现一基
阅读全文
摘要:在总线设备驱动模型中,平台设备是写在c文件中。使用设备树时,平台设备事先并不存在,在dts文件中构造节点,节点里面含有资源。dts文件被编译成dtb文件,然后传递给内核。内核会解析dtb文件,得到一个个device_node,每个节点对应一个device_node结构体,每个device_node结
阅读全文
摘要:引言:在PC端使用软件的过程中。有时开发人员会有类似限制程序启动数量的需求,如限制某程序在单一PC端的启动数量。或是为了统计PC端启动的程序数量等,显然须要一种“计数器”来统计程序的执行数量。怎样对多个程序进行计数 在启动多个程序时,因为程序隶属于不同的进程,常规的计数方法不能使用,那么怎样统计程序
阅读全文
摘要:前端很多项目中,都有文件下载的需求,特别是JS生成文件内容,然后让浏览器执行下载操作(例如在线图片编辑、在线代码编辑、iPresst等。 但受限于浏览器,很多情况下我们都只能给出个链接,让用户点击打开-》另存为。如下面这个链接: <a href=”file.js”>file.js</a> 用户点击这
阅读全文
摘要:个人安装环境:OS:CentOS6.7 64位FreeSWITCH Ver:1.6.17 一. 编译出错 安装 之前, 最好 先安装 这几个东西(如果有, 请忽略): yasm (有nasm的话 不用装这个) , opus-devel(可能 提示 libopus-dev 或 libopus-deve
阅读全文
摘要:如果将FreeSWITCH用于云端, 支持大规模并发呼叫, 就要用到 多域/多租户 技术了, FreeSWITCH 本身可以直接支持. 每个域可以单独, 拥有相同的分机号也互相打不通, 各自线路, IVR , 路由等不相同. 配置方式如下: 1. conf/vars.xml <X-PRE-PROCE
阅读全文
摘要:FreeSWITCH 内线拨号 总是使用 dialplan/public 拨号计划,而对 dialplan/default 视而不见 昨天还是 好好的额, 今天 就这样了, 导致 配置都乱了, 搞了 一天了, 终于用 grep -r public /usr/local/freeswitch/conf
阅读全文
摘要:https://www.cnblogs.com/lzpong/p/8981581.html FreeSWITCH 默认配置只能 在本机连接, 要从 外面连接, 就要配置: 1 acl.conf.xml::network-lists/list 2 event_socket.conf.xml::appl
阅读全文
摘要:阿里上买的域名, 申请了个免费ssl, 然后开始折腾,,,, 申请了ssl证书, 但是不提供 .pem 格式的下载(*/ω\*) 然后 把一堆 提供的 都下载下来了, 然后 又到网上 搜 crt/cer 等格式 转 pem格式..... 然后 看到有说 cer/crt 就是 pem格式的, 耶(^-
阅读全文
摘要:通话32秒左右就断掉 检查 profile 的 ext-sip-ip 设置ext-rtp-ip和ext-sip-ip 可以直接设置为外网IP 自建stun-server, 更新后, 过了好几个小时出现32秒左右就断,最后为了保险,只好直接填公网IP了.
阅读全文
摘要:今天调试 发现 注册的分机 的 `Auth-User` 居然是 `unknown` !!! 怎么回事? 仔细对比检查 发现, internal profile 指定了 `apply-register-acl` 的参数 ,值为 `domain`, 而默认配置是注释掉这个 参数的, 在看 acl::do
阅读全文
摘要:配置代接电话,需要更改 分机、拨号计划、外线 的配置 一、配置分机 代接组内分机的这个“组”, 不是“conf/directory/default.xml"中配置的 group,而是要在分机配置中配置。然后会在拨号计划中使用到这个配置。 如下配置: “callgroup” <include> <us
阅读全文
摘要:uuid_transfer 官网文档直通车 uuid_transfer <uuid> [-bleg|-both] <dest-exten> [<dialplan>] [<context>] 可选参数: -both uuid_transfer <uuid> -both 'set:hangup_afte
阅读全文
摘要:FreeSWITCH 使用 lua 脚本 接管 分机注册,鉴权等 1. 更改lua.conf.xml配置 <configuration name="lua.conf" description="LUA Configuration"> <settings> <!-- Specify local dir
阅读全文
摘要:FS启用webrtc:(可以使用自签发的root证书 或 申请免费的域名证书!以便使用websip) 1、创建证书,用自签发的证书或申请域名证书都可以 2、生成wss证书,放FS的相应目录: windows是 ..../freeswitch/certs centos是 /etc/freeswitch
阅读全文
摘要:网上找了一大堆,基本都是说设置ext-rtp-ip和ext-sip-ip为公网地址就可以,但没有效果! 最后,我在 这篇CSDN博主「flybird_168」的原创文章 找到的处理,真谢谢他了!下面对他的文章调整一下内容说明一下: 1、路由器去掉upnp和alg功能。服务器的路由本身没进行UPNP,
阅读全文
摘要:一、 今有业务需求如下 主线路未通,则使用备用线路 1. 直接拨打 2. 转接 3. 三方通话 未通情况(主线路呼叫失败): 网络或线路异常->呼叫超时 线路或运营商异常->被叫非正常挂断 如果接收到线路上的回铃和接通,则正常接入到主线; 除此之外所有的异常未接通全部转到备用线路上 考虑如何做的时候
阅读全文
摘要:文章目录1. 写在前面2. 整体思路3. 具体实现3.1 启动语音识别3.2 监听语音识别结果3.3 转接到坐席4. 遇到的问题5. 解决的方案6. 后续需研究的问题1. 写在前面 前面的文章已经做了很多准备工作,接下来的事情,就是进行实际的对接和使用了,目标就是通过unimrcp模块,对通话双方进
阅读全文
摘要:ASR(Automatic Speech Recognition)自动语音识别技术是一种将人的语音转换为文本的技术。 一、freeswitch如何使用asr freeswitch提供两个app功能detect_speech和play_and_detect_speech给用户调用,detect_spe
阅读全文
摘要:写在前面 本文转载自mrcp-plugin-with-freeswitch,多谢大佬wangkaisine总结出的经验! 由于本地已部署好FreeSWITCH 1.6.15 ,所以安装FreeSWITCH步骤未实操。 不过可以看出当时FreeSWITCH版本为1.6,可以支持音频呼叫和tts等功能,
阅读全文
摘要:基于阿里语音识别SDK2.0编写的unimrcp插件一句话识别 测试如图:freeswitch: unimrcpserver: 实时识别 测试如图:freeswitch: unimrcpserver: 更新了实时语音识别,由于标准的mrcp协议无法支持实时语音识别,所以本次更新修改了mrcp源码协议
阅读全文
摘要:简单使用 windows 安装 FreeSwitch 自己的电脑系统是 xubuntu 22.10 Ubuntu Kinetic Kudu (development branch) 版本,linx 安装 FreeSwitch 需要自己编译安装,里面安装编译会出错,所以采用虚拟机 windows 安装
阅读全文
摘要:前面我们已经搭建好了百度Mrcp Server服务器,接下来我们将Freeswitch与unimrcp server两者连接起来,配置百度unimrcp server的文章大家去这里看一下:搭建百度Mrcp Server与Freeswitch的mod_unimrcp对接实现智能客服 一、配置free
阅读全文
摘要:freeswitch 部署的系统版本:Centos6.9 x64unimrcp 部署版本:Red Hat6.4 x86(32) ** 对接前提: freeswitch 已经编译并且安装了mod_unimrcp 模块 unimrcp 已经部署好** 如果以上的两个都没问题我们就可以对接了 一 :进行配
阅读全文
摘要:esl inbound client,内部有一个canSend()方法: 1 2 3 public boolean canSend() { return channel != null && channel.isConnected() && authenticated; } 大多数情况下(之所以说大
阅读全文
摘要:这一篇用esl实战一把,利用esl client来实现一个小型呼叫中心的原型,先看看下面这张图: 企业通常会对外公布一个400之类的服务电话,当用户拨打这个电话时,实际上背后是一堆客服妹纸带着耳麦通过电脑连着自己的电话分机。客人进线时,系统会根据一定的规则(比如挑1个当前空闲的客服),然后把电话转接
阅读全文
摘要:电话会议是一个常用功能,freeswitch当然支持,下面是基本用法: 一、发起会议 1 conference test bgdial user/1004 上面的命令表示,发起1个名为test的会话,同时拨打1004用户,如果该用户接听了,就相当于加入会议。注:如果1004是第1个加入会议的人,此时
阅读全文
摘要:来电时,播放音乐是一个很常用的功能,下面是一些相关的命令: 一、单次播放playback 1 originate user/1000 &playback(ivr/8000/ivr-welcome_to_freeswitch.wav) 二、指定次数的循环播放loop_playback 注:这个方式,直
阅读全文
摘要:github上的esl-client已经N年未更新了,上面有一堆bug,记录一下: 一、内存泄露 org.freeswitch.esl.client.transport.message.EslFrameDecoder 这个类,使用了netty的ByteBuf,对netty有了解的同学应该知道,net
阅读全文
摘要:关于这个功能,esl-client 上给出的源码示例极具误导性,根本跑不起来,见: https://github.com/esl-client/esl-client/blob/master/src/test/java/OutboundTest.java 正确姿势:必须在事件订阅的回调里,才能拿到用户
阅读全文
摘要:Freeswitch官网太慢了,经常还打不开,把电话挂断原因大全复制一份到这里,方便日常查看 ITU-TQ.850 CodeSIP Equiv.EnumerationCauseDescription 0 UNSPECIFIED Unspecified. No other cause codes ap
阅读全文
摘要:友情提示:初次接触SIP(Session Initiation Protocol)协议的同学,强烈建议先将文末参考文章中的链接,先看至少二遍! 一、SIP协议是一个文本协议 言外之意:不同于二进制难以阅读,SIP是仅凭肉眼就能看懂大意的协议。来一个示例: INVITE的请求示例: 1 2 3 4 5
阅读全文
摘要:虽然freeswitch已经内置了一些标识的事件,比如:CHANNEL_CREATE(发起呼叫时触发),CHANNEL_HANGUP_COMPLETE(电话挂断时触发)...,但是有时候我们想根据业务需求,新增一些自定义的事件,比如:客人进线后,如果分配到了一个空闲的客服,希望触发一个特定的事件。
阅读全文
摘要:一、origiante时指定主叫号码 正常情况下,如果在freeswitch控制台,输入类似下面 命令: originate user/1000 &park 被叫收到振铃提示时,显示的号码类似下面这样 如果希望指定主叫的显示名称及号码,可以加参数: 1 originate {origination_
阅读全文
摘要:默认情况下,freeswitch内置了1000-1019这20个用户,如果需要添加更多用户,可以按如下步骤操作: 一、复制用户文件 \FreeSWITCH\conf\directory\default 下有1000.xml ~ 1019.xml 这20个用户的配置文件,以1000.xml为例: 1
阅读全文
摘要:outbound外联模式下,可以参考我先前写的文章:freeswitch: ESL中如何自定义事件及自定义事件的监听,使用export导出变量。但是inbound模式下,ESL client并未封装export命令,如果要给某条腿附加一个变量值,可以借助uuid_setvar命令。 一、命令行验证
阅读全文
摘要:很多时候我们打电话到公司前台,会听到类似“欢迎致电XXX,办公电话请直拨分机,咨询XX请按1,咨询YY请按2”这样的语音提示。在一些特定流程中,系统自动发起呼叫打到前台,希望实现自动按键(即:不用人手动按键),FreeSwitch提供了2个基本命令: send_dtmf及uuid_send_dtmf
阅读全文
摘要:虽然freeswitch已经内置了一些标识的事件,比如:CHANNEL_CREATE(发起呼叫时触发),CHANNEL_HANGUP_COMPLETE(电话挂断时触发)...,但是有时候我们想根据业务需求,新增一些自定义的事件,比如:客人进线后,如果分配到了一个空闲的客服,希望触发一个特定的事件。
阅读全文
摘要:摘要 在很多情况下,我们需要对GStreamer创建的Pipeline进行调试,来了解其运行机制以解决所遇到的问题。为此,GStreamer提供了相应的调试机制,方便我们快速定位问题。 查看调试日志 使用GST_DEBUG环境变量查看日志 GStreamer框架以及其插件提供了不同级别的日志信息,日
阅读全文
摘要:摘要 GStreamer提供了不同的命令行工具用于快速的查看信息以及验证Pipeline的是否能够正确运行,在平时的开发过程中,我们也优先使用GStreamer的命令行工具验证,再将Pipeline集成到应用中。本文将介绍gst-inspect-1.0,gst-discoverer-1.0,gst-
阅读全文
摘要:摘要 通常我们的播放引擎需要和GUI进行集成,在使用GStreamer时,GStreamre会负责媒体的播放及控制,GUI会负责处理用户的交互操作以及创建显示的窗口。本例中我们将结合QT介绍如何指定GStreamer将视频输出到指定窗口,以及如何利用GStreamer上报的信息去更新GUI。 与GU
阅读全文
摘要:摘要 我们把直接从网络播放一个媒体文件的方式称为在线播放(Online Streaming),我们已经在以往的例子中体验了GStreamer的在线播放功能,当我们指定播放URI为 http:// 时,GStreamer内部会自动通过网络获取媒体数据。在今天的示例中,我们将进一步了解如何处理由网络问题
阅读全文
摘要:摘要 在我们前面的文章中,我们的Pipline都是使用GStreamer自带的插件去产生/消费数据。在实际的情况中,我们的数据源可能没有相应的gstreamer插件,但我们又需要将数据发送到GStreamer Pipeline中。GStreamer为我们提供了Appsrc以及Appsink插件,用于
阅读全文
摘要:摘要 GStreamer框架会自动处理多线程的逻辑,但在某些情况下,我们仍然需要根据实际的情况自己将部分Pipeline在单独的线程中执行,本文将介绍如何处理这种情况。 GStreamer多线程 GStreamer框架是一个支持多线程的框架,线程会根据Pipeline的需要自动创建和销毁,例如,将媒
阅读全文
摘要:摘要 在常见的媒体播放器中,通常可以看到快进,快退,慢放等功能,这部分功能被称为“特技模式(Trick Mode)”,这些模式有个共同点:都通过修改播放的速率来达到相应的目的。 本文将介绍如何通过GStreamer去实现快进,快退,慢放以及单帧播放。 GStreamer Seek与Step事件 快进
阅读全文
摘要:摘要 在常见的媒体文件中,通常包含一些数据(例如:歌手,专辑,编码类型等),用于描述媒体文件。通常称这些数据为元数据(Metadata:data that provides information about other data)。我们可以通过这些元数据对媒体进行归类,同时可以在播放的过程中通过界
阅读全文
摘要:简介 在多媒体应用中,我们通常需要查询媒体文件的总时间、当前播放位置,以及跳转到指定的时间点。GStreamer提供了相应的接口来实现此功能,在本文中,我们将通过示例了解如何查询时间信息,以及如何进行跳转到指定位置。 GStreamer查询机制 GStreamer提供了GstQuery的查询机制,用
阅读全文
摘要:摘要 在以前的文章中,我们了解到了2种播放文件的方式:一种是在知道了文件的类型及编码方式后,手动创建所需Element并构造Pipeline;另一种是直接使用playbin,由playbin内部动态创建所需Element并连接Pipeline。很明显使用playbin的方式更加灵活,我们不需要在一开
阅读全文
摘要:摘要 在上一篇文章中,我们介绍了如何将多个element连接起来构造一个pipline,进行数据传输。那么GStreamer是通过何种方式保证element之间能正常的进行数据传输?今天就将介绍GStreamer是如何利用Pad来控制数据的传输。 Pad 我们知道,pad是element之间的数据的
阅读全文
摘要:摘要 在 Gstreamer基础教程01 - Hello World中,我们介绍了如何快速的通过一个字符串创建一个简单的pipeline。为了能够更好的控制pipline中的element,我们需要单独创建element,然后再构造pipeline,下面将介绍GStreamer的一些基本概念并展示p
阅读全文
摘要:摘要 在面对一个新的软件库时,第一步通常实现一个“hello world”程序,来了解库的用法。对于GStreamer,我们可以实现一个极简的播放器,来了解GStreamer的使用。 环境配置 为了快速掌握Gstreamer相关的知识,我们优先选择Ubuntu作为我们的开发环境,其他平台的开发会在后
阅读全文
摘要:什么是Gstreamer? Gstreamer是一个支持Windows,Linux,Android, iOS的跨平台的多媒体框架,应用程序可以通过管道(Pipeline)的方式,将多媒体处理的各个步骤串联起来,达到预期的效果。每个步骤通过元素(Element)基于GObject对象系统通过插件(pl
阅读全文
摘要:1,logging包 python的一个包,专门用来写日志的。 官方一共划分了6个等级的log类型,分别对应重要性等级50,40,30,20,10,0: 级别排序:CRITICAL > ERROR > WARNING > INFO > DEBUG >NOTSET 2,logging打印日志到控制台(
阅读全文
摘要:1,crontab是个啥? ubuntu系统自带cron工具,cron是一个系统上的定时工具,用它的好处在于,不同的程序可以用同一个计时器,这样就省得不同程序各自sleep了,另外它还支持比较多的个性化功能,比如每月1号执行一次, 2,crontab怎么用? crontab是一个和当前用户绑定的命令
阅读全文
摘要:1,typedef字面意思,自定义一种数据类型 语法:typedef 类型名称 类型标识符; 1),基本用法: (1) 为基本数据类型定义新的类型名。 (2) 为自定义数据类型(结构体、公用体和枚举类型)定义简洁的类型名称。 (3) 为数组定义简洁的类型名称。 (4) 为指针定义简洁的名称。 简单使
阅读全文
摘要:1,播放教程playbin #include <gst/gst.h> #include <stdio.h> /* Structure to contain all our information, so we can pass it around */ typedef struct _CustomD
阅读全文
摘要:1,gstream是个啥? GStreamer 是用来构建流媒体应用的开源多媒体框架,实际上就是可以用来解码mp4的一个东东。 2,编译安装 我的开发模块的ubuntu18.04系统自带gstream,并且交由pkg-config管理,灰常方便。就不用编译安装等一通操作了。 gstreamer的各种
阅读全文
摘要:busybox自带的FTP服务器 启动方法1: #tcpsvd 0 21 ftpd -w /root & // 上面的0表示对所有ip地址都进行侦听 // ftpd -w这里的参数-w表示client可以对目录执行写操作 // 21指定ftp服务器的默认端口 // 可以使用-t和-T参数设置clie
阅读全文
摘要:一、i2c 指令 i2c --help: i2c指令帮助 i2c bus:获取i2c总线信息 i2c dev:查看当前i2c设备 i2c dev 0:将i2c0作为当前设备 i2c md 0x6A 0x06.1 0x01:0x6A-->设备地址,0x06.1-->寄存器地址为0x06,寄存器宽度为1
阅读全文
摘要:官方案例地址:https://xilinx-wiki.atlassian.net/wiki/spaces/A/pages/1010303572/Zynq+UltraScale+MPSoC+VCU+TRD+2020.2+-+Quad+Sensor+MIPI+CSI+Video+Capture+and+
阅读全文
摘要:I2C总线上的每一个设备都可以作为主设备或者从设备,而且每一个设备都会对应一个唯一的地址,主从设备之间就通过这个地址来确定与哪个器件进行通信,在通常的应用中,我们把CPU带I2C总线接口的模块作为主设备,把挂接在总线上的其他设备都作为从设备。I2C总线上可挂接的设备数量受总线的最大电容400pF 限
阅读全文
摘要:linux 通过device和driver分别管理系统中的设备和驱动,用bus将设备和驱动关联起来,bus可以看成是设备和驱动的媒介,可以匹配设备和驱动。这样设备和驱动可以独立加载,互不影响。sysfs是一个基于内存的文件系统,它的作用是将内核信息以文件的方式提供给用户程序使用。我们都知道设备和对应
阅读全文
摘要:一、log4cplus源码下载 1、进入log4cplus网站:https://sourceforge.net/projects/log4cplus/ 2、点击File-->log4cplus-statble 3、这里选择下载2.0.6版本,点进去下载log4cplus-2.0.6.zip即可 二、
阅读全文
摘要:上文中说到假设从100的不同的地方取外卖,那么epoll相当于一部手机,当外卖到达后,送货员能够通知你。从而达到每去必得,少走非常多路。它是怎样实现这些作用的呢? epoll的功能 epoll是select/poll的强化版。同是多路复用的函数,epoll有了非常大的改进。 支持监听大数目的sock
阅读全文
摘要:对于单链表,因为每一个结点仅仅存储了向后的指针。到了尾标志就停止了向后链的操作,这样,其中某一结点就无法找到它的前驱结点了。对于单链表的操作大家能够看我的这篇博客http://blog.csdn.net/zxnsirius/article/details/51183055 我们将单链表中终端结点的指
阅读全文
摘要:触摸屏驱动程序,用于人机交互lcd上的独立的一个屏,这里指的是电阻屏。下面来分析一下内核自带的触摸屏驱动框架,便于我们自已编写触摸屏驱动程序 触摸屏驱动使用的是Input_subsys系统。我们打开内核的s3c2410_ts.c触摸屏驱动来分析:下面来看一下流程是怎么样 从入口函数开始分析 stat
阅读全文