自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(19)
  • 收藏
  • 关注

原创 第 2 章:FFmpeg简介

提供了一些常用的输入输出设备的处理框架。在Linux上有更多选择,:音频输入输出设备有oss、alsa等,视频设备有opengl、video4linux2、x11grab等。根据实际需求,可进行媒体封装格式的扩展,增加自己定制的封装格式,即在AVFormat中增加自己的封装处理模块。ffprobe是一个强大的多媒体分析工具,可以从媒体文件或者媒体流中获取音频格式,视频宽高,时长等信息。swscale模块提供了底层的图像转换API接口,它允许进行图像缩放和像素格式转换,通常转换是有损的。

2024-04-20 21:33:22 829

原创 第一章:多媒体基础知识

目前常见的视频都是25fps以上,1帧1080p的图像有2073600像素,如果按照8位色深的RGB格式存储,需要约6M存储空间,按25fps算,一秒钟需要150M,即1200Mbit/s,这超过了一个千兆以太网的带宽。对于双声道而言,他有左右两个声道。PAL电视标准,每秒25帧,电视扫描线为625线,奇场在前,偶场在后,标准的数字化PAL电视标准分辨率为720*576, 24比特的色彩位深,画面的宽高比为4:3, PAL制电视的供电频率为50Hz,场频为每秒50场,帧频为每秒25帧,扫描线为625行。

2024-03-20 20:56:18 588 1

原创 十二:多线程服务端实现

运行程序前需要将相应进程信息读入内存,如果运行进程A后需要紧接着运行进程B,就应该将进程A相关信息移出内存,并读入进程B相关信息。这就是上下文切换。但此时进程A的数据也将被移动到硬盘,所以上下文切换需要很长时间。即使通过优化加快速度,也会存在一定的局限。为了保持多进程的优点,同时在一定程度上克服其缺点,引入了线程,线程具有以下优点。

2024-03-13 20:56:37 1003

原创 十一:优于select的epoll(最重要)

select复用方法由来已久,由于无法同时接入上百个客户端,所以并不适合以Web服务端开发为主流的现代开发环境,所以需要linux平台下的epoll。

2024-03-10 15:30:21 1021 1

原创 十:套接字和标准I/O,以及分离I/O流

设置缓冲的主要目的是为了提高性能,但是套接字的缓冲主要是为了实现TCP协议而设立的。这个数据就存在套接字的输出缓冲。比较一个字节的数据发送10次(10个数据包)的情况和累计10个字节发送一次的情况。虽然文件描述符本身并不根据输入和输出进行区分,但我们分开了2个文件描述符的用途,因此也属于“流”的分离;但是需要传输的数据越多,有无缓冲带来的性能差异越大,可以通过如下两种角度说明性能的提高。但是这样只是准备好了半关闭环境,剩余的文件描述符仍然可以进行I/O,所以并没有发送EOF,因此还需要一些特殊处理。

2024-03-06 21:01:14 417 1

原创 九:多播和广播

emsp 多播(Multicast )方式的数据传输是基于UDP完成的。因此,与UDP服务器端/客户端的实现方式非常接近。区别在于, UDP数据传输以单一目标进行,而多播数据同时传递到加入(注册)特定组的大量主机。换言之,采用多播方式时,可以同时向多个主机传递数据。

2024-03-04 20:37:29 773

原创 八:多种I/O函数

之前的示例中,基于Linux的使用 read&write 函数完成数据 ν0,基于 Windows 的则使用 send & recv 函数。原因已经在第 l 章进行了充分阐述。本章的Linux示例也将使用 send& recv 函数,并讲解其与 read&write函数相比的优点所在。还将介绍几种其他的I/O函数。

2024-02-26 21:21:51 578 1

原创 七:IO复用(select)

理解复用技术在服务器端的应用两种模型的对比:引入复用技术,无论连接多少客户端,提供服务的进程只有一个。总结书上对IO复用的另一种理解。课堂有10个学生,上课时会问问题,于是学校给每个学生配了一个老师(多进程)。现在有一个超级教师,可以回答所有人的问题,但是学生要举手提问,然后老师回答举手学生的问题。只要回答速度够快,同样可以满足学生的提问要求。

2024-02-19 22:09:09 811 1

原创 六:多进程相关

为了能够使服务端服务更多客户端,且减少客户端等待时间,所以要对服务端进行改进,使得能够向所有发起请求的客户端提供服务。本节讨论同时向多个服务端提供服务的并发服务器端。windows不支持。

2024-02-14 18:14:05 730 1

原创 五:优雅断连 & 域名<=>IP & 套接字多种选项

提供网络服务的服务器端也是通过IP地址进行区分的,但是几乎不可能以非常难记的IP地址形式交换服务器端地址信息。因此,将容易记、易表述的域名分配并取代IP地址。

2024-02-10 10:55:09 873 4

原创 四:基于UDP的服务端/客户端

在4层TCP/UDP模型中的传输层,有TCP和UDP两种数据传输方式。

2024-01-21 21:24:30 913 1

原创 三:基于TCP的服务端/客户端

程序描述如下服务端从客户端获取多个数字和运算符信息。服务端搜索到数字后进行运算,将结果传回客户端。例如给服务端发送3、5、9、* 则服务端返回359的结果客户端用 1 个字节整数形式传递操作数的个数。客户端向服务器端传送的每个操作数占用 4 字节。传递完操作数后紧跟着传递一个占用 1 字节的运算符。服务器端以 4 字节整数向客户端传回运算结果。客户端得到运算结果后终止与服务器端的连接。先展示效果自己瞎写写exit(1);

2024-01-16 21:01:07 858 2

原创 二:套接字协议、类型、地址族与数据序列

下面给出参数的详细说明。

2024-01-14 00:03:44 831 1

原创 一:理解网络编程和套接字

(以下函数:成功返回0或文件描述符,失败返回-1)运行结果如下注意:由于没有开启端口复用,所以运行完成无法再次立即运行。

2024-01-13 14:14:55 801 1

原创 使用SecureCRT连接腾讯云报错:Password authentication failed

刚刚在腾讯云装了Ubuntu18.04镜像,结果一直报错 Password authentication failed让确认我的用户名和密码,找了教程改了ssh_config文件还是不行,然后看了一下文档才知道腾讯云Ubuntu的默认用户名是Ubuntu,默认没有设置root用户和密码,这在安装虚拟机的时候我倒是没遇到过,以下是解决方案:正常的话就先搞这个再去改配置文件就行了。...

2022-03-16 18:10:15 1813

原创 const与对象初始化之间的关系梳理

普通对象,指针对象,引用初始化遇到const时关系总结1:普通对象:利用一个对象初始化另一个对象,他们是不是const无关紧要int i = 42;const int cj = i;int j = cj;2:指针或引用:可以使用一个非常量初始化一个底层const对象,反过来不行。注意:引用必须用同类型对象初始化int i =42;const int *cp = &i;const int &r = i;const int &r2 = 42; //可以绑定同类型字面

2021-09-29 20:10:26 104

原创 构造和析构在主函数和子函数的不同

构造和析构在主函数和子函数中的不同今天学习构造和析构时发现了很有意思的现象,在子函数中创建对象,输出显示构造和析构都调用了,但是主函数中创建的对象在编译时,只显示构造函数调用了。刚开始,我还以为主函数和子函数中的局部变量存储位置不同,其实不是的。两者局部变量均存放在栈区,程序结束后便会释放。class Person{public: Person() { cout << "构造函数的调用" << endl; } ~Person() { cout <&lt

2020-08-26 08:45:20 438

原创 用VS2019学习类时遇到LNK2019

用VS2019学习类时遇到LNK2019 今天用vs2019时按照方法将类分文件编写,结果生成时并没有出现错误,但是一编译就会出现LNK2019的提示。 经过查询发现原来是类的声明与实现分开写导致的。尽管函数的分文件编写可以成功,但是类并不可以,因为模板不允许这样做,即库出了问题。但是初学者我也不太懂,于是找到了这个巧办法,如下: 1、将源文件中的.cpp改为.hpp 2、将主函数所在源文件的头文件由.h改为.hpphpp,其实质就是将.cpp的实现代码混入.h头文件当中,定义

2020-08-25 23:22:43 554 1

原创 离散时间傅里叶变换(DTFT)与离散傅里叶级数(DFS)

离散信号即序列信号,序列的傅里叶变换可以分为可和与不可和两种。1、可和的信号即有限序列应用的是离散时间傅里叶变换(DTFT)就是,其频谱为连续函数,可以直接应用傅里叶变换公式。2、不可和的信号通常为周期序列,对于他要先求离散傅里叶级数(DFS),这个过程也被叫做对周期序列以周期N进行周期延拓,求出离散傅里叶级数后,应用傅里叶变换公式(FT),便可以求周期序列的傅里叶变换。对于同一个周...

2019-03-03 11:21:29 8573

普中51开发板矩阵键盘的使用

创建新项目,然后添加这些文件即可

2023-05-15

空空如也

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

TA关注的人

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