jjzjj

c++ - ALSA:如何判断声音何时播放完毕

我有一个接受声音请求并使用ALSA播放它们的C++对象。有处理声音请求的线程。有些声音是周期性的,在wav文件内容写入ALSA库后重新安排。有什么办法可以知道所有数据都播放完了吗?函数snd_pcm_writei是阻塞写函数,但并不一定代表文件已经播放。我正在考虑的一个选项是在播放每个声音文件后调用snd_pcm_drain,然后在播放下一个文件时调用snd_pcm_prepare。这是一个好的解决方案吗?或者这是低效的?更新:“排空解决方案”似乎有效,但效率不高。调用需要一段时间才能返回(可能会清理一些资源)并增加程序的延迟。当我连续播放许多小文件时,延迟最明显。每个文件之间可以听到

c++ - 使用 ALSA 库的音频捕获 - snd_pcm_open => No such file or directory

我正在尝试使用ALSA库在SoC上实现音频捕获。我有一个预编译的libasound.so.2.0.0和一个asoundlib.h以及其他header。现在我有intreturnCode;snd_pcm_t*pcm_Handle;char*pcm_device_name="hw:0,0";returnCode=snd_pcm_open(&pcm_Handle,pcm_device_name,SND_PCM_STREAM_CAPTURE,0);返回snd_strerror(returnCode)的Nosuchfileordirectory这是否表示捕获设备未正确安装(例如驱动程序或其他东西

c++ - Qt5 是否支持通过 ALSA 播放音频?

我有一个小型C++Qt程序,它使用QAudioOutput实例来发出声音。它使用Qt4.8.5编译和运行良好。但是,在Qt5.0、5.1和5.2中,我的应用程序可以编译,但无法运行。当QAudioOutput实例的构造函数运行时,我收到以下错误消息:无法创建到pulseaudio上下文的连接。另外,构造函数没有返回,所以我的程序挂了。我没有运行pulseaudio。ALSA工作正常,这是我的程序在使用Qt4.8.5编译时使用的。查看Qt5的“plugins/audio”目录,只有“libqtmedia_pulse.so”,从名字可以看出它依赖于pulseaudio。我的问题:在Qt5+

android - 在 Android 自定义 ROM 中修改通话中的语音播放

我想修改Android操作系统(来自AOSP的官方图片),为正常的电话播放声音添加预处理。我已经为应用音频播放实现了这种过滤(通过修改HAL和audioflinger)。我可以只定位特定设备(Nexus5X)。另外,我只需要过滤播放-我不关心录制(上行)。更新#1:说清楚-我可以修改Qualcomm特定的驱动程序,或者在Nexus5X上运行的任何部分,并且可以帮助我修改通话中的播放。更新#2:我正在尝试创建一个Java层应用程序,将手机播放实时路由到音乐流。我已经成功地将它安装为系统应用程序,获得了使用AudioSource.VOICE_DOWNLINK初始化AudioRecord的权

android - 在 Android 自定义 ROM 中修改通话中的语音播放

我想修改Android操作系统(来自AOSP的官方图片),为正常的电话播放声音添加预处理。我已经为应用音频播放实现了这种过滤(通过修改HAL和audioflinger)。我可以只定位特定设备(Nexus5X)。另外,我只需要过滤播放-我不关心录制(上行)。更新#1:说清楚-我可以修改Qualcomm特定的驱动程序,或者在Nexus5X上运行的任何部分,并且可以帮助我修改通话中的播放。更新#2:我正在尝试创建一个Java层应用程序,将手机播放实时路由到音乐流。我已经成功地将它安装为系统应用程序,获得了使用AudioSource.VOICE_DOWNLINK初始化AudioRecord的权

audio - 如何在 Mac OS Yosemite 上的 Docker 容器中播放声音

我正在尝试将文本转语音应用程序docker化以与其他开发人员共享代码,但是我现在遇到的问题是docker容器在我的主机上找不到声卡。当我尝试在我的docker容器中播放wav文件时root@3e9ef1e869ea:/#aplayAlesis-Fusion-Acoustic-Bass-C2.wavALSAlibconfmisc.c:768:(parse_card)cannotfindcard'0'ALSAlibconf.c:4259:(_snd_config_evaluate)functionsnd_func_card_driverreturnederror:Nosuchfileord

audio - 如何在 Mac OS Yosemite 上的 Docker 容器中播放声音

我正在尝试将文本转语音应用程序docker化以与其他开发人员共享代码,但是我现在遇到的问题是docker容器在我的主机上找不到声卡。当我尝试在我的docker容器中播放wav文件时root@3e9ef1e869ea:/#aplayAlesis-Fusion-Acoustic-Bass-C2.wavALSAlibconfmisc.c:768:(parse_card)cannotfindcard'0'ALSAlibconf.c:4259:(_snd_config_evaluate)functionsnd_func_card_driverreturnederror:Nosuchfileord

qt - 在 docker 容器中使用音频运行应用程序

这个问题的灵感来自CanyourunGUIappsinadockercontainer?.基本思想是运行带有音频和用户界面的应用程序(vlc、firefox、skype...)我正在使用pulseaudio搜索docker容器,但我找到的所有容器都在tcp上使用pulseaudio流式传输。(应用程序的安全沙盒)https://gist.github.com/hybris42/ce429de428e5af3a344ahttps://github.com/jlund/docker-chrome-pulseaudiohttps://github.com/tomparys/docker-sk

qt - 在 docker 容器中使用音频运行应用程序

这个问题的灵感来自CanyourunGUIappsinadockercontainer?.基本思想是运行带有音频和用户界面的应用程序(vlc、firefox、skype...)我正在使用pulseaudio搜索docker容器,但我找到的所有容器都在tcp上使用pulseaudio流式传输。(应用程序的安全沙盒)https://gist.github.com/hybris42/ce429de428e5af3a344ahttps://github.com/jlund/docker-chrome-pulseaudiohttps://github.com/tomparys/docker-sk

linux - alsa - 内存泄漏?

我一直在追踪内存泄漏(由“valgrind--leak-check=yes”报告),它似乎来自ALSA。这段代码已经在自由世界中发布了一段时间,所以我猜这是我做错了什么。#include#include#includeintmain(intargc,char*argv[]){snd_ctl_t*handle;interr=snd_ctl_open(&handle,"hw:1",0);printf("snd_ctl_open:%d\n",err);err=snd_ctl_close(handle);printf("snd_ctl_close:%d\n",err);}输出看起来像这样:[r