当前位置: 首页 > news >正文

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 就格式化好了。

http://www.lryc.cn/news/272340.html

相关文章:

  • 4462 4.曙曙献爱心
  • 浅谈命令模式
  • 软件测试/测试开发丨Python 模块与包
  • java企业网站系统Myeclipse开发mysql数据库web结构java编程计算机网页项目
  • MAC电脑安装java开发工具
  • 高压继电器,未来几年市场将保持稳定增长
  • 在Go语言中实现HTTP请求的缓存
  • 技术扫盲:如何优雅的使用 java -jar
  • 『番外篇七』SwiftUI 获取视图全局位置在 NavigationStack 中失效的解决方法
  • GBASE南大通用 GCDW阿里云计算巢:自动化部署云原生数据仓库
  • Docker实战02|Namespace
  • 01-03
  • 数据可视化与地理空间
  • 【elfboard linux开发板】4. 文件点灯与创建多进程
  • 黑马程序员SSM框架-Maven进阶
  • MFC综合实验二学习记录
  • Python 中的运算符介绍(1)
  • 达梦数据库查询各表数据量/以及达梦更新统计信息
  • Java---- 静态内部类与非静态内部类的区别
  • STM32 基础知识(探索者开发板)--135讲 ADC转换
  • Java经典框架之SpringBoot
  • LeetCode75| 二叉搜索树
  • 博物馆3d虚拟场景复原制作有助于传承和弘扬中华民族优秀传统文化
  • 二维码地址门牌系统:便捷报修服务引领社区新篇章
  • c++基础(对c的扩展)
  • RS485数据采集模块,如何一次采集多个modbus设备数据?
  • 面试 Vue 框架八股文十问十答第一期
  • 【积微成著】性能测试调优实战与探索(存储模型优化+调用链路分析)| 京东物流技术团队
  • 建立分位制,用标准去量化优化效果 - 启动优化为例
  • Modbus 通信协议 二