草庐IT

iphone - 在 iOS 中将线性 PCM 文件转换为 M4A 文件

使用内置的iOS库,如何将使用AVAudioRecorder录制的线性PCM文件转换为m4a。我知道我最初可以用那种格式录制它,但我首先需要用线性PCM录制它。我对ExtAudioFile不太熟悉,但我不能完全让它做我想做的事。有什么想法吗?最好的, 最佳答案 看看这个示例项目,应该开箱即用,你只需要修改它以满足你的需要。Sampleproject.另一种方法是使用AVFoundation和AVAssetWriter/AVAssetReader,查看thislink了解更多信息 关于ip

android - 从 native 代码将 PCM 音频数据写入音频设备

是否可以直接从native代码将PCM示例写入Android下的音频设备?我已经能够通过将数据发送到套接字并使用AudioTrack来重现PCM样本。是否可以通过直接从native代码访问来避免所有这些通往音频设备的路径?谢谢! 最佳答案 是的,您可以尝试直接使用您的音频设备。访问在/dev/中的Linux虚拟设备节点上进行。在我的HTCDesire上应该是/dev/msm_pcm_out不知道其他厂商的设备是怎么称呼这个设备的。不能保证此设备节点在重启或操作系统更新后具有相同的名称。因此,一旦您的应用程序发布,您将需要做很多麻烦的

java - 带符号的 16 位 PCM 转换不工作。为什么?

在过去的两天里,我一直在尝试在Android上操作16位PCM数据,但收效甚微。我目前正在使用WAVrecorder捕捉音频。在使用randomAccessWriter写入缓冲区之前的onPeriodicNotification(AudioRecordrecorder)方法中,我将缓冲区发送到自定义类,以操作样本,并将样本保存回缓冲区。我的自定义类中的方法如下:由于缓冲区是一个字节数组,我首先将它们转换成短裤,现在一个短裤代表一帧(只有一个channel)。我将实现FFT算法,一旦我克服了这个障碍,它需要输入是一个float组——所以我将每个短整数转换成一个float。现在,将数据写入

android - PCM 流/麦克风卡顿

我目前正在开发一个Android应用程序,它必须将麦克风输入记录为PCM流。每当我录制一些东西时,我都会遇到一些奇怪的口吃,我找不到解决办法。这是我的代码:在我的MainActivity中,我有一个用于麦克风输入的ASyncTask:ArrayListmBufferList;@OverrideprotectedStringdoInBackground(String...params){Thread.currentThread().setPriority(Thread.MAX_PRIORITY);mMicrophone=newMicrophone();mMicrophone.init()

android - 在 android 中将 16 位 pcm 音频下采样为 8 位

我想将16位pcm音频下采样到8位,然后在android中将相同的音频从8位上采样回到16位。我正在使用这似乎有效:inttempint;for(inti=1,j=0;i"+j+"BUFFERVALUE->"+tempBuffer[j]+"*-----------");}其中tempbuffer是一个short[],tempint是一个int。任何人都可以告诉我这是否工作正常,因为我是初学者,而且我正在使用它来将字节[]转换回短[]for(intx=1,j=0;x我不确定它是否有效。 最佳答案 假设8位和16位音频都是带符号的PCM

android - 我可以从 MediaPlayer 或 SoundPool 获取原始 PCM 数据吗?

我使用eclipse和androidsdk4.0.3apilvl15创建一个基本的音乐播放器应用程序。我看了看,发现主要有两个类可以播放声音。媒体播放器和声音池。SoundPool在声音优先级和播放声音速率方面具有更大的灵active。我还想画一个音频的可视化图。有没有办法从加载的音频Assets中获取原始PCM数据,以便我能够绘制图形?有没有办法在实时播放原始数据之前对其进行操作?例如,如果我想添加实时效果。这些类(class)可能吗?还是其他?我想使用其中一个类的主要原因是它们可以读取音频格式,而无需我自己读取文件并将格式解析为原始PCM数据。如能提供有关此问题的任何信息,我们将不

java - 如何将 PCM 原始数据转换为 mp3 文件?

编辑了我的问题:是否有从PCM原始数据到任何音频文件的编码器?mp3,ogg...但不是WAV,因为它太大了我有一个包含原始PCM数组的文本文件,我想将其转换为mp3、ogg文件。经过长时间的搜索,我找不到一些提供这种编码(PCM到MP3)的库。我期待有一些建议或者链接到这些库。它应该在android手机中以编程方式完成,所以我不想有一些桌面解决方案。 最佳答案 有一个github项目为android提供了lame编码器https://github.com/intervigilium/liblame还有一个使用该库的示例应用程序ht

android - 使用 AmrInputStream 将 PCM-16 转换为 AMR

我正在使用AmrInputStream从PCM-16转换为AMR。AmrInputStream的详细信息可以在这里找到http://hi-android.info/src/android/media/AmrInputStream.java.html我对编程很陌生,虽然它谈到了使用JNI和其他东西,但我不知道JNI是什么,我认为本次讨论不需要它。上面的AmrInputStream显然也没有在SDK和NDK中找到,但我已经能够使用它。我一直在互联网上搜索如何使用流,但没有找到任何示例。最后,我进行了实验,发现它与任何InputStream都相似。这是一个代码fragmentInputStr

java - 将 16 位 PCM Wave 数据转换为 float 的正确方法

我有一个16位PCM格式的波形文件。我在byte[]中获得了原始数据和一种提取样本的方法,我需要它们采用浮点格式,即float[]来执行傅里叶运算转变。这是我的代码,这看起来对吗?我在Android上工作,所以javax.sound.sampled等不可用。privatestaticshortgetSample(byte[]buffer,intposition){return(short)(((buffer[position+1]&0xff) 最佳答案 我有一个类似的解决方案,但恕我直言,更简洁一些。不幸的是,据我所知,没有好的库方

android - JTransforms 从 PCM 数据在 Android 中进行 FFT

我已经玩这个有一段时间了,我无法弄清楚我打算在这里做什么。我正在将PCM音频数据读入audioData数组:recorder.read(audioData,0,bufferSize);//readthePCMaudiodataintotheaudioDataarray我想使用PiotrWendykier的JTransform库对我的PCM数据执行FFT以获得频率。importedu.emory.mathcs.jtransforms.fft.DoubleFFT_1D;目前我有这个:DoubleFFT_1Dfft=newDoubleFFT_1D(1024);//1024issizeofar