C++音视频开发技巧汇总(持续更新)
1.录制PCM数据
有时候我们需要录制PCM数据到文件以测试录制数据是否正确,一般可以使用以下代码实现:
FILE *pf;
fopen_s(&pf, "rec.pcm", "wb");
fwrite(myPcmArr, 1, outBufferLen, pf);
录制pcm文件后可以使用Audacity来导入pcm文件测试录制数据是否正确。
2.AVAudioFifo的正确使用方法
AVAudioFifo是FFmpeg中用于音频数据缓冲的FIFO(First In First Out)队列。它提供了一种方便的方式来处理音频数据的读取和写入。下面是使用AVAudioFifo写入和读取音频数据的示例代码:
写入音频数据到AVAudioFifo:
AVAudioFifo* audioFifo = av_audio_fifo_alloc(AV_SAMPLE_FMT_FLTP, 2, 1024);
AVFrame* audioFrame; // 假设已经初始化好了
int num_samples = audioFrame->nb_samples;// 将音频数据写入AVAudioFifo
int ret = av_audio_fifo_write(audioFifo, (void**)audioFrame->data, num_samples);
if (ret < num_samples) {// 写入失败,处理错误
}// 释放AVFrame
av_frame_free(&audioFrame);
从AVAudioFifo中读取音频数据:
AVAudioFifo* audioFifo; // 假设已经初始化好了
AVFrame* audioFrame; // 假设已经初始化好了
int num_samples = audioFrame->nb_samples;// 从AVAudioFifo中读取音频数据
int ret = av_audio_fifo_read(audioFifo, (void**)audioFrame->data, num_samples);
if (ret < num_samples) {// 读取失败,处理错误
}// 处理读取到的音频数据// 释放AVFrame
av_frame_free(&audioFrame);
需要注意的是,写入和读取音频数据时,需要确保AVFrame的格式和AVAudioFifo的格式一致。在示例代码中,假设音频数据的格式为AV_SAMPLE_FMT_FLTP(浮点型),声道数为2,每个声道的采样数为1024。你可以根据实际情况修改这些参数。
但是,AVAudioFifo以一次音频采样为基本单位,在使用前通常需要自行处理底层字节流,而且也无法进行限制其长度,从这个角度来看,不如直接自已定义队列使用更灵活,不建议使用。
3.vs2013格式化代码快捷键
有时侯代码写乱了,就全选代码然后依次按Ctrl+K,Ctrl+F 就格式化好了。
相关文章:
C++音视频开发技巧汇总(持续更新)
1.录制PCM数据 有时候我们需要录制PCM数据到文件以测试录制数据是否正确,一般可以使用以下代码实现: FILE *pf; fopen_s(&pf, "rec.pcm", "wb"); fwrite(myPcmArr, 1, outBufferLen, pf); 录制pcm文件后可以使用Audacity来导…...
4462 4.曙曙献爱心
#include<bits/stdc.h> using namespace std; int n,m,k; int a[1001]; int s[1001]; int f[1001][1001];//f[i][j],i个警察,j个点,能管理的最大人数 int main(){cin>>n>>m>>k;for(int i1;i<n;i){cin>>a[i…...
浅谈命令模式
命令模式是一种行为设计模式,用于将一个请求封装成一个对象,从而使得请求的发送者和接收者解耦,并支持对请求进行参数化、队列化、撤销和重做等操作。 在命令模式中,有一下介个关键角色: Command(命令&am…...
软件测试/测试开发丨Python 模块与包
python 模块与包 python 模块 项目目录结构 组成 package包module模块function方法 模块定义 定义 包含python定义和语句的文件.py文件作为脚本运行 导入模块 import 模块名from <模块名> import <方法 | 变量 | 类>from <模块名> import * 注意&a…...
java企业网站系统Myeclipse开发mysql数据库web结构java编程计算机网页项目
一、源码特点 java Web企业网站系统是一套完善的java web信息管理系统,对理解JSP java编程开发语言有帮助,系统具有完整的源代码和数据库,系统主要采用B/S模式开发。开发环境为 TOMCAT7.0,Myeclipse8.5开发,数据库为Mysql5.0&…...
MAC电脑安装java开发工具
一、安装brew 1.1、官网地址 链接 1.2、更新地址 二、安装 java brew install openjdk11 三、安装gradle Gradle安装与配置教程 - 知乎 四、GIT 4.1、GIT安装 brew install git 4.2、rsa ssh-keygen -t rsa -C "jhestarbucks.com" 五、自动搭建一个springBoot…...
高压继电器,未来几年市场将保持稳定增长
高压继电器是一种用于控制大功率电气设备的开关装置,广泛应用于电力系统、轨道交通、工业自动化等领域。随着各行业对电气控制需求的不断增加,高压继电器市场也在不断扩大。全球高压继电器市场分析: 在全球市场中,目前主要的高压继…...
在Go语言中实现HTTP请求的缓存
大家好,我是你们可爱的编程小助手,今天我们要一起探讨如何使用Go语言实现HTTP请求的缓存。听起来是不是很酷?让我们开始吧! 首先,我们要明白什么是缓存。简单来说,缓存就是将数据存储在内存中,…...
技术扫盲:如何优雅的使用 java -jar
java -jar xxx.jar java -jar 是一个用于在命令行界面中执行 Java 可执行 JAR 文件的命令。它的语法如下: java -jar <JAR 文件路径> [参数]其中: java 是 Java 运行时环境的可执行文件。-jar 是一个选项,表示要执行的文件是一个 JA…...
『番外篇七』SwiftUI 获取视图全局位置在 NavigationStack 中失效的解决方法
概览 在 番外篇六』SwiftUI 取得任意视图全局位置的三种方法 这篇博文里,我们详细讨论了在 SwiftUI 中获取任意视图全局坐标的几种方法。 不过,我们也从中提到了某些方法无法适用于 NavigationStack 视图,本篇博文由此应运而生。 在本篇博文种,您将学到如下内容: 概览1.…...
GBASE南大通用 GCDW阿里云计算巢:自动化部署云原生数据仓库
目前,GBASE南大通用已与阿里云计算巢合作,双方融合各自技术优势,助力企业用户实现云上数据仓库的自动化部署,让用户在云端获取数据仓库服务“更简单”,让用户在云端使用数据仓库服务“更便捷”,满足企业用户…...
Docker实战02|Namespace
在上一文《Docker实战01|容器与开发语言》中主要介绍了Docker的基本概念与Docker安装、Go语言安装等实战技巧。 本文继续针对Namespace技术展开讲解并利用Go语言进行实践。 本系列所有代码均已经开源。关公众号回复「Go语言实现Docker」即可获得。 目录 2.1.2 U…...
01-03
利用模板类完成顺序表...
数据可视化与地理空间
写在开头 数据可视化是将数据以图形形式呈现,使其更易于理解和分析的过程。在地理空间分析中,数据可视化不仅能够展示地理位置信息,还能够有效地传达地理空间数据的模式、趋势和关联。本文将探讨数据可视化在地理空间分析中的作用,介绍Python中常用的数据可视化工具,并深…...
【elfboard linux开发板】4. 文件点灯与创建多进程
ps:提升效率的小tips: 灵活运用vim操作命令,gg快速跳转到文件开头,G跳转到结尾 多行操作 ctrl V shift i 插入修改内容 esc退出编辑 sudo vi /etc/vim/vimrc 在文件中添加如下内容省略重复工作: autocmd BufNewFile …...
黑马程序员SSM框架-Maven进阶
视频链接:Maven-01-分模块开发的意义_哔哩哔哩_bilibili 分模块开发与设计 分模块开发意义 分模块开发 依赖管理 依赖传递 依赖传递冲突问题 可以点击红框按钮查看依赖情况。 可选依赖和排除依赖 继承和聚合 聚合 聚合工程开发 继承 聚合和继承的区别 属性 属性…...
MFC综合实验二学习记录
文章目录 虚函数和纯虚函数的区别?MFC中什么是UPDATE_COMMAND_UI 消息如何查看控件对应的成员变量模态对话框的理解HGDIOBJ" 类型的值不能用于初始化 "CBrush *" 类型的实体错误MFC编程中CDC类型和HDC类型有什么区别?关于WIDING和ALTERNA…...
Python 中的运算符介绍(1)
算数运算符 常见的% 、//、/ 用法 赋值运算符 赋值运算:将等号右边赋值给等号左边 常见场景: 比较运算符 代码解析: 逻辑运算符 位运算符(了解) 三目运算符 身份证运算符 成员运算符...
达梦数据库查询各表数据量/以及达梦更新统计信息
1、达梦数据库查询各表数据量 达梦数据库与开源的MySQL不一样,MySQL查询各表数据量非常简单 而达梦数据库就有一些地方要注意,先用这句去查↓ SELECT table_name, num_rows FROM all_tables WHERE tablespace_name 表空间名; 如果结果如下图一样&…...
Java---- 静态内部类与非静态内部类的区别
在面试中回答的很不全,所以再此做一个总结。 1 static 静态修饰符 在程序中任何变量或者代码都是在编译时由系统自动分配内存来存储的。 static修饰表示静态的,在类加载时JVM会把它放到方法区,被本类以及本类中所有实例所公用。在编译后所分…...
SpringBoot-17-MyBatis动态SQL标签之常用标签
文章目录 1 代码1.1 实体User.java1.2 接口UserMapper.java1.3 映射UserMapper.xml1.3.1 标签if1.3.2 标签if和where1.3.3 标签choose和when和otherwise1.4 UserController.java2 常用动态SQL标签2.1 标签set2.1.1 UserMapper.java2.1.2 UserMapper.xml2.1.3 UserController.ja…...
深入浅出Asp.Net Core MVC应用开发系列-AspNetCore中的日志记录
ASP.NET Core 是一个跨平台的开源框架,用于在 Windows、macOS 或 Linux 上生成基于云的新式 Web 应用。 ASP.NET Core 中的日志记录 .NET 通过 ILogger API 支持高性能结构化日志记录,以帮助监视应用程序行为和诊断问题。 可以通过配置不同的记录提供程…...
Linux链表操作全解析
Linux C语言链表深度解析与实战技巧 一、链表基础概念与内核链表优势1.1 为什么使用链表?1.2 Linux 内核链表与用户态链表的区别 二、内核链表结构与宏解析常用宏/函数 三、内核链表的优点四、用户态链表示例五、双向循环链表在内核中的实现优势5.1 插入效率5.2 安全…...
【项目实战】通过多模态+LangGraph实现PPT生成助手
PPT自动生成系统 基于LangGraph的PPT自动生成系统,可以将Markdown文档自动转换为PPT演示文稿。 功能特点 Markdown解析:自动解析Markdown文档结构PPT模板分析:分析PPT模板的布局和风格智能布局决策:匹配内容与合适的PPT布局自动…...
EtherNet/IP转DeviceNet协议网关详解
一,设备主要功能 疆鸿智能JH-DVN-EIP本产品是自主研发的一款EtherNet/IP从站功能的通讯网关。该产品主要功能是连接DeviceNet总线和EtherNet/IP网络,本网关连接到EtherNet/IP总线中做为从站使用,连接到DeviceNet总线中做为从站使用。 在自动…...
Java面试专项一-准备篇
一、企业简历筛选规则 一般企业的简历筛选流程:首先由HR先筛选一部分简历后,在将简历给到对应的项目负责人后再进行下一步的操作。 HR如何筛选简历 例如:Boss直聘(招聘方平台) 直接按照条件进行筛选 例如:…...
Python Einops库:深度学习中的张量操作革命
Einops(爱因斯坦操作库)就像给张量操作戴上了一副"语义眼镜"——让你用人类能理解的方式告诉计算机如何操作多维数组。这个基于爱因斯坦求和约定的库,用类似自然语言的表达式替代了晦涩的API调用,彻底改变了深度学习工程…...
[大语言模型]在个人电脑上部署ollama 并进行管理,最后配置AI程序开发助手.
ollama官网: 下载 https://ollama.com/ 安装 查看可以使用的模型 https://ollama.com/search 例如 https://ollama.com/library/deepseek-r1/tags # deepseek-r1:7bollama pull deepseek-r1:7b改token数量为409622 16384 ollama命令说明 ollama serve #:…...
深入理解Optional:处理空指针异常
1. 使用Optional处理可能为空的集合 在Java开发中,集合判空是一个常见但容易出错的场景。传统方式虽然可行,但存在一些潜在问题: // 传统判空方式 if (!CollectionUtils.isEmpty(userInfoList)) {for (UserInfo userInfo : userInfoList) {…...
深度剖析 DeepSeek 开源模型部署与应用:策略、权衡与未来走向
在人工智能技术呈指数级发展的当下,大模型已然成为推动各行业变革的核心驱动力。DeepSeek 开源模型以其卓越的性能和灵活的开源特性,吸引了众多企业与开发者的目光。如何高效且合理地部署与运用 DeepSeek 模型,成为释放其巨大潜力的关键所在&…...
