pcm

Change Sample rate with AudioConverter

南楼画角 提交于 2020-03-21 06:55:51
问题 I am trying to re-sample the input audio 44.1 kHz to 48 kHz. using AudioToolbox's AUAudioUnit.inputHandler writing out the input 44.1 kHZ to a wav file (this is working perfectly) converting the 44.1 kHz to 48 kHz and writing out this converted bytes to file. https://developer.apple.com/documentation/audiotoolbox/1503098-audioconverterfillcomplexbuffer The problem is in the 3rd step. After writing out to a file the voice is very noisy. here is my code: // convert to 48kHz var

深入剖析Android音频之AudioTrack

痴心易碎 提交于 2020-03-06 02:46:17
播放声音能够用MediaPlayer和AudioTrack,两者都提供了java API供应用开发人员使用。尽管都能够播放声音。但两者还是有非常大的差别的。当中最大的差别是MediaPlayer能够播放多种格式的声音文件。比如MP3。AAC,WAV,OGG。MIDI等。 MediaPlayer会在framework层创建相应的音频解码器。而AudioTrack仅仅能播放已经解码的PCM流,假设是文件的话仅仅支持wav格式的音频文件,由于wav格式的音频文件大部分都是PCM流。AudioTrack不创建解码器。所以仅仅能播放不须要解码的wav文件。 当然两者之间还是有紧密的联系,MediaPlayer在framework层还是会创建AudioTrack,把解码后的PCM数流传递给AudioTrack。AudioTrack再传递给AudioFlinger进行混音,然后才传递给硬件播放,所以是MediaPlayer包括了AudioTrack。使用AudioTrack播放音乐演示样例: AudioTrack audio = new AudioTrack( AudioManager.STREAM_MUSIC, // 指定流的类型 32000, // 设置音频数据的採样率 32k,假设是44.1k就是44100 AudioFormat.CHANNEL_OUT_STEREO, //

ALSA driver--简单的ALSA driver例子

折月煮酒 提交于 2020-03-02 16:28:23
来源:https://github.com/stadaki/alsa-minivosc-src https://www.alsa-project.org/wiki/Minivosc static int debug = 1; /* Use our own dbg macro http://www.n1ywb.com/projects/darts/darts-usb/darts-usb.c*/ #undef dbg #define dbg(format, arg...) do { if (debug) printk(KERN_DEBUG __FILE__ ": " format "\n" , ## arg); } while (0) #define dbg2(format, arg...) do { if (debug) printk( ": " format "\n" , ## arg); } while (0) // copy from aloop-kernel.c: #include <linux/init.h> #include <linux/module.h> #include <linux/jiffies.h> #include <linux/slab.h> #include <linux/time.h> #include <linux/wait.h> #include

arecord用法及其含义

喜你入骨 提交于 2020-02-28 00:59:50
1.命令格式 arecord [flags] [filename] 2.选项含义 -h,—help(帮助) -V,–version(打印版本信息) -l,–list-devices(列出全部声卡和数字音频设备) -L,–list-pcms(列出全部PCM定义) -D,–device(指定PCM设备名称) -q,–quiet(安静模式) -t,–file-type(文件类型voc,wav,raw或au) -c,–channels(设置通道数) -f,–format(设置格式) -r,–rate(设置频率) -d,–duration(设置持续时间,单位为秒) -s,–sleep-min(设置最小休眠时间) -M,–mmap(mmap流) -N,–nonblock(设置为非块模式) -B,–buffer-time(缓冲持续时长,单位为微秒) -v,–verbose(显示PCM结构和设置) -I,–separate-channels(设置为每个通道一个单独文件) 3.用法示例 arecord -c2 -r16000 -fS16_LE test.wav 来源: CSDN 作者: zkw_1998 链接: https://blog.csdn.net/zkw_1998/article/details/104539093

ffmpeg音频格式转换

允我心安 提交于 2020-02-28 00:13:35
打开ffmpeg下bin路径ctrl+鼠标右键,选择在此处打开命令窗口。 1.mp3转pcm ffmpeg.exe -i Cry.mp3 -f s16le -ar 8000 -ac 1 -acodec pcm_s16le Cry_8k.pcm 2.wav转pcm ffmpeg.exe -i “di.wav” -f s16le -ar 8k -ac 1 -acodec pcm_s16le Di.pcm 3.wav转aac ffmpeg.exe -i “01.wav” -ar 8k -ac 1 -acodec aac WiFi_failed.aac 4.mp3转aac ffmpeg.exe -i “test.mp3” -strict experimental -ab 128k -ar 8k -ac 1 -acodec aac -y test.aac 5.m4a转pcm ffmpeg.exe -i demo.m4a -f s16le -ar 16000 -ac 1 -acodec pcm_s16le demo.pcm (f:输出格式 ab:码率 ar:采样率 ac:声道 ar:采样率 ac:通道数) 来源: CSDN 作者: Nomidia 链接: https://blog.csdn.net/bajie7045/article/details/104537739

RT600 I2S外设介绍及应用

穿精又带淫゛_ 提交于 2020-02-14 14:48:50
恩智浦的i.MX RT600是跨界处理器产品,同样也是i.MX RTxxx系列的开山之作。不同于i.MX RT1xxx系列单片机,i.MX RT600 采用了双核架构,将新一代Cortex-M33内核与高性能Cadence Tensilica HiFi 4 音频DSP内核相结合,适用于32位沉浸式音频播放和视频用户界面应用。i.MX RT600旨在通过安全、功率优化的嵌入式处理器充分挖掘语音辅助终端节点的潜力,因此针对音频数据的采集、传输和处理,i.MX RT600都有丰富的硬件资源进行支持。其中,针对RT600的I2S外设,本文详细地进行了介绍,并基于i.MX RT600 EVK开发板,在RT600的DSP端(HiFi4)实现了一个音频数字回环的demo。 一、I2S介绍 1.1 I2S 接口 I2S总线为数字音频流的传输提供了标准的通信接口,由飞利浦制定。I2S总线规范定义了一种3线串行总线,分别是: 1、串行时钟SCK(也称位时钟BCLK),这是SDA线上数据的位时钟。对应SDA的每一个数据位,SCLK都有产生一个脉冲。 2、帧时钟WS(也称LRCK,或FSYNC),以大多数单一立体声格式的PDM数据来说,WS用于切换左右声道的数据;在DSP或TDM模式下用作帧定界符。此外,I2S的采样频率是由WS频率决定的。 3、串行数据(SDA),就是用二进制表示的音频数据流

Android: Make a recorded pcm raw data playable

元气小坏坏 提交于 2020-02-05 06:57:41
问题 I'm developing an Android application, which supports audio recording with the following code, sample can be found here: http://developer.samsung.com/technical-doc/view.do;jsessionid=tT01JrgM5DRC15pN56v20xzJXcDYv7hZVLvPhT0zJ4kfvSc1TlTM!-846162528?v=T000000090 Variables: private static final int RECORDER_BPP = 16; private static final int RECORDER_SAMPLERATE = 22050; private static final int RECORDER_CHANNELS = AudioFormat.CHANNEL_IN_MONO; private static final int RECORDER_CHANNELS_NUMBER = 1;

Android: Make a recorded pcm raw data playable

别来无恙 提交于 2020-02-05 06:57:10
问题 I'm developing an Android application, which supports audio recording with the following code, sample can be found here: http://developer.samsung.com/technical-doc/view.do;jsessionid=tT01JrgM5DRC15pN56v20xzJXcDYv7hZVLvPhT0zJ4kfvSc1TlTM!-846162528?v=T000000090 Variables: private static final int RECORDER_BPP = 16; private static final int RECORDER_SAMPLERATE = 22050; private static final int RECORDER_CHANNELS = AudioFormat.CHANNEL_IN_MONO; private static final int RECORDER_CHANNELS_NUMBER = 1;

pcm_get_htimestamp fail

我是研究僧i 提交于 2020-02-05 03:49:51
在获取pcm的时间戳用于音频同步, 第一次使用pcm_get_htimestamp的时候,提示fail.导致无法获取时间,和可用的帧数. 分析:由于在pcm_start()后,直接使用pcm_get_htimestamp 进行了获取, 但是这时候硬件并没有准备好.导致返回失败. 故而在pcm_start后,需要usleep 加段延迟. 如果延迟不够,也会导致同样的问题. 来源: CSDN 作者: Sunnie_ge 链接: https://blog.csdn.net/u013377887/article/details/104166783

Capture audio from WasapiLoopbackCapture, and convert to muLaw

喜夏-厌秋 提交于 2020-02-01 07:59:13
问题 I'm capturing audio with WasapiLoopbackCapture - format = IeeeFloat - SampleRate = 48000 - BitsPerSample = 32 I need to convert this to muLaw (8Khz, 8 bit, mono) - eventually it'll be sent to a phone via SIP trunking. I've tried 100s of samples (most of them with NAudio) and solutions but still have no clue how to do this ... 回答1: The Mu-Law tools in NAudio are limited so you might have to roll your own. You'll need to set up a chain of IWaveProvider filters to convert to mono, change bit