Linux音频采集和在国产化平台中遇到的坑(一) 最近在做一个国产化平台的软件项目的开发,是基于国产芯片的银河麒麟系统。...很多人都觉得银河麒麟不就是linux么,那不直接用ALSA就好了,我原本也是这么想的,但是实际开发下来才发现,还是有各种坑需要自己去趟的。这里我简单记录一下。...虽然都是linux,芯片也是基于同样的架构,同样的指令集,但是考虑到芯片的实现毕竟是不同的,于是所有涉及到硬件交互的软件部分,也会有所差异,最终会导致了有些应用层面的接口,不能按照普通linux的通常用法去使用...linux ALSA音频采集 首先,银河麒麟既然是linux系统,那首先考虑到的是通过ALSA(Advanced Linux Sound Architecture)来进行采集,ALSA是linux的默认声卡驱动...: 实际读取的音频帧个数,小于0表示错误 */ int snd_pcm_prepare( snd_pcm_t *handle ); 接口简单,参数也少,所以使用起来很方便,基本上是linux下采集和播放的第一选择
Linux音频采集和在国产化平台中遇到的坑(一) 最近在做一个国产化平台的软件项目的开发,是基于国产芯片的银河麒麟系统。...虽然都是linux,芯片也是基于同样的架构,同样的指令集,但是考虑到芯片的实现毕竟是不同的,于是所有涉及到硬件交互的软件部分,也会有所差异,最终会导致了有些应用层面的接口,不能按照普通linux的通常用法去使用...linux ALSA音频采集 首先,银河麒麟既然是linux系统,那首先考虑到的是通过ALSA(Advanced Linux Sound Architecture)来进行采集,ALSA是linux的默认声卡驱动...: 实际读取的音频帧个数,小于0表示错误 */ int snd_pcm_prepare( snd_pcm_t *handle ); 接口简单,参数也少,所以使用起来很方便,基本上是linux下采集和播放的第一选择...在国产化芯片平台上出现的问题 在普通Linux下,这样写下来,就可以实现想要的音频采集功能了,后面对数据做进一步的规整和编码就可以发送了。
是不是没什么新意,不过一直使用ffmpeg程序,还没有用ffmpeg代码接口实现播放器,并且还需要使用linux的alsa接口播放出声音,所以做出来还是觉得有点意思; ---- 需求:实现一个嵌入式linux...上支持mp3/aac/wav文件的播放器 实现:所以考虑基于ffmpeg 实现一个嵌入式linux的播放器,这里主要应用ffmpeg的协议处理和音频解码能力,虽然网上的代码很多,不过由于版本的差异,例子程序接口存在差异... arm) # set compiler set(CMAKE_C_COMPILER arm-openwrt-linux-gnueabi-gcc) set(CMAKE_CXX_COMPILER arm-openwrt-linux-gnueabi-g.../configure --host=arm-openwrt-linux-gnueabi --prefix=${PWD}/build/ ..../configure --target-os=linux --prefix=/home/lyz/work/broadcast_app/app_linux/thirds_libs_src/ffmpeg-4.1.9
在ubuntu系统上安装alsa-lib库方法: sudo apt-get install libasound2-dev 如果是在其他发行版linux系统上或者需要在嵌入式linux系统上使用alsa-lib...wbyq@wbyq:/mnt/hgfs/linux-share-dir/linux_c/linux_pcm_save$ arecord -L default Playback/recording...*/ signal(2,exit_sighandler); /*PCM的采样格式在pcm.h文件里有定义*/ snd_pcm_format_t format=SND_PCM_FORMAT_S16..., argv[1],SND_PCM_STREAM_CAPTURE,0))<0) { printf("无法打开音频设备: %s (%s)\n", argv[1],snd_strerror (err.../*关闭文件流*/ fclose(pcm_data_file); return 0; } 编译方法: gcc linux_pcm_save.c -lasound 运行方法: .
数字音频涉及到的概念非常多,对于在Linux下进行音频编程的程序员来说,最重要的是7406解声音数字化的两个关键步骤:采样和量化。...8.2 ALSA架构 ALSA全称是Advanced Linux Sound Architecture,中文音译是Linux高级声音体系。...ALSA 是Linux内核2.6后续版本中支持音频系统的标准接口程序,由ALSA库、内核驱动和相关测 试开发工具组成,更好的管理Linux中音频系统。 本小节将介绍ALSA的架构。...tar -xvf alsa-lib-1.0.27.2.tar.bz2 cd alsa-lib-1.0.27.2 CC=arm-none-linux-gnueabi-gcc ....在LINUX系统中,每个设备文件都是文件。
* */ #include #include #include #include..., struct snd_pcm_hw_params *params, struct snd_soc_dai *dai){ pr_debug("%s ....struct of_device_id bt_sco_codec_of_match[] = { { .compatible = "delta,dfbmcs320", }, { .compatible = "linux...需要在内核开启如下配置才能使用: Device Drivers ---> Sound card support ---> Advanced Linux Sound Architecture...sound-dai-cells = ; status = "okay"; }; &bt_sco { #sound-dai-cells = ; compatible = "linux
一、环境介绍 宿主机: Redhat6.3 (32位Linux系统) 目标开发板: 友善之臂Tiny4412 ---三星EXYNOS4412 交叉编译器: arm-linux-gcc 4.5.1 Linux...内核: Linux3.5 二、下载alsa-lib库 项目主页下载地址:https://www.alsa-project.org/wiki/Main_Page FTP服务器下载地址(可下载历史版本):...[wbyq@wbyq work]$ tar xvf /mnt/hgfs/linux-share-dir/alsa-lib-1.2.3.2.tar.bz2 [wbyq@wbyq work]$ cd alsa-lib.../configure --host=arm-linux --prefix=$PWD/_install --enable-shared [wbyq@wbyq alsa-lib-1.2.3.2]$ make...4.2 编译代码的Makefile文件 app: arm-linux-gcc linux_pcm_save.c -o app -lasound -I/home/wbyq/work/alsa-lib-1.2.3.2
Linux 自带的耳机拔插检测驱动是混在声卡驱动中,耳机拔插状态通过 input 子系统上报。...); 80 } 81 EXPORT_SYMBOL_GPL(snd_soc_card_jack_new); 137 int snd_soc_jack_add_pins(struct snd_soc_jack...} 78 EXPORT_SYMBOL_GPL(snd_soc_jack_report); 652 void snd_jack_report(struct snd_jack *jack, int...若你要使用 Linux 自带的耳机拔插检测驱动,则需要在对应的声卡驱动的 dts 节点中声明你所使用的 GPIO 口,加载时就会自动帮你配置好检测逻辑。...Linux 自带的耳机拔插检测功能有限,大部分平台都有自己的耳机检测逻辑,例如 RK 平台的耳机检测在这: kernel/drivers/headset_observe/rockchip_headset_core.c
(6)系统稳定性与扩展性:基于嵌入式Linux系统的开发框架,保证了系统的稳定性和可靠性。同时,开放式的架构设计使得系统易于扩展和升级,能够随时集成新的功能模块和服务,满足用户不断增长的需求。...主控开发板选用GEC6818开发板,其高性能的处理器和嵌入式Linux系统为系统的稳定运行提供了有力支持。GPS模块选用北斗GPS模块,以确保定位的准确性和稳定性。...基于嵌入式Linux系统开发,具备高度的稳定性和可靠性。 扩展性 系统设计易于扩展和升级,适应未来需求变化。 开放的架构设计,支持新功能模块和服务的集成。...1.4 原理图 二、Linux下Qt开发环境搭建 养老院出行管理系统项目是在Linux下开发,接下来需要搭建Linux下的开发环境。...3.2 导航提示音播放 使用alsa-lib库在Linux下调用声卡驱动来播放声音。
项目介绍 项目Github地址:https://github.com/alsa-project/alsa-lib ALSA(Advanced Linux Sound Architecture)是Linux...snd_mixer_close(handle); return 1; } // 获取默认音频元素 snd_mixer_selem_id_t *...sid; snd_mixer_selem_id_alloca(&sid); snd_mixer_selem_id_set_index(sid, 0); snd_mixer_selem_id_set_name...(sid, "Master"); snd_mixer_elem_t* elem = snd_mixer_find_selem(handle, sid); if (!...*pcm; if (snd_pcm_open(&pcm, "default", SND_PCM_STREAM_PLAYBACK, 0) < 0) { printf("无法打开音频设备
概述 在上节Linux音频驱动-ALSA概述中介绍了整个ALSA的构成,接口以及函数入口的分析。 本节将从声卡的创建开始,也就是card的创建。...在linux系统中使用struct snd_card结构代表一个card。..., struct snd_card **card_ret) { struct snd_card *card; int err; if (snd_BUG_ON(!...snd_BUG_ON(!...int snd_card_register(struct snd_card *card) { int err; if (snd_BUG_ON(!
文章目录 一、安装内核模块 二、安装内核 三、重启系统 四、查看当前内核版本 一、安装内核模块 ---- 确保 Linux 内核编译完成 , 没有任何报错之后 ; 参考 【Linux 内核】编译 Linux...:~/kernel/linux-5.6.14# root@ubuntu:~/kernel/linux-5.6.14# root@ubuntu:~/kernel/linux-5.6.14# ls arch...INSTALL sound/usb/line6/snd-usb-variax.ko INSTALL sound/usb/misc/snd-ua101.ko INSTALL sound/usb.../snd-usb-audio.ko INSTALL sound/usb/snd-usbmidi-lib.ko INSTALL sound/usb/usx2y/snd-usb-us122l.ko...INSTALL sound/usb/usx2y/snd-usb-usx2y.ko INSTALL sound/x86/snd-hdmi-lpe-audio.ko INSTALL virt/lib
来自Linus Torvalds的讨论: https://groups.google.com/group/linux.kernel/browse_thread/thread/b70bffe9015a8c41.../ed9c0a0cfcd31111 又,http://kerneltrap.org/Linux/Further_Oops_Insights 例如这样的一个Oops: ...gameport snd_rawmidi snd_ac97_codec ac97_bus snd_seq_dummy snd_seq_oss snd_seq_midi_event snd_seq snd_seq_device...snd_pcm_oss snd_mixer_oss snd_pcm snd_timer snd parport_pc floppy parport pcnet32 soundcore mii pcspkr...This GDB was configured as "x86_64-redhat-linux-gnu"...
首先查看一下当前使用的linux版本: gxjun@gxjun:~$ uname -r 4.8.0-59-generic 2....snd_hda_codec_generic mei_me mei snd_hda_intel snd_hda_codec tpm_infineon acpi_als irqbypass crct10dif_pclmul...crc32_pclmul ghash_clmulni_intel aesni_intel snd_hda_core snd_hwdep snd_pcm intel_lpss_acpi [ 84.703560...] intel_lpss kfifo_buf snd_seq_midi snd_seq_midi_event snd_rawmidi snd_seq aes_x86_64 lrw glue_helper...ablk_helper snd_seq_device cryptd snd_timer snd industrialio soundcore acpi_pad serio_raw shpchp mac_hid
/* 进行音频采集,采集pcm数据并直接保存pcm数据 音频参数: 声道数: 1 采样位数: 16bit、LE格式 采样频率: 44100Hz 运行示例: $ gcc linux_pcm_save.c..._LE //指定音频的格式,其他常用格式:SND_PCM_FORMAT_U24_LE、SND_PCM_FORMAT_U32_LE #define AUDIO_CHANNEL_SET 1...输入流 if ((err = snd_pcm_open (&capture_handle, argv[1],SND_PCM_STREAM_CAPTURE,0))<0) { printf("...*/ if((err = snd_pcm_hw_params_set_access (capture_handle,hw_params,SND_PCM_ACCESS_RW_INTERLEAVED)).../* 进行音频采集,读取存放pcm数据的文件通过声卡进行播放 音频参数: 声道数: 1 采样位数: 16bit、LE格式 采样频率: 44100Hz 运行示例: $ gcc linux_pcm_save.c
Linux操作系统的核心具有模块化的特性,应此在编译核心时,务须把全部的功能都放入核心。您可以将这些功能编译成一个个单独的模块,待需要时再分别载入。...11073 1 snd_seq_oss snd_seq 49585 5 snd_seq_dummy,snd_seq_oss,snd_seq_midi_event...snd_seq_device 11725 3 snd_seq_dummy,snd_seq_oss,snd_seq snd_pcm_oss 42817 0 snd_mixer_oss...19009 1 snd_pcm_oss snd_pcm 72517 2 snd_hda_intel,snd_pcm_oss ide_cd...57797 9 snd_hda_intel,snd_seq_oss,snd_seq,snd_seq_device,snd_pcm_oss,snd_mixer_oss
ALSA目前已经成为了Linux的主流音频体系结构。...-4.4/sound/soc/soc-utils.c // snd-soc-dummmy驱动,可用于daudio codec模型 linux-4.4/sound/soc/codecs/ac108.c /...2.20.2 代码结构 linux-4.9/sound/soc/sunxi_v2/ ├── snd_sun8iw21_codec.c // codec驱动 ├── snd_sun8iw21_codec.h...snd_pcm_hw_params snd_pcm_sw_params_current snd_pcm_sw_params snd_pcm_readi snd_pcm_writei snd_pcm_close...snd_pcm_hw_params snd_pcm_sw_params_current snd_pcm_sw_params snd_pcm_readi snd_pcm_writei snd_pcm_close
在Linux中,先后出现了音频设备的两种框架OSS和ALSA 1 OSS(Open Sound System)是unix平台上一个统一的音频接口。.../app music"); exit(1); } snd_pcm_hw_params_t *myparams; snd_pcm_t *mydevice;...snd_pcm_uframes_t frame = 200; int fd = snd_pcm_open(&mydevice,"default",0,0); if(fd < 0){...//设置交互模式 snd_pcm_hw_params_set_access(mydevice,myparams,SND_PCM_ACCESS_MMAP_INTERLEAVED); //设置采样周期.../app music\n"); exit(1); } snd_pcm_hw_params_t *myparams; snd_pcm_t *mydevice;
数字音频涉及到的概念非常多,对于在Linux下进行音频编程的程序员来说,最重要的是7406解声音数字化的两个关键步骤:采样和量化。...8.2 ALSA架构 ALSA全称是Advanced Linux Sound Architecture,中文音译是Linux高级声音体系。...ALSA 是Linux内核2.6后续版本中支持音频系统的标准接口程序,由ALSA库、内核驱动和相关测 试开发工具组成,更好的管理Linux中音频系统。 本小节将介绍ALSA的架构。...tar -xvf alsa-lib-1.0.27.2.tar.bz2 cd alsa-lib-1.0.27.2 CC=arm-none-linux-gnueabi-gcc ....* | Mixer handle | | 3 | element_handle | snd_mixer_elem_t* | Mixer element handle |
在linux系统中使用snd_pcm结构表示一个pcm设备。...linux系统中使用snd_pcm_str定义stream, 使用snd_pcm_substream定义substream。....substream: 该stream下的substream. struct snd_pcm_substream { struct snd_pcm *pcm; struct snd_pcm_str...= snd_pcm_dev_disconnect, }; if (snd_BUG_ON(!...用次设备号为下标,将当前申请的snd_minor放入到全局的snd_minors结构体数组中。
领取专属 10元无门槛券
手把手带您无忧上云