QT入门第十天 QT安装和使用alsa库和jpeg库实现音视频录制_「QT(C++)开发工程师」的博客-程序员秘密

技术标签: alsa库  jpeg库  qt  音视频  Qt编程  QT 界面开发工程师课程  

第一章 ALSA库的移植和使用

1.ALSA简介

advance linux sound architecture --》高级linux声音架构,给程序员开发音频设备的驱动和应用程序提供了统一的接口
开发声卡的驱动
开发基于linux的音频编解码软件

2.移植ALSA

https://www.alsa-project.org/wiki/Main_Page //官方网站

(1)移植步骤

alsa-lib-1.0.22.tar.bz2 (alsa核心库源码)
alsa-utils-1.0.22.tar.bz2(音频实用例程源码)

第一步:交叉编译alsa-lib

./configure --prefix=/home/gec/xxx \  (此处是alsa库的安装路径,是要按照实际情况来改的)
--host=arm-linux \
--disable-python
make
make install

第二步:交叉编译alsa-utils

./configure --prefix=/home/gec/xxx \
--host=arm-linux \
--with-alsa-prefix=/home/gec/xxx/lib/ \
--with-alsa-inc-prefix=/home/gec/xxx/include/ \
--disable-alsamixer \
--disable-xmlto
make
make install

3.把移植好的库下载到开发板配置

第一步:将移植得到的库文件,头文件,可执行程序打包下载到开发板中

tar  -jcf  alsa.tar.bz2  alsadir   
//把alsadir目录所有的内容的打包到alsa.tar.bz2里面

第二步:把移植得到的bin目录中arecordaplay拷贝到开发板 /bin
第三步:把移植得到的lib目录中所有的文件拷贝到开发板/lib
第四步:把移植得到的share目录拷贝到开发板的** /home/gec/alsadir 目录下
注意,注意,注意share目录在开发板中的路径也必须跟当初你移植的时候ubuntu上的路径一致

4.使用移植好的ALSA工具

录音和播放

arecord -d3 -c1 -r16000 -twav -fS16_LE example.wav
说明:
-d:录音时长(duration)
-c:音轨(channels)
-r:采样频率(rate)
-t:封装格式(type)
-f:量化位数(format)16bit  小端
执行如下命令播放
 aplay  example.wav

5.ALSA快速安装教程

移植alsa库
         alsa-lib-1.0.22.tar.bz2  (alsa核心库源码)
         alsa-utils-1.0.22.tar.bz2(音频实用例程源码)

       第一步:交叉编译alsa-lib
           ./configure --prefix=/home/gec/xxx \  (此处是alsa库的安装路径,是要按照实际情况来改的)
                       --host=arm-linux \
                       --disable-python
            make
            make install
       第二步:交叉编译alsa-utils
          ./configure --prefix=/home/gec/xxx \
                      --host=arm-linux \
                      --with-alsa-prefix=/home/gec/xxx/lib/ \
                      --with-alsa-inc-prefix=/home/gec/xxx/include/ \
                      --disable-alsamixer \
                      --disable-xmlto
            make
            make install

第二章 libjpeg移植

1.安装和使用步骤

(1)第一步: ./configure --prefix=/home/gec/jpeg/arm-jpeg  CC=arm-linux-gcc --host=arm-linux --enable-shared --enable-static
(2)第二步:make && make install

2.动态库

在这里插入图片描述

3.alsa库文件和jpeg库文件自取

在这里插入图片描述
链接:https://pan.baidu.com/s/1NiNXNtsZBKeaXbCPNVVm8g?pwd=ncl2
提取码:ncl2
在这里插入图片描述

第四章 往期内容回顾

第一期 QT上位机安装与新建项目教程

第二期 QT平台使用规则和代码逻辑学习

第三期 QT中信号与槽和字符串QString的使用

第四期 QT组件布局管理器和多界面传参跳转

第五期 QT消息盒子-对话框-定时器-日期和时间

第六期 QTmplayer视频播放器+列表框+交叉编译QT程序+QT控制硬件+多进程

第七期 QTwindows打包QT工程+多线程QThread+菜单栏+打包QT程序

第八期 QT网络编程TCP/IP/UDP+Http和JSON解析+qt事件软键盘

第九期 QT音视频Linux中的V4L2摄像头编程

第十期 QT容器及摄像头配合多线程、定时器显示jpeg图片

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/m0_45463480/article/details/124085401

智能推荐

git配置user.name和user.email_angulaer的博客-程序员秘密

github在统计提交的时候,会判断邮箱是否跟github的登陆邮箱匹配,不匹配则不计算活跃度,即不生成小绿块。查看配置git config user.emailgit config user.name设置当前仓库的user.name/user.emailgit config user.email yourEmailNamegit config user.name yourName设置全局user.name/user.emailgit config --global use.

Linux内核模块的概念和基本的编程方法_bugouyonggan的博客-程序员秘密

Linux设备驱动会以内核模块的形式出现,因此,学会编写Linux内核模块编程是学习Linux设备驱动的先决条件。4.1~4.2节讲解了Linux内核模块的概念和结构,4.3~4.8节对Linux内核模块的各个组成部分进行了展现,4.1~4.2与4.3~4.8节是整体与部分的关系。4.9节说明了独立存在的Linux内核模块的Makefile文件编写方法和模块的编译方法。4.1 Linu

javascript localstorage缓存_鱼非火的博客-程序员秘密

//// 输入浏览器中的localstorage// var storage=function () {// if(!window.localStorage){// alert("浏览器支持localstorage");// }else{// var storage=window.localStorage

FALSE 与 false的区别_cg_master的博客-程序员秘密

 在C++中BOOL,TRUE,FALSE   和   bool   ,true,   false     两组都可以用     原因  在以前的C++标准中,没有定义”bool”类型,因此,Microsoft         使用了类型定义,定义了”bool”类型:         typedef   int           BOOL;         #define   FALSE    

面试官:说说为什么自定义view的wrap_content会失效?_自定义view wrap_content_只有小松了的博客-程序员秘密

如果你不了解View,那就说明你没有真正入门android无论是TextView小控件,还是LineLayout这种大容器,都是View演化而来,TextView也继承自Viewpublic class TextView extends View implements ViewTreeObserver.OnPreDrawListener {}LineLayout这类布局控件特殊一点,来自ViewGroup,而ViewGroup继承自Viewpublic class RelativeLayout e

UVA 10635 Prince and Princess【LCS 问题转换为 LIS】_An55511的博客-程序员秘密

题目链接:http://acm.hust.edu.cn/vjudge/problem/visitOriginUrl.action?id=19051题意:有两个长度分别为p+1和q+1的由1到n2之前的整数组成的序列,每个序列的元素各不相等,两个序列第一个元素均为1。求两个序列的最长公共子序列。分析:LCS的复杂度为O(p∗q),这题p,q最...

随便推点

Unity WWW下载文件压缩_lee_鹿游原的博客-程序员秘密

1.后端配置nginx 开启 gzip访问规则2.前端配置WWW www = new WWW (Url); www类封装了针对不同平台不同的方法实现。会在ios和android自动添加header,gzip其实前端不需要做任何事情,nginx开启gzip即可。3.插件推荐BestHttp 5星推荐!支持Http , Websocket等协议。...

使用 Microsoft JDBC Driver for SQL Server 连接到SQL Server的5种方式_物恋心语的博客-程序员秘密

最近在学习java,可是在与数据库建立连接这块儿老出错。因此,在阅读JDBC官方帮助文档时,看到一些非常有用的资料,真有一点“柳暗花明又一村”的味道。希望能将自己的总结记录下来,分享给大家,共同努力,一起学习。       步入正题,下面介绍使用 Microsoft JDBC Driver for SQL Server 连接到SQL Server的几种方式,以及其实例。1、使用Driver

FPGA设计-时序约束(上篇,理论篇)_fpga时序约束_禾刀围玉的博客-程序员秘密

最近都在做ARM的方面学习工作,感觉有必要记录下来之前FPGA的工作,好记性也不如烂笔头;说起FPGA,断断续续的也用过4,5年了,中间接触过DSP,就是因为没有记录文档资料,目前几乎快忘光了;FPGA方面的心得,将会由以下几个方面进行总结:1.FPGA时序约束以及高速ADC约束实例2.TDC进位延时链设计以及研究3.TDC的精度以及自动校正算法的实现STA:S

java根据空格截取字符串、正则表达式判断邮箱格式以及去掉重复值代码_渴望飞的鱼的博客-程序员秘密

java根据空格截取字符串、用一个空格替换多个空格例子、正则表达式去掉重复值、正则表达式判断邮箱格式

【JUC】公平锁,非公平锁源码分析_防不胜防吗的博客-程序员秘密

其中有一些值的概念不太清楚,参考了:https://blog.csdn.net/lsgqjh/article/details/63685058https://blog.csdn.net/mulinsen77/article/details/84583716在此感谢!LockLock接口功能:public interface Lock { // 获得锁 void lock();...

github + hexo 小白超快搭建功能强大的个人博客网站(1)_小牛呼噜噜的博客-程序员秘密

文章目录1. 一些必备软件1.1 github 账户1.2 下载nodejs2 按照Hexo3. 将hexo本地博客 推送到github 仓库里1. 一些必备软件1.1 github 账户如果没有到话,首先去github官网去注册一个账户(有的话,相信你懂这个网站,这部分你可以跳过)按部就班地填写信息即可,用户名别乱起,以后改起来麻烦,后面还要拿用户名当域名,当然你们开心就好接着创建Repository登陆GitHub,点击右上角的 +号,选择New repositoryReposito

推荐文章

热门文章

相关标签