
C
我是小超斌
这个作者很懒,什么都没留下…
展开
-
AVFilter - 流媒体过滤器
文章目录**流媒体过滤器 - AVFilter****函数说明** :**函数名称** : **avfilter_graph_alloc****功能** : 相当于合拢所有过滤器的统一上下文**avfilter_init_str参数选项**:**abuffersink ( 媒体数据最终出口 ) ****aformat ( 将媒体数据进行格式化 )****amix ( 混音处 )**:**abuffer ( 媒体数据入口 )**转载 2023-07-14 14:58:26 · 230 阅读 · 0 评论 -
ffmpeg进行混音,将两路音频pcm数据合成一路输出
PCM重采样进行混音转载 2023-07-14 10:47:12 · 945 阅读 · 0 评论 -
PCM音频混合的方法
方法:为避免发生溢出,使用一个可变的衰减因子对语音进行衰减。这个衰减因子也就代表语音的权重,衰减因子随着音频数据的变化而变化,所以称为自适应加权混音。当溢出时,衰减因子较小,使得溢出的数据在衰减后能够处于临界值以内,而在没有溢出时,又让衰减因子慢慢增大,使数据较为平缓的变化。思路:使用更多的位数(32 bit)来表示音频数据的一个样本,混完音后在想办法降低其振幅,使其仍旧分布在16 bit所能表示的范围之内,这种方法叫做归一法;3、PCM脉冲编码的音频信号的混音实现,2、归一化混音(自适应加权混音算法)原创 2023-07-14 10:24:22 · 3581 阅读 · 1 评论 -
#、##、__VA_ARGS__和##__VA_ARGS__的作用
一、#用来把参数转换成字符串例子一:#define P(A) printf("%s:%d\n",#A,A);int main(int argc, char **argv){int a = 1, b = 2;P(a);P(b);P(a+b);system("pause");}输出为:例子二:#define SQUARE(x) printf("The square ...转载 2020-09-27 17:18:37 · 527 阅读 · 0 评论 -
关于vsnprintf的一些总结
函数声明:int vsnprintf(char *str, size_t size, const char *format, va_list ap);关于该函数各个参数的具体意义不再赘述,参见百度百科即可,下面仅对该函数使用过程中的一些细节或者注意点进行说明。#include <stdio.h>#include <stdarg.h>#define MAXLEN 10int mon_log(char* format, ...){ char str_tmp转载 2020-09-27 17:13:23 · 1479 阅读 · 0 评论 -
shell-【技术干货】工作中编写shell脚本实践
1转载 2019-10-24 14:26:26 · 349 阅读 · 0 评论 -
TCP连接探测中的Keepalive和心跳包. 关键字: tcp keepalive, 心跳, 保活
1. TCP保活的必要性1) 很多防火墙等对于空闲socket自动关闭2) 对于非正常断开, 服务器并不能检测到. 为了回收资源, 必须提供一种检测机制. 2. 导致TCP断连的因素如果网络正常, socket也通过close操作来进行优雅的关闭, 那么一切完美. 可是有很多情况, 比如网线故障, 客户端一侧突然断电或者崩溃等等, 这些情况server并不能正常检测到连接的断开...转载 2018-12-25 10:21:51 · 312 阅读 · 0 评论 -
IO模式设置网络编程常见问题总结—IO模式设置,阻塞与非阻塞的比较,recv参数对性能的影响—O_NONBLOCK(open使用)、IPC_NOWAIT(msgrcv)。。。
非阻塞IO 和阻塞IO: 在网络编程中对于一个网络句柄会遇到阻塞IO 和非阻塞IO 的概念, 这里对于这两种socket 先做一下说明: 基本概念: 阻塞IO:: socket 的阻塞模式意味着必须要做完IO 操作(包括错误)才会 返回。 ...转载 2018-12-26 10:29:15 · 276 阅读 · 0 评论 -
EAGAIN、EWOULDBLOCK、EINTR与非阻塞 长连接
EAGAIN、EWOULDBLOCK、EINTR与非阻塞 长连接 EWOULDBLOCK用于非阻塞模式,不需要重新读或者写EINTR指操作被中断唤醒,需要重新读/写在Linux环境下开发经常会碰到很多错误(设置errno),其中EAGAIN是其中比较常见的一个错误(比如用在非阻塞操作中)。从字面上来看,是提示再试一次。这个错误经常出现在当应用程序进行一些非阻塞(non-blocki...转载 2019-01-03 15:07:41 · 2437 阅读 · 0 评论 -
通用makefile
INSTALLATION_PATH = /home/LIB_PATH = /home/INCLUDES = -I. -I $(INSTALLATION_PATH)/srcSRCS = main.cOBJS = $(SRCS:.c=.o)CC = gccCFLAGS = -Wall -O -gLIBS = -lpthread -L$(LIB_PATH)/libEXE = main...原创 2019-03-22 14:54:27 · 215 阅读 · 0 评论 -
JSON格式以及cJSON的使用及注意事项
前言在STM32 OTA例程中,设备端(STM32F769探索板)与云端交换数据使用的是JSON格式。在本篇文章中,将对JSON格式以及cJSON的使用及注意事项进行说明。JSON格式JSON(JavaScript Object Notation)是一个轻量级的数据交换格式。既便于开发者读写,也便于机器分析和构建。它独立于开发语言,是一种文本格式,很适用描述在各个系统间交换的数据。...转载 2019-03-22 18:26:08 · 3587 阅读 · 0 评论 -
C语言32个关键字9种控制语句34种运算符整理
32个关键字,如下表所示:关键字 说明 auto 声明自动变量 short 声明短整型变量或函数 int 声明整型变量或函数 long 声明长整型变量或函数 float 声明浮点型变量或函数 double 声明双精度变量或函数 char 声明字符型变量或函数 struct 声明结构体变量或函数 un...转载 2019-03-26 15:10:47 · 2328 阅读 · 0 评论 -
海思编译SDK内核和UBOOT或者MPP报错loadlocale.c:130: _nl_intern_locale_data: Assertion
在~./.bashrc 中添加LC_ACC=C然后source ./.bashrc就可以解决了 网上我还找了一种方法在/etc/default/locale 中更改 这种方法 。 ...原创 2019-05-24 10:44:55 · 2519 阅读 · 3 评论 -
STM32启动模式及API
我们玩ARM9,一般都是在内存里调试程序,速度飞快。STM32下也可以这样,虽说现在的flash寿命已经很长了,但flash中调试烧录程序还是一个很慢的过程,有时候程序上一个小小的改动要花上几倍的时间下载代码,这确实是不能忍受的。 我们也可以在开发STM32时,在内存中调试程序。 {STM32这颗Cortex-M3控制器,与其他许多ARM一样,提供了BOOT0和BOOT1两个管脚用于启动...转载 2019-06-25 18:19:19 · 600 阅读 · 0 评论 -
整理一个双向链表list.h
一直觉得Linux内核的双向链表是十分巧妙的设计,它的实现方式与数据结构课程上讲的完全不同。内核list实现依赖于GCC的扩展,在其它平台不一定能正常运行。在内核中,一般是结构体中使用链表成员,而不是像数据结构课那样在链表结构体中使用数据域。C++中将lsit作为模板,能应用于各种类型数据上,但Linux内核无法使用,因而使用其它手段实现,方便扩展。事实上,内核大量结构体都使用了list。网上有很...转载 2019-01-03 17:06:57 · 223 阅读 · 0 评论 -
创建脱离线程 pthread_attr_setdetachstate
关于脱离线程的说明:使用pthread_create()函数创建线程时,函数第二个参数为NULL,则使用线程属性的默认参数,其中非分离属性需要程序退出之前运行pthread_join把各个线程归并到一起。如果想让线程向创建它的线程返回数据,就必须这样做。但是如果既不需要第二个线程向主线程返回信息,也不需要主线程等待它,可以设置分离属性,创建“脱离线程”。 在任何一个时间点上...转载 2018-12-17 16:05:09 · 302 阅读 · 0 评论 -
crc16几种标准校验算法及c语言代码
Table of Contents一、CRC16校验码的使用二、CRC16校验码计算方法三、CRC16常见几个标准的算法四、CRC16的算法原理及程序一、CRC16校验码的使用 现选择最常用的CRC-16校验,说明它的使用方法。 根据Modbus协议,常规485通讯的信息发送形式如下: 地址 功能码 数据信息 校验码 1byte 1byte nbyte ...转载 2018-12-11 09:42:52 · 2266 阅读 · 0 评论 -
C语言中字符串如何转换为二进制、八进制、十进制、十六进制
在C语言某个程序当中需要把文本16进制转换成对应的16进制数,比如字符串"0x1a"转换成10进制的26,可以用以下函数来实现相关函数: atof, atoi, atol, strtod, strtoul表头文件: #include <stdlib.h>定义函数: long int strtol(const char *nptr, char **endptr, int base)...转载 2018-07-17 15:27:02 · 13890 阅读 · 0 评论 -
C语言清空输入缓冲区
先来看一段代码: #include <stdio.h> int main() { int num; char ch ; scanf("%d", &num); scanf("%c", &ch); printf("hello world\n"); system("pause...转载 2018-07-17 15:44:30 · 481 阅读 · 0 评论 -
Linux下配置文件读取操作流程及其C代码实现
一、概述 Linux具有免费、可靠、安全、稳定、多平台等特点,因此深受广大程序员的欢迎。 为了体现软件产品的灵活性,可添加配置文件存放某些重要的参数,在部署的时候根据实际的安装环境对每个配置项的值进行设置。这就要求程序能够准确读取到各个配置项的值。 本文详细介绍了Linux下配置文件的读取方法及读取操作的C代码实现,为相关的软件开发工作的开展提供了有益的参考。二、配置文件介绍 为了便于...转载 2018-07-24 10:58:26 · 4329 阅读 · 0 评论 -
软件开发实践中的入队列和出队列操作的C代码示例
概述 最近有在校的学生朋友在问我,数据结构中的队列在实际的软件开发项目中有什么样的用处。大家都知道,队列的特点是先入先出,即数据是按照入队列的顺序出队列的。在实际的软件开发项目中,当一个中间模块需要接收和发送大量的消息时,队列就可以大展身手了。我们可以将接收到的数据存储在一个全局队列中,然后在另外的程序流程中将数据从同一个全局队列中取出来,经过一定的处理之后将消息发送到另外的模块。这样做可以...转载 2018-07-24 10:59:41 · 597 阅读 · 0 评论 -
JSON简介及具体的JSON消息示例
在互联网软件前端与后台进行消息交互的过程中,需要有一种标准的数据交换格式供前后端采用。在众多的数据交换格式中,JSON(JavaScript Object Notation,JS 对象标记)是应用得比较广泛的,它采用完全独立于编程语言的文本格式来存储和表示数据。JSON的层次结构简洁、清晰,易于阅读和编写,同时也易于机器解析和生成,这有效地提升了网络传输效率。本文首先对JSON进行简单的介绍,...转载 2018-07-24 11:03:07 · 1343 阅读 · 0 评论 -
Linux下一个简单的日志系统的设计及其C代码实现
1.概述 在大型软件系统中,为了监测软件运行状况及排查软件故障,一般都会要求软件程序在运行的过程中产生日志文件。在日志文件中存放程序流程中的一些重要信息,包括:变量名称及其值、消息结构定义、函数返回值及其执行情况、脚本执行及调用情况等。通过阅读日志文件,我们能够较快地跟踪程序流程,并发现程序问题。因此,熟练掌握日志系统的编写方法并快速地阅读日志文件,是对一个软件开发工程师的基本要求。 本文详细...转载 2018-07-24 11:05:31 · 2459 阅读 · 2 评论 -
MD5加密算法(c语言实现)
这次我分享的是MD5加密算法。其实MD5这个大名在还没上密码学课之前我就听说过了,那时我才刚学php,视频里面的讲师说像密码这种重要的信息要用md5()函数处理下再存数据库,这么一说起来其实MD5算是我接触的第一个现代密码呢 考虑到可能有些人是为了科普一下才点进来看的,我还是结合自身经验和课本知识把MD5加密原理讲一下把,MD5算法的具体过程有以下4步: (1)附加填充位 ...转载 2018-07-13 15:31:15 · 4166 阅读 · 6 评论 -
C语言实现baes64
#include <stdio.h>#include <stdint.h>#include <string.h>#include <malloc.h> char base64_table[] = { 'A','B','C','D','E','F','G','H','I','J', 'K','L','M','N','...原创 2018-07-31 16:23:28 · 353 阅读 · 0 评论 -
使用OpenSSL 的AES加密报错undefined reference to `AES_set_encrypt_key'
使用linux带的openss 出现没找到aes.h里面的几个函数,是因为需要我们自己添加需要的库添加库和头文件的方法有 hello hello.c -I /home/hello/include -L /home/hello/lib -lworld上面这句表示在编译hello.c时:-I /home/hello/include表示将/home/hello/include目录作为第一个...原创 2018-08-01 10:26:09 · 11993 阅读 · 0 评论 -
C语言再学习--关键字
C语言一共有32个关键字,如下表所示: 关键字 说明 auto 声明自动变量 short 声明短整型变量或函数 int 声明整型变量或函数 long 声明长整型变量或函数 f...转载 2018-10-11 10:26:00 · 161 阅读 · 0 评论 -
C语言堆栈入门——堆和栈的区别
在计算机领域,堆栈是一个不容忽视的概念,我们编写的C语言程序基本上都要用到。但对于很多的初学着来说,堆栈是一个很模糊的概念。堆栈:一种数据结构、一个在程序运行时用于存放的地方,这可能是很多初学者的认识,因为我曾经就是这么想的和汇编语言中的堆栈一词混为一谈。我身边的一些编程的朋友以及在网上看帖遇到的朋友中有好多也说不清堆栈,所以我想有必要给大家分享一下我对堆栈的看法,有说的不对的地方请朋友们不吝赐教...转载 2018-11-06 17:59:07 · 15543 阅读 · 5 评论 -
使用CURL库,发送HTTP的POST的文件传输
最近搞一个linux 下用CURL的库传输文件到服务器#include <stdio.h>#include <curl/curl.h>#include <sys/stat.h>#include <fcntl.h>#include <string.h>int main(void){ char * Curl_add...原创 2018-12-21 11:44:10 · 6406 阅读 · 0 评论 -
linux c函数获取系统IP地址
一,通过分析/etc/hosts文件里映射关系获取ip地址。#include <stdio.h>#include <netdb.h>int main(){ struct hostent *he; char hostname[20] = {0}; gethostname(hostname,sizeof(hostname...转载 2018-12-21 11:58:46 · 1437 阅读 · 1 评论 -
C语言字节对齐及设置编译对齐方式方法
一、概念 对齐跟数据在内存中的位置有关。如果一个变量的内存地址正好位于它长度的整数倍,他就被称做自然对齐。比如在32位cpu下,假设一个整型变量的地址为0x00000004,那它就是自然对齐的。 二、为什么要字节对齐 需要字节对齐的根本原因在于CPU访问数据的效率问题。假设上面整型变量的地址不是自然对齐,比如为0x00000002,则CPU如果取它的值的话...转载 2018-07-17 15:25:23 · 8524 阅读 · 0 评论