草庐IT

android - 解码音频文件并重新编码为所需的 PCM 格式 : 44, 100 kHz,2 channel ,16 位

我想将音频文件解码为原始PCM数据,以将其流式传输到本地网络中的播放设备。我使用新的MediaExtractor和MediaCodecAPI级别16引入的类。该设备要求PCM数据为44,100kHz,具有2个channel和16位样本大小。只要输入文件大致符合这些要求,这就可以正常工作。但是,每当我解码使用32,000kHz采样率并且可能只有一个channel的MP3文件时,我就无法从MediaCodec类获得所需的输出。看来我无法指定MediaCodec类的输出格式。所以我决定实例化另一个MediaCodec对象以将原始数据重新编码为我想要的格式。根据列表supportedmedia

Android PCM 字节

我正在使用AudioRecord类来分析麦克风中的原始pcm字节。所以这很好用。现在我需要将pcm字节转换为分贝。我有一个公式可以将Pa中的声压转换为db。db=20*log10(Pa/refPa)所以问题是我从audiorecorder从缓冲区中获取的字节是什么,它是振幅帕斯卡声压还是什么。我试图将值放入公式中,但它返回的值非常高,所以我认为它不对谢谢 最佳答案 免责声明:我对Android知之甚少。您的设备可能以每秒44,100个样本(可能更少)的速度录制单声道,每个样本使用两个字节。因此,您的第一步是将原始数据中的字节对组合成

android - 如何从 MediaCodec 解码器的输出中提取 PCM 样本

我正在尝试从解码的mp4缓冲区中获取PCM样本以进行进一步处理。我首先从使用手机的相机应用程序录制的视频文件中提取音轨,并确保在获得“audio/mp4”mime键时选择了音轨:MediaExtractorextractor=newMediaExtractor();try{extractor.setDataSource(fileUri.getPath());}catch(IOExceptione){//TODOAuto-generatedcatchblocke.printStackTrace();}intnumTracks=extractor.getTrackCount();for(i

android在pcm中获取设备整体音频输出

有什么方法可以拦截或只读取android设备中的音频输出吗?我需要从myActivity中读取PCM中的整个音频输出,包括背景中的媒体播放器应用程序、通话中的语音、myACtivity中的MediaPlayer实例等,扬声器将播放的所有内容。其实,如果可以分开阅读,也很好。我试过AudioRecord,将在MediaRecorder.AudioSource中找到的每个常量作为audioSource参数运气不好,我应该尝试不同的audioSources吗?它是一个如此低级的任务,必须在native层内处理吗? 最佳答案 visuali

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 - 实时播放生成的 PCM 数据

我正在dsPIC上开发数字音频合成器。首先,我在matlab中编写和测试算法。在第二阶段,我将算法转换为ANSIC(MinGW编译器),以便在移植到dsPIC之前在WindowsPC上进行测试。音频数据将是未压缩的PCM样本。在C中播放生成的PCM数据有哪些选项?(最好是实时的) 最佳答案 在Windows上,您可以使用waveOutAPI。Hereisatutorial. 关于c-实时播放生成的PCM数据,我们在StackOverflow上找到一个类似的问题:

windows - 如何从 Wave Out 中捕获 PCM 数据

如何以编程方式捕获音频?我正在实现一个实时流式传输网络桌面的应用程序。视频部分结束。我需要实现音频部分。我需要一种方法从声卡获取PCM数据以馈送到我的编码器(使用Windows媒体格式实现)。我认为答案与Win32API中的openMixer()、waveInOpen()函数有关,但我不确定具体应该怎么做。如何打开必要的channel以及如何从中读取PCM数据?提前致谢。 最佳答案 新的WindowsVistaCoreAudioAPI明确支持此功能(称为环回录音),因此如果您可以使用仅适用于Vista的应用程序,这就是可行的方法。参

ios - 如何在iphone sdk中播放原始pcm数据

我正在开发一个语音聊天应用程序。现在我想在iPhone中播放原始pcm音频数据。我做不到。谁能帮我播放pcm数据? 最佳答案 您需要阅读音频队列服务:http://developer.apple.com/library/mac/#documentation/MusicAudio/Conceptual/AudioQueueProgrammingGuide/Introduction/Introduction.html 关于ios-如何在iphonesdk中播放原始pcm数据,我们在Stack

ios - 为交错 PCM 音频设置音频单元格式和渲染回调

我目前正在尝试播放我在一系列UDP数据包中收到的音频。这些被解码为具有以下属性的PCM帧:2个channel交错单个channel中每个样本2个字节(所以4每帧字节数)采样率为48000。每个UDP数据包包含480个帧,因此缓冲区的大小为480*2(channel)*2(每个channel的字节数)。我需要设置一个音频单元来播放这些数据包。所以,我的第一个问题是,我应该如何为音频单元设置AudioStreamBasicDescription结构?查看文档,我什至不确定交错PCM是否是可接受的格式。这是我目前所得到的:structAudioStreamBasicDescription{F

ios - How to correctly read decoded PCM samples on iOS using AVAssetReader -- 当前不正确的解码

我目前正在处理一个应用程序,作为我的计算机科学学士学位的一部分。该应用程序会将来自iPhone硬件(加速计、gps)的数据与正在播放的音乐相关联。该项目仍处于起步阶段,仅进行了2个月的工作。我现在需要帮助的时刻是从iTunes库中的歌曲中读取PCM样本,并使用音频单元播放它们。目前我想要的实现执行以下操作:从iTunes中选择一首随机歌曲,并在需要时从中读取样本,并存储在缓冲区中,我们称之为sampleBuffer。稍后在消费者模型中,音频单元(具有混音器和remoteIO输出)有一个回调,我只需将所需数量的样本从sampleBuffer复制到回调中指定的缓冲区中。然后我通过扬声器听到