标签: alsa

如何管道/ dev/urandom到linux声音输出?

这似乎根本不起作用:

cat /dev/urandom > /dev/dsp    #from wikipedia.org
Run Code Online (Sandbox Code Playgroud)

是因为pulseaudio?或者我需要做一些设置?

linux alsa pulseaudio

22
推荐指数
2
解决办法
2万
查看次数

ALSA配置如何在asound.conf中组合MMAP仿真和Ladspa插件

我使用rpi dac在Raspberry Pi计算模块(Linux)上有一个工作的PCM输出和良好的声音.'aplay -l'命令输出显示以下内容:

>> aplay -l
**** List of PLAYBACK Hardware Devices ****
card 0: sndrpirpidac [snd_rpi_rpi_dac], device 0: RPi-DAC HiFi pcm1794a-hifi-0 []
Subdevices: 1/1
Subdevice #0: subdevice #0
card 1: ALSA [bcm2835 ALSA], device 0: bcm2835 ALSA [bcm2835 ALSA]
Subdevices: 8/8
Subdevice #0: subdevice #0
Subdevice #1: subdevice #1
Subdevice #2: subdevice #2
Subdevice #3: subdevice #3
Subdevice #4: subdevice #4
Subdevice #5: subdevice #5
Subdevice #6: subdevice #6
Subdevice #7: subdevice #7
card 1: ALSA [bcm2835 ALSA], …
Run Code Online (Sandbox Code Playgroud)

linux alsa tinyalsa libasound libalsa

19
推荐指数
1
解决办法
1116
查看次数

ALSA期间的含义

我在Linux上使用ALSA和音频应用程序,我发现很棒的文档解释了如何使用它: 1这一个.虽然我有一些问题需要理解这部分设置:

 /* Set number of periods. Periods used to be called fragments. */ 
if (snd_pcm_hw_params_set_periods(pcm_handle, hwparams, periods, 0) < 0) {
  fprintf(stderr, "Error setting periods.\n");
  return(-1);
}
Run Code Online (Sandbox Code Playgroud)

什么意思是设置我使用PLAYBACK模式时的一段时间,并且:

/* Set buffer size (in frames). The resulting latency is given by */
/* latency = periodsize * periods / (rate * bytes_per_frame)     */
if (snd_pcm_hw_params_set_buffer_size(pcm_handle, hwparams, (periodsize * periods)>>2) < 0) {
  fprintf(stderr, "Error setting buffersize.\n");
  return(-1);
}
Run Code Online (Sandbox Code Playgroud)

这里有关于延迟的相同问题,我该如何理解?

c linux audio alsa

17
推荐指数
2
解决办法
2万
查看次数

重定向音频/在Android中创建备用声音路径

有没有人有经验(使用OpenSL ES,ALSA等)在Android中重定向音频或创建新的声音路径?最终目标是创建一个虚拟麦克风来替换外部麦克风,在那里可以播放音频文件,就好像他们正在对着麦克风讲话一样.访问麦克风的应用程序AudioSource.MIC应使用此备用流.它没有必要使用语音呼叫,我相信实现这种功能更难,因为它都是在无线电中完成的.

关于从哪里开始的任何想法?我已经用OpenSL和ALSA做了一些研究,但看起来我需要打包新固件(ROM)才能定义自定义音频路径.如果可以避免,我想创建一个应用程序级解决方案.电话是"扎根"(有su二进制文件).目标设备是三星Galaxy S4谷歌版(GT-i9505G).具体来说,我正在寻找音频驱动程序配置/源代码或i9505G的任何参考.

提前致谢!

编辑 - 我已经检查了CyanogenMod 10.2源代码树,以及jfltexx驱动程序和内核.以下是kernel/samsung/jf/sound的内容:http://pastebin.com/7vK8THcZ.这记录在哪里?

audio android alsa opensl

15
推荐指数
1
解决办法
2万
查看次数

如何在docker容器中播放声音

我正在尝试将文本到语音应用程序停靠,以便与其他开发人员共享代码,但是我现在遇到的问题是docker容器无法在我的主机上找到声卡.

当我尝试在我的docker容器中播放wav文件时

root@3e9ef1e869ea:/# aplay Alesis-Fusion-Acoustic-Bass-C2.wav
ALSA lib confmisc.c:768:(parse_card) cannot find card '0'
ALSA lib conf.c:4259:(_snd_config_evaluate) function snd_func_card_driver returned error: No such file or directory
ALSA lib confmisc.c:392:(snd_func_concat) error evaluating strings
ALSA lib conf.c:4259:(_snd_config_evaluate) function snd_func_concat returned error: No such file or directory
ALSA lib confmisc.c:1251:(snd_func_refer) error evaluating name
ALSA lib conf.c:4259:(_snd_config_evaluate) function snd_func_refer returned error: No such file or directory
ALSA lib conf.c:4738:(snd_config_expand) Evaluate error: No such file or directory
ALSA lib pcm.c:2239:(snd_pcm_open_noupdate) Unknown PCM default
aplay: main:722: audio open …
Run Code Online (Sandbox Code Playgroud)

audio alsa docker

15
推荐指数
1
解决办法
2万
查看次数

使用php exec和amixer设置音量

我写了一个小的PHP脚本来控制alsa本地机器的音量:

<?php
# for simplicity and testing it really just executes the command:
echo exec('amixer set Master 5%+') . " \n";
Run Code Online (Sandbox Code Playgroud)

现在,当我在命令行上运行此脚本时,它工作正常:

$ php volume.php 
Front Right: Playback 39226 [60%] [on] 
$ php volume.php 
Front Right: Playback 42503 [65%] [on] 
$ php volume.php 
Front Right: Playback 45780 [70%] [on]
Run Code Online (Sandbox Code Playgroud)

我有音乐播放,我听到声音越来越大.

但是当我尝试从浏览器通过apache运行脚本时调用http://localhost/volume.php它不起作用.

# http://localhost/volume.php
Front Right: Playback 55709 [10%] [on]
# F5
Front Right: Playback 55709 [15%] [on]
# F5
Front Right: Playback 55709 [20%] [on]
Run Code Online (Sandbox Code Playgroud)

现在我听说音量没有变化,百分比似乎与当前状态无关.当它真的仍然是70%时,它说10% - 15% …

php apache exec alsa amixer

14
推荐指数
1
解决办法
1273
查看次数

ffmpeg中thread_queue_size的正确用法

我正在做一个截屏视频,记录屏幕上发生的情况以及来自外部 USB 麦克风的同步音频评论。我正在使用以下命令:

ffmpeg -f x11grab -r 25 -s 1280x720 -i :0.0+320,236 -thread_queue_size 1024 -f alsa -thread_queue_size 1024 -i hw:1 -vcodec huffyuv screencast.mkv
Run Code Online (Sandbox Code Playgroud)

我认为使用如此高的值thread_queue_size应该让我处于安全站点,以避免buffer xrun我以前遇到的任何错误。然而,情况似乎并非如此。这是录制过程中出现的警告消息:

[x11grab @ 0x55ffe44e6a40] Thread message queue blocking; consider raising the thread_queue_size option (current value: 8)
[alsa @ 0x55ffe44efe80] Thread message queue blocking; consider raising the thread_queue_size option (current value: 1024)
[alsa @ 0x55ffe44efe80] ALSA buffer xrun.B time=00:07:35.96 bitrate=203382.4kbits/s speed=0.994x    
[alsa @ 0x55ffe44efe80] ALSA buffer xrun.B time=00:20:18.76 bitrate=210805.7kbits/s speed=0.998x    
Run Code Online (Sandbox Code Playgroud)

有两件事我不明白:

  1. 为什么x11grab …

ffmpeg alsa screencast

14
推荐指数
1
解决办法
2万
查看次数

Makefile条件包括

我正在尝试编写一个需要ALSA或OSS标头的应用程序.基本上,如果/etc/oss.conf不存在,我想将一个定义传递给编译器,因为这可能意味着soundcard.h头不存在(随意在那个上纠正我,我还是新的与OSS合作).根据OSS文档,您将使用include指令,如下所示:

include /etc/oss.conf
CFLAGS := -I$(OSSLIBDIR)/include/sys
Run Code Online (Sandbox Code Playgroud)

一个问题.OSS支持是可选的,所以我想检查标头是否存在,如果存在,则将定义传递给编译器.问题是,AFAIK无法检查文件是否存在于makefile 规则之外.在规则内部,如果我使用if语句,由于某种原因,尝试设置CFLAGS不会改变它:

test: $(objects)
    @if [ -f ${OSS_CONFIG} ]; then \
    . ${OSS_CONFIG}; \
    CFLAGS+=" -I${OSSLIBDIR} -DUSE_OSS"; \
    fi
    @echo ${CFLAGS}
Run Code Online (Sandbox Code Playgroud)

(上面只输出CFLAGS的原始值,即使${OSS_CONFIG}存在.)这当然是非常难看的,我想知道是否有更清洁的方法来做到这一点.或者我正在采取的方式引发一场涉及小猫种族灭绝的全球性灾难性事件?

哦,请不要告诉我使用autoconf.

c open-source makefile alsa

13
推荐指数
2
解决办法
1万
查看次数

Android AudioRecord - 第二次不会初始化

Hej,我目前正试图让AudioRecord工作.因为我需要一个更大的项目.但它似乎搞得很多.我一直在尝试很多东西,所以当我追踪这个bug时我回到了基础.我正在使用我的三星Galaxy S作为我的调试设备.

我的问题是,第一次重启我的设备后,我可以初始化我创建的AudioRecord对象没有问题.但是第二次运行它时,它不会初始化AudioRecord对象.我已经尝试了几个频率,fyi.

这是我的代码:

package android.audiorecordtest;

import android.app.Activity;
import android.media.AudioFormat;
import android.media.AudioRecord;
import android.media.MediaRecorder;
import android.os.Bundle;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.TextView;

public class AudioRecordTest extends Activity {

    int frequency;
    AudioRecord audRec;
    TextView txtVw;

    /** Called when the activity is first created. */
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);
        txtVw = (TextView) findViewById(R.id.txtVw);


        frequency=8000;
        int bufferSize=(AudioRecord.getMinBufferSize(frequency, AudioFormat.CHANNEL_IN_MONO, AudioFormat.ENCODING_PCM_16BIT))*2;
        if (bufferSize>0) {
            audRec = new AudioRecord(MediaRecorder.AudioSource.MIC, frequency, AudioFormat.CHANNEL_IN_MONO, AudioFormat.ENCODING_PCM_16BIT, bufferSize);
                int status = audRec.getState();
        if (status == …
Run Code Online (Sandbox Code Playgroud)

audio android alsa sample-rate android-audiorecord

13
推荐指数
2
解决办法
1万
查看次数

如何检测Linux当前播放的声音?

我用ALSA.我想在播放声音时阻止PC暂停.我使用这个bash代码来运行一个屏幕锁定器和一个suspend命令:

# Run a screen locker.
#xautolock -time 5 -locker slimlock &

# Run suspend
#xautolock -time 6 -locker 'systemctl suspend' &
Run Code Online (Sandbox Code Playgroud)

我想检测播放的声音或视频,并阻止PC暂停.例如伪代码:

if (video is not played)
{
     run a screen locker
}

if (sound is not played and video is not played)
{
     run suspend command
}
Run Code Online (Sandbox Code Playgroud)

如何使用命令行实用程序检测声音或视频?

audio bash video alsa

13
推荐指数
2
解决办法
7179
查看次数