自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(16)
  • 资源 (1)
  • 收藏
  • 关注

转载 基本排序算法

和数据量有关的操作比如+、-、*、/为参数操作。拿简单的选着排序为例子第一轮在整个序列里找到最小的值和第一个位置的数进行交换,然后在1到N-1的的区间找最小值和1位置的数进行交换。把每个步骤的常数操作都记录下来。可以得到表达式只取最高阶项所有为O(N^2).如果最高阶项相同则看实际跑的情况那个算法比较好。选着排序代码如下:额外空间复杂度因为只是用了有限几个变量,i,satrt,min所有额外空间复杂度为(0)上面的是数字序列,下面的是位置。0和1位置的的数字进行比较小的放左边,大的放右边。

2022-09-06 09:43:55 199

原创 hi3516ev200进行rtmp推流报错“[SAMPLE_COMM_VENC_GetVencStreamProc]-2024: get venc stream time out, exit thr“

hi3516ev200进行rtmp推流报错"[SAMPLE_COMM_VENC_GetVencStreamProc]-2024: get venc stream time out, exit thr"现象描述解决办法现象描述如下图所示我在运行rtmp推流程序之后显示提示获取视频流失败,导致线程退出,而上面的提示又是"[Func]:imx307_2l_write_register [Line]:140 [Info]:I2C_WRITE error!",是与imx307相关的写寄存器错误,可能是sensor

2022-04-21 10:51:07 1205

原创 使用x264编码器编码从设备获取的yuv数据

使用x264编码器编码从设备获取的yuv数据实现步骤代码演示需要注意的是从Ubuntu采集到的yuv数据是yuyv422格式的yuv数据,这个格式的原始数据是不能输入编码器进行编码的,所以我们要对yuv的格式进行一下转换参考在Linux环境下使用ffmpeg将YUYV格式的yuv数据转换成yuv420p格式的yuv数据实现步骤前面已经通过设备获取到yuv格式的数据,并且进行了格式转换,现在只需要创建x264编码器并对编码器进行一些设置然后向编码器喂数据,和读数据即可,具体步骤如下:1、查找编码器

2022-03-26 20:09:34 2971

转载 在Linux环境下使用ffmpeg将YUYV格式的yuv数据转换成yuv420p格式的yuv数据

yuyv转换为yuv420p格式参考文章代码演示参考文章参考大佬的文章参考雷神的文章,向雷神致敬参考了这两篇文章还有网上的文章大部分都是从解码器输出的frame中的视频数据进行格式转换。由于自己刚刚入门,有一个需求是对packet.data摄像头读取的原始yuv数据进行格式转换,我的环境是Ubuntu18.04,在使用AVDictionary *option 设置图像的参数的时候使用,都能设置图像的分辨率和帧率 av_dict_set(&option,"video_size","640x4

2022-03-25 10:45:44 1325 3

原创 在Ubuntu虚拟机使用ffmpeg采集摄像头的yuv视频数据

在Ubuntu虚拟机使用ffmpeg采集摄像头的yuv数据使用命令从视频提取出yuv数据提取yuv视频数据单独提取视频的y分量或u、v分量通过摄像头获取yuv数据使用命令从视频提取出yuv数据提取yuv视频数据提取命令:ffmpeg -i ./cl.mp4 -an -c:v rawvideo -pix_fmt yuv420p out.yuv./cl.mp4为当前目录下的cl.mp4视频文件-an其中a代表是audio,n代表是none,意思就是过滤掉音频-c:v代表的是视频的编解码器raw

2022-03-20 12:14:26 4184 2

原创 在Linux环境下使用ffmpeg将PCM音频数据编码成aac数据

在Linux环境下使用ffmpeg将PCM音频数据编码成aac数据程序框图代码演示程序框图将pcm数据经过aac编码器编码成aac数据,我是将从设备上采集的数据经过重采样送入aac编码器进行编码,由于我的测试设备是Ubuntu 18.04虚拟机,采样率为44100hz,采样大小为有符号16位数,满足编码器的输入数据参数要求,所以也可以直接将从设备获取的音频数据送入编码器进行编码,无需经过重采样,但是下面的示例代码我是将从设备读取的音频数据经过重采样再送入编码器进行编码,但是我设置重采样的输入输出音频三元

2022-03-17 17:44:25 3959 5

转载 在Linux环境下使用ffmpeg进行音频重采样

在Linux环境下使用ffmpeg进行音频重采样关于音频重采样什么是音频重采样?什么是音频三元组?采样率采样大小通道数(声道数)音频流码率计算为什么要进行音频重采样如何使用ffmpeg实现音频重采样创建重采样上下文初始化重采样对每一个音频帧进行重采样代码演示:注意事项感谢这位博主提供的参考文章关于音频重采样什么是音频重采样?所谓音频重采样就是将音频的三元组(采样率,采样大小,通道数)的值转换成另外一组音频三元组的值。三元组中任何一组值发生改变都称之为重采样,当然也可以三组数据都改变。什么是音频三

2022-03-15 16:23:58 646 1

转载 基于线程池和使用openssl加密的TCP文件传输

基于线程池和使用openssl加密的TCP文件传输主函数部分代码演示部分代码讲解线程池部分代码演示部分代码讲解对接客户端代码(消费者处理接客户端请求)代码演示部分代码调试问题客户端部分代码演示部分代码调试问题程序编译和证书,密钥的生成代码运行演示主函数部分在主函数完成线程池的初始化,socket初始化,以及SSL加密算法库的初始化和加密算法的加载。在完成这些任务的初始化后,在while()循环里等待客户端的接入,一旦有客户端接入就将对接客户端所需要的参数和处理函数加入消费者任务链表,让消费者线程去处理客

2022-03-13 18:11:16 725 1

原创 在Linux环境下使用ffmpeg生成AAC数据报错Unknown encoder ‘libfdk_aac‘

我们使用ffmpeg -i ./cl.mp4 -vn -c:a libfdk_aac -ar 44100 -channels 2 -profile:a aac_he_v2 cl.aac命令采集视频的音频acc数据报错Unknown encoder 'libfdk_aac'我的解决方法是重新编译安装,在执行config的时候加上–enable-libfdk-aac选项。之前安装ffmpeg的时候没有加此选项导致没有编译出fdk。解决方法:由于此前我是使用源码的安装方式所以我就不用下载了,直

2022-03-10 17:00:45 3668

原创 多路IO复用与异步IO

多路IO复用与异步IO同步阻塞IO(BIO)与同步非阻塞IO(NIO)同步阻塞IO同步非阻塞IO多路IO复用select()函数使用示例代码演示poll()函数使用示例代码演示异步IO代码演示什么时多路IO复用? 多路IO复用是一种同步IO模型,,它可以实现一个线程可以同时监视多个文件描述符,一旦有某个文件描述符准备就绪,就会通知应用程序,对该文件描述符进行操作。在监视的各个文件描述符没有准备就绪的时候,应用程序线程就会阻塞,交出cpu,让cpu去执行其他的任务,以此提高cpu的利用率。同步阻塞IO(B

2022-03-10 16:53:42 1348

原创 使用指针与共同体测试机器的大小端

使用指针与共同体测试机器的大小端共同体与大小端的概念C语言测试机器的大小端内存分布与测试原理共同体与大小端的概念共同体:(1)共用体union和结构体struct在类型定义、变量定义、使用方法上很相似。(2)共用体和结构体的不同:结构体类似于一个包裹,结构体中的成员彼此是独立存在的,分布在内存的不同单元中,他们只是被打包成一个整体叫做结构体而已;共用体中的各个成员其实是一体的,彼此不独立,他们使用同一个内存单元。可以理解为:有时候是这个元素,有时候是那个元素。更准确的说法是同一个内存空间有多种解释方

2022-02-24 12:08:07 205

原创 offsetof宏与container_of宏解析

offsetof宏offsetof宏的作用container_of宏的作用offsetof宏的原理offsetof宏的原理宏的分析offsetof宏的作用用宏来计算结构体中某个元素和结构体首地址的偏移量(其实质是通过编译器来帮我们计算)。container_of宏的作用知道一个结构体中某个元素的指针,反推这个结构体变量的指针。有了container_of宏,我们可以从一个元素的指针得到整个结构体变量的指针,继而得到结构体中其他元素的指针。offsetof宏的原理我们虚拟一个type类型结构体变量

2022-02-23 20:28:51 169

原创 C语言结构体内存对齐

结构体内存对齐的意义代码演示及运行结果分析代码演示运行结果展示运行结果分析。gcc对结构体对齐的支持结构体内存对齐的意义(1)结构体中元素对齐访问主要原因是为了配合硬件,也就是说硬件本身有物理上的限制,如果对齐排布和访问会提高效率,否则会大大降低效率。(2)内存本身是一个物理器件(DDR内存芯片,SoC上的DDR控制器),本身有一定的局限性:如果内存每次访问时按照4字节对齐访问,那么效率是最高的;如果你不对齐访问效率要低很多。(3)还有很多别的因素和原因,导致我们需要对齐访问。譬如Cache的一些.

2022-02-23 13:47:01 870

原创 C程序的储存空间分布

C程序的储存空间分布正文段(代码段)一级目录一级目录一级目录一级目录正文段(代码段)一级目录一级目录一级目录一级目录

2022-02-22 18:38:07 625

原创 基于C语言的字符串提取

基于C语言的字符串提取提示:一个中文汉字占三个字节空间,也就是char[3]=“粤”;才能装下,但是一般境况下用char a[]=“粤”,或者char* a=“粤”;这样就能装更多的字符串内容,使用更加方便。#include <stdio.h>void main(){ char buf[128]={"<item desc=""车牌号""><![CDATA[粤C6YJ19]]></item>"}; char a[3]={"粤"}

2021-05-05 22:38:56 2877

原创 Linux——TCP/UDP网络编程

Linux网络编程TCP/UDP对比与字节序概念TCP Server实现步骤三级目录四级目录五级目录TCP/UDP对比与字节序概念TCP/UDP对比1.TCP面向连接(如打电话要先拨号建立连接);UDP是无连接的即发送数据之前 不需要建立连接2.TCP提供可靠的服务。也就是说,通过TCP连接传送的数据,无差错,不丢失,不重复,且按序到达;UDP尽最大努力交付,即不保证可靠交付,3.TCP面向字节流,实际上是TCP把数据看成一连串无结构的字节流UDP是面向报文的UDP没有拥塞控制,因此网络出

2021-03-30 22:53:54 161

基于线程池和使用openssl加密的TCP文件传输工程源码

基于线程池和使用openssl加密的TCP文件传输工程源码

2022-03-13

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除