- 博客(28)
- 资源 (2)
- 收藏
- 关注
原创 sonic音频倍速播放
或者float类型,但是ffmpeg重采样后的数据和SDL使用的数据都是uint8类型,所以这里数据长度就需要重新计算:原始的数据长度/(音频通道数 * S16类型数据所占字节数;对应的格式:AV_SAMPLE_FMT_S16、AV_SAMPLE_FMT_FLT。由于sonic库处理的数据为。
2024-07-26 11:20:05 150
原创 初识linux网络编程的Posix API与网络协议栈
POSIX,全称为“可移植操作系统接口”(Portable Operating System Interface),最初由IEEE组织制定,目的是为了使不同的操作系统之间可以互相兼容。POSIX标准定义了一系列API和命令行工具,规定了操作系统应该提供哪些功能,以及这些功能的调用方式和行为。这些标准都是为了让不同的操作系统之间具有更好的兼容性,以便更方便地编写跨平台程序。对于Posix API,这里做了详细介绍。
2023-12-13 22:21:22 1149
原创 基于socket编程的网络原理简单分析
对于系统接发网络数据的流程,这里以TCP/IP五层网络通信模型进行展开概述。基于网络模型结合socket通信,我们可以得到通信的一个大概流程图示,如下:简单来时数据从应用程序发送数据经过层层打包,在各层加上对应的头部信息,最后以数据帧的格式到达底层;底层接收到数据之后又通过一层层的头部信息分析,最后以源数据形式被应用程序接收。应用程序通过read、write将数据拷贝到内核中。
2023-12-05 23:54:33 970
原创 简单探讨右值引用与左值引用
区分表达式的左右值属性:如果可对表达式用符取址,则为左值,否则为右值。二:左值引用和右值引用左值引用是为了避免对象的拷贝;右值引用时为了实现移动语义和完美转发。
2023-11-12 17:52:49 104
原创 std::condition_variable条件变量和lock_guard、unique_lock
用于阻塞一个线程,或同时阻塞多个线程,直至另一线程修改共享变量(条件)并通知。有意修改变量的线程必须std::mutex即使共享变量是原子的,也必须在互斥下修改它。任何有意在上等待的线程必须一:常用成员函数。
2023-11-11 23:00:54 294
原创 RTMP和flv分析
RTMP是一种基于flv文件格式的流媒体格式;FLVSignature3ByteFLV签名,固定"F","L","V"(0x46,0x4c,0x56)Version1ByteFLV版本,目前固定为0x01TypeFlag1Byte数据类型,前5bit为保留位,必须为0;第6位表示是否存在音频tag;第7位为保留位,必须为0;第8为表示是否存在视频tagDataOffSet4ByteFLV Header的大小,当前为9Body4Byte前一个tag的长度,第一个tag则为0。
2023-08-21 23:18:29 796
原创 音视频解码--AAC解码获得pcm数据与H264解码获得yuv数据
如下图所示,解码就是将H264、AAC等数据解析为原始YUV、PCM数据。参数 poutbuf:这里指向解码后数据存放的位置,通常为AVPacket下的data即可;参数poutbuf_size:解码数据的数据大小,相对为AVPacket下的size即可;(1):av_parser_parse2:解析获得一个packet。参数buf_size:待解析数据大小。参数buf:读取到的待解析的数据;2:ffmpeg流程分析。
2022-11-27 20:09:09 818 1
原创 音视频解封装--解封装分离H264文件
H.264中图像以序列为单位进行组织,一个序列是一段图像编码后的数据流,以 I 帧开始,到下一个 I 帧结束。IDR帧的作用是立即刷新,防止错误传播,当解码器解码到IDR图象时,立即将参考帧队列清空,重新查找参数集,开始一个新的序列。如下图所示,解封装就是将Flv、MP4等文件解封装为视频H264或H265压缩数据,音频解封装为AAC压缩数据。帧之间的间隔了多少个帧。
2022-10-16 22:44:32 1544
原创 音视频解封装--解封装分离音频AAC文件
AAC音频文件的每一帧由ADTS Header和AAC Audio Data组成,ADTS头信息为7个字节或者9个字节(一般情况为7个字节,取决于是否包含CRC校验,也就是固定头中。ADTS可以再任意帧解码,每一帧都有头信息。如下图所示,解封装就是将Flv、MP4等文件解封装为视频H264或H265压缩数据,音频解封装为AAC压缩数据。这里代码逻辑不是很严谨,异常部分也未作处理,着力先提取出AAC数据。固定头信息中的数据每一帧都相同,可变头信息在帧与帧之间可变。
2022-10-16 14:32:11 379
原创 window下编译ffmpeg--安装msys2以及遇到的问题(签名是未知信任的;无效或以损坏的软件包(PGP签名))
在windows下编译FFmpeg需搭建编译环境,首先第一个需要搭建MSY32,将安装过程以及遇到的问题(签名是未知信任的;无效或以损坏的软件包(PGP签名))做一个记录。
2022-01-09 23:28:09 3603 3
原创 虚拟机不能联网,和主机相互不能ping通
怀着悲愤的心情来写这篇博客,初踏音视频学习的道路刚搭建号环境在准备qt环境安装时却发现无论如何不能运行安装qt,提示错误;最后考虑到qt下载的64位而虚拟机安装的确是32位(后续要利用64位学习),怀着锤心痛哭的心情来记录今天安装qt是遇到的网络配置正确,不能上网,和主机相互不能ping通的情况。一:关闭防火墙观察是否能ping通;二:修改虚拟机网络编辑器1:点击编辑选择虚拟网络编辑器2:点击更改设置进入设置页面(此时没有显示桥接模式)3:进入设置会显示当前的桥接模式,在“桥接至
2022-01-05 23:25:59 1099
原创 ubuntu ffmpeg开发环境搭建
1 :创建目录 在home目录下创建以下目录:ffmpeg_sources:用于下载源文件 ffmpeg_build: 存储编译后的库文件 bin:存储二进制文件(ffmpeg,ffplay,ffprobe,X264,X265等) cd ~mkdir ffmpeg_sources ffmpeg_build bin2 安装依赖 //更新库sudo apt-get update//安装需要的组件sudo...
2022-01-03 21:14:11 1468
原创 Makefile的使用
一:gcc编译使用Makfeile之前我们先了解下gcc编译过程中经历的四个步骤:1:预处理阶段在这个阶段主要对我们的代码进行一下操作:加载头文件、宏展开、处理注释、处理条件编译、添加文件名和行号。通过这个阶段生成的是经过预处理的c原始程序(.i文件)。2:编译对于经过预处理的c原始程序处理生成汇编语言原始程序(.s文件)。3:汇编对于结果编译之后生成的汇编语言原始程序处理生成不可执行的二进制文件(.o)文件。4:链接对于不可执行的二进制文件进行库的链接生成可执行的二进制文件。二:M
2021-07-01 19:29:20 300
原创 c中const的使用
一:const与变量在c中const修饰变量,可以使变量常量化。用const修饰基本数据类型(非指针)时,表示变量的值不可以发生改变,如:const int a = 100;int const a = 100;a = 200;//这里会出现错误const和int是同级,所以以上连个表达式是等价的。用const修饰变量之后就不可以对此变量在一次赋值。二:const和指针1:常量化指针目标表达式一般形式如下:const 数据类型 *指针变量名 = 指针运算表达式const int *p;
2021-06-23 21:00:23 193
原创 Ubuntu下安装samba遇到的一些问题及解决方案
一:如果windows访问samba共享时,提示一个用户不能访问多个共享资源,解决方法如下:1 按下Windows键加R键可打开运行窗口,输入cmd,回车2: 输入net use * /del按提示输入:y二:在win10会提示该协议不安全解决办法:Windows下:控制面板=》程序和功能=》启用或关闭windows功能 中开启 smbv1支持 见图:三:在windows下输入虚拟机ip想连接共享文件夹是电脑出现“你不能访问此共享文件夹,因为你组织的安全策略阻止未经身份验证的来宾访问。”
2021-06-08 22:38:38 2384 1
原创 Ubuntu下samba服务的安装及配置
**Ubuntu下samba服务的安装及配置一、 安装samba服务:命令行中输入sudo apt-get install samba二、 配置1、共享一个新的目录,先创建一个需要共享的目录,并且修改其权限.cd //切换到用户主目录下mkdir shared //创建一个新的目录chmod 777 shared //将其权限修改为任意用户可读可写可执行2、打开samba配置文件sudo vim /etc/samba/smb.conf3、对我们创建的.
2021-06-08 13:35:13 5558 1
原创 spring docker安装地址及简单使用
docker镜像文件,docker tool box可在windows系统使用链接:https://pan.baidu.com/s/1AkF4VLaXoCqpnr7U0n54NA提取码:6ihkdocker的启动1:下载解压安装之后在电脑右下角打开Docker Quickstart Terminal(有的在桌面直接生成快捷方式)2:启动后在docker命令行中执行下面4行命令配置加速器...
2019-08-07 21:08:28 188
原创 springboot 基本权限以及自定义权
简单的springboot权限配置1:建立spring starter project,选择spring security;2:建立controller类,加入controller注解写入地址映射(注意controller注解,此处返回为json字符串,使用controller注解返回jsp页面,但需配置jsp,此处不配置jsp)3运行springboot,浏览器输入地址,进入登录页面...
2019-08-03 20:33:07 596
原创 spring阿里云配置
1:点击window窗口选择Preferences,找到maven选择userseting根据提示路径找到setting.xml文件,找到maven的镜像,在其后配置 <mirror> <id>alimaven</id> <mirrorOf>central</mirrorOf> ...
2019-08-02 20:33:45 323
原创 springboot+緩存
**springboot+緩存1:pom文件配置依賴org.springframework.bootspring-boot-starter-cache2:在springboot的启动类上,加上此注解@EnableCaching,全局开缓存,默认缓存框架是ConcurrentMap.3:在mapper文件中使用@Cacheable(value=“users”,key="#id")...
2019-08-02 18:06:07 123
十套数据结构试题及答案1.doc
2019-06-24
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人