首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

如何在UWP应用上播放原始的pcm音频字节?

在UWP应用上播放原始的PCM音频字节,可以通过以下步骤实现:

  1. 创建一个UWP应用项目,并确保已添加音频播放的相关权限。
  2. 在应用的代码中,使用Windows.Media.Audio命名空间下的AudioGraph类来实现音频播放功能。AudioGraph提供了一个音频处理图,可以用于创建和管理音频节点。
  3. 创建AudioGraph对象,并设置音频渲染器的属性,如采样率、声道数等。
  4. 创建AudioFrameOutputNode对象,用于将音频数据发送到音频输出设备。
  5. 创建一个缓冲区来存储PCM音频字节数据,并将数据写入缓冲区。
  6. 将缓冲区中的音频数据写入AudioFrameOutputNode对象,实现音频播放。

以下是一个示例代码,用于在UWP应用上播放原始的PCM音频字节:

代码语言:csharp
复制
using System;
using Windows.Foundation;
using Windows.Media.Audio;
using Windows.Media.Render;

public class AudioPlayer
{
    private AudioGraph audioGraph;
    private AudioFrameOutputNode outputNode;

    public async void PlayPCM(byte[] pcmData, int sampleRate, int channels)
    {
        // 创建AudioGraph对象
        AudioGraphSettings settings = new AudioGraphSettings(AudioRenderCategory.Media);
        CreateAudioGraphResult result = await AudioGraph.CreateAsync(settings);
        if (result.Status != AudioGraphCreationStatus.Success)
        {
            // 创建失败,处理错误
            return;
        }
        audioGraph = result.Graph;

        // 创建AudioFrameOutputNode对象
        AudioEncodingProperties encodingProperties = AudioEncodingProperties.CreatePcm(sampleRate, (uint)channels, 16);
        outputNode = audioGraph.CreateFrameOutputNode(encodingProperties);

        // 连接AudioFrameOutputNode到音频输出设备
        outputNode.AddOutgoingConnection(await audioGraph.CreateDeviceOutputNodeAsync());

        // 创建缓冲区
        AudioFrame frame = new AudioFrame((uint)pcmData.Length);
        using (AudioBuffer buffer = frame.LockBuffer(AudioBufferAccessMode.Write))
        using (IMemoryBufferReference reference = buffer.CreateReference())
        {
            // 获取缓冲区的数据
            byte* dataInBytes;
            uint capacityInBytes;
            ((IMemoryBufferByteAccess)reference).GetBuffer(out dataInBytes, out capacityInBytes);

            // 将PCM音频字节写入缓冲区
            for (int i = 0; i < pcmData.Length; i++)
            {
                dataInBytes[i] = pcmData[i];
            }
        }

        // 将缓冲区中的音频数据写入AudioFrameOutputNode
        outputNode.AddFrame(frame);
        
        // 开始播放音频
        audioGraph.Start();
    }
}

这段代码创建了一个AudioGraph对象,并使用AudioFrameOutputNode将PCM音频字节数据写入音频输出设备,实现了音频播放功能。你可以将需要播放的PCM音频字节数据传递给PlayPCM方法,同时指定采样率和声道数。

注意:上述示例代码仅供参考,实际使用时可能需要根据具体需求进行适当修改和优化。

腾讯云相关产品和产品介绍链接地址:

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

Android多媒体之SoundPool+pcm音频操作

零、前言 今天比较简单,先理一下录制和播放四位大将 再说一下SoundPool使用和pcm转wav 讲一下C++文件如何在Android中使用,也就是传说中JNI 最后讲一下变速播放和变调播放...四类.png ---- 1.AudioRecord(基于字节流录音) 优点: 对音频实时处理,适合流媒体和语音电话 缺点: 输出PCM语音数据,需要自己处理字节数据 如果保存成音频文件不能被播放播放...PCM采集数据需要AudioTrack播放,AudioTrack也可以将PCM数据转换成其他格式 ---- 1.1:音频来源:int audioSource ?....mp3,.3gp,.aac,.mp4,.webm) 操作简单,不须自己处理字节流,传入文件即可 缺点: 无法实现实时处理音频,输出音频格式少。...两倍速时,采样频率*2,波周期减半,本来2s波,1s就能放完 由于声音频率变化,声音效果也随之变化 2倍速时:频率快,高音,声音尖,0.5倍速时:频率慢,低音,声音沉 2倍速是就像一些短视频倍速变声配音

2.7K20

Android音频编辑之音频转换PCM与WAV

WAV文件采样率,声道数,采样位数,音频数据大小等信息,这样这个WAV就可以被音频播放器正确读取并播放,而单纯PCM文件因为只有编码音频数据,没有其他描述信息,所以无法被音频播放器识别播放。...解码器支持解码常用音频格式,mp3, wav, 3gpp, 3gp, amr, aac, m4a, ogg, flac等,解码后数据是PCM编码数据。...下面用代码实现下如何用上述类实现音频文件解码操作,得到一个PCM数据文件 /** * 将音乐文件解码 * * @param musicFileUrl 源文件路径 * @param decodeFileUrl...PCM文件转WAV文件 现在我们得到了解码后PCM文件,但是它是不可直接播放,因为不带音频相关格式信息,下面我们将PCM和指定音频相关格式信息去转换得到一个可播放WAV文件: /** * PCM...,将采样率,声道数,采样位数,PCM音频数据大小等信息填充进去,然后将这个44个字节数据拼接到PCM文件开头,就得到了一个可播放WAV文件了。

5.8K30

iOS AVDemo(1):音频采集,免费获取全部源码丨音视频工程示例

其中可以封装:音频采集后、编码后、解码后数据(PCM 数据、AAC 数据);视频编码后数据(:H.264 数据)。...:音频参数,:数据格式、声道数、采样位深、采样率等。...// 按照上面采集音频参数设置:PCM 为声道交错格式、每帧声道数为 2、采样位深为 16 bit。这样每帧字节数是 4 字节(左右声道各 2 字节)。...2、采集音频存储为 PCM 文件 我们在一个 ViewController 中来实现音频采集逻辑并将采集音频存储为 PCM 数据。...3、用工具播放 PCM 文件 完成音频采集后,可以将 App Document 文件夹下面的 test.pcm 文件拷贝到电脑上,使用 ffplay 播放来验证一下音频采集是效果是否符合预期: $ ffplay

1K40

10.QT-QAudioOutput类使用

本章需要用到类如下: QAudioDeviceInfo类提供音频输出设备 QAudioFormat类提供音频参数设置 QAudioOutput类提供了用于将PCM原始音频数据发送到音频输出设备接口。...QAudioOutput::bufferSize() const; //获取缓冲区大小,默认为35280,需要start()后,才分配buff int QAudioOutput::bytesFree() //返回音频缓冲区中可用空闲字节数...int QAudioOutput::periodSize(); //周期大小(以字节为单位),每播放一次音频数据所需多少个数据量                     //periodSize用来防止缓冲区欠运行和确保不间断回放所需数据量...,正在解析中 break; } } 4.补充说明 由于QAudioOutput支持输入数据必须是原始数据,所以播放mp3,WAV,AAC等格式文件,需要解封装后才能支持播放...所以接下来,我们使用ffmpeg+QAudioOutput来实现一个简单音频播放

2.5K20

【Android RTMP】音频数据采集编码 ( FAAC 音频编码参数设置 | FAAC 编码器创建 | 获取编码器参数 | 设置 AAC 编码规格 | 设置编码器输入输出参数 )

设置编码器输出格式 : 这里设置输出格式 0, 就是 FAAC 将 PCM 采样进行编码, 编码出格式是 AAC 原始数据 , 即没有解码信息 ADIF 和 ADTS AAC 纯样本裸数据 ;...PCM 音频样本个数 FAAC 编码器最多一次可以接收样本个数 unsigned long *mMaxOutputBytes 参数 : 输出数据最大字节数...Format ) , 只有一份音频解码信息 , 存储在文件开头 这种格式适合存储音频文件 , 节省空间 , 但是必须从开始播放才可以 , 从中间位置无法播放 ; 音频数据传输流格式...RTMP 推流时, 不使用上述两种格式 推流视频时, 先将 SPS, PPS 解码数据包信息推流到服务器上 推流音频时, 也是将解码相关数据先推流到服务器中...音频数据标签 和 后续 AAC 音频数据标签 这里设置输出格式 0, 就是 FAAC 将 PCM 采样进行编码, 编码出格式是 AAC 原始数据 即没有解码信息 ADIF

4.4K20

iOS下解码AAC并播放

前言 今天我们介绍一下如何在iOS进行AAC解码,并使用AudioUnit播放解码后PCM数据。 基本流程 iOS系统对音频处理做了三层封装。包括应用层、服务层和硬件层。如下图所示: ?...在iOS下进行音频解码及播放大体流程如下: 打开 AAC 文件。 获取音频格式信息。通道数,采样率等。 从 AAC 文件中取出一帧 AAC 数据。...下我们再看一下如何将解码后 PCM 数据播放出来。 播放 PCM 我们使用 iOS 中 AudioUnit 工具来播放 PCM。AudioUnit使用步骤如下: 设置音频组件描述。...其作用是通过该描述信息,可以在iOS中找到相关音频组件。 根据描述查找音视组件。 创建 AudioUnit 实例。 设置 AudioUnit 属性。 播放 PCM。...从 AAC 文件中读取一个 AAC 音频帧。 通过 AudioToolbox 解决 AAC 到 PCM。 通过 AudioUnit 播放 PCM。 循环执行 3-5步,直到文件结束。

3.3K21

Android 音频PCM数据采集和播放,读写音频wav文件

本文目的:使用 AudioRecord 和 AudioTrack 完成音频PCM数据采集和播放,并读写音频wav文件 准备工作 Android提供了AudioRecord和MediaRecord。...PCM表示音频文件中随着时间流逝一段音频振幅。Android在WAV文件中支持PCM音频数据。 WAV WAV,MP3等比较常见音频格式,不同编码格式对应不通过原始音频。...PCM打包成WAV PCM原始音频数据,WAV是windows中常见音频格式,只是在pcm数据中添加了一个文件头。...初始化AudioTrack时,要根据录制时参数进行设定。 代码示例 工具类WindEar实现音频PCM数据采集和播放,与读写音频wav文件功能。...wav文件header /** * 音频录制器 * 使用 AudioRecord 和 AudioTrack API 完成音频 PCM 数据采集和播放,并实现读写音频 wav 文件 * 检查权限

3.2K30

语音项目——Android录音学习

AudioRecord:主要实现对音频实时处理以及边录边播功能,相对MediaRecorder比较专业,输出是PCM语音数据,如果保存成音频文件,是不能够被播放播放,所以必须先写代码实现数据编码以及压缩...2、优、缺点 录音方式 优点 缺点 AudioRecord(基于字节流录音) 可实现语音实时处理,边录边播,对音频实时处理,AudioTrack更接近底层。...输出PCM语音数据,如果保存成音频文件是不能被播放播放。要用AudioTrack进行处理。API还有待完善,常见暂停功能都不支持。...但 PCM语音数据,如果保存成音频文件,是不能够被播放播放。 2、播放PCM文件 Audacity工具可以导入pcm原始文件,并且提供了波形图查看和播放功能。...操作流程是: 文件 => 导入 => 原始数据 => 设置PCM数据格式=> 导入 具体效果图如下: ? ?

3.1K10

科普常识:常见音频参数解析

如果在计算机加上相应音频卡—就是我们经常说声卡,我们可以把所有的声音录制下来,声音声学特性高低等都可以用计算机硬盘文件方式储存下来。...反过来,我们也可以把储存下来音频文件用一定音频程序播放,还原以前录下声音。 二、采样频率         指每秒钟取得声音样本次数。...但音频帧跟编码格式相关,它是各个编码标准自己实现。因为如果以PCM(未经编码音频数据)来说,它根本就不需要帧概念,根据采样率和采样精度就可以播放了。...因此,PCM约定俗成了无损编码,因为PCM代表了数字音频中最佳保真水准,并不意味着PCM就能够确保信号绝对保真,PCM也只能做到最大程度无限接近。        ...降低采样指标是不可取,因此专家们研发了各种压缩方案。最原始有DPCM、ADPCM,其中最出名为MP3。所以,采用了数据压缩以后码率远小于原始码。

2.5K00

音视频入门之音频采集、编码、播放

今天我们学习音频采集、编码、生成文件、转码等操作,我们生成三种格式文件格式,pcm、wav、aac 三种格式,并且我们用 AudioStack 来播放音频,最后我们播放这个音频。...通常我们选择ENCODING_PCM_16BIT和ENCODING_PCM_8BIT PCM代表是脉冲编码调制,它实际上是原始音频样本。...答:按照流程走完了,数据是进去了,但是现在文件里面的内容仅仅是最原始音频数据,术语称为raw(中文解释是“原材料”或“未经处理东西”),这时候,你让播放器去打开,它既不知道保存格式是什么,又不知道如何进行解码操作...而AudioTrack只能播放已经解码PCM流,如果对比支持文件格式的话则是AudioTrack只支持wav格式音频文件,因为wav格式音频文件大部分都是PCM流。...通常我们选择ENCODING_PCM_16BIT和ENCODING_PCM_8BIT PCM代表是脉冲编码调制,它实际上是原始音频样本。

3.5K00

【FFmpeg】ffmpeg 命令行参数 ⑦ ( 使用 FFmpeg 提取 PCM 音频数据 | PCM 音频格式 | 提取 PCM 音频格式常用参数 | 查询文档方法 )

只有 知道该数据 采样率 / 采样位数 / 通道数 才能将该音频数据播放出来 ; PCM 数据是 最原始音频数据 , 音频内容完全无损 , 但是 PCM 数据体积庞大 , 对 PCM 音频数据压缩...-ar 48000 -ac 2 -f s16le output.pcm 命令 , 播放上述 output.pcm 音频数据 ; PCM 数据是 纯 音频裸数据 , 没有该音频 格式信息 , 需要在命令行中额外指定...采样率 , 采样位数 , 通道数 , 如果 指定错了参数 , 播放出来就是随机噪音 ; 4、提取 PCM 音频数据 - 使用 -sample_fmt 参数 执行 ffmpeg -i input.mp4...命令 , 播放上述 提取 output.wav 音频数据 ; WAV 格式文件可以直接使用 ffplay 播放 , 不需要设置 采样率 / 采样位数 / 通道数 等 额外参数 ; 将上述提取 WAV...二、查询文档方法 1、PCM 采样位数查询 上面播放 PCM 格式音频文件 , 涉及到了设置 PCM 采样位数 , 可以通过如下命令进行查询 ; 执行 ffmpeg -muxers | findstr

71010

【音视频原理】音视频 “ 采样 - 编码 - 封装 过程 “ 和 “ 解封装 - 解码 - 播放 过程 “ 分析 ( 视频采集处理流程 | 音频采集处理流程 | 音视频文件解封装播放流程 )

, 解析出原始音视频数据进行播放 ; 视频采样编码封装 过程 是下图 红色矩形框内过程 : 二、音频采集处理流程 音频文件从录音到生成文件全过程 : 采集音频帧 : 麦克风 硬件 负责 采集音频...音频编码 ; 视频编码 : 在 采样帧队列 ( Frame Queue ) 中 PCM 原始音频数据 , 体积非常大 , PCM 就是 WAV 格式音频 , 没有经过任何压缩 , 音频必须要进行编码...44100 \times 2 \times 2 字节大小 ; 音频包队列 : 将 采样帧 编码 后 , 放到 音频包 中 , 然后将若干 音频包 放到 " 音频包队列 ( Packet Queue..., 解析出原始音视频数据进行播放 ; 音频采样编码封装 过程 是下图 红色矩形框内过程 : 三、音视频文件解封装播放流程 ---- 拿到 音视频 文件后 , 播放该文件 , 需要经过以下步骤才能播放出来...字幕 等效果 ; 音视频播放 : 处理后音频 送到 扬声器 / 耳机 等设备中进行播放 ; 处理后视频 送到 显示器 设备中播放 ;

52110

使用 AudioTrack 播放音频轨道

播放解码后音频数据(PCM)。...量化深度大小影响到声音质量,显然,位数越多,量化后波形越接近原始波形,声音质量越高,而需要存储空间也越多;位数越少,声音质量越低,需要存储空间越少。...「WAV 文件头/图片来自Google」 PCM音频处理中频繁接触格式,通常我们对音频处理都是基于 PCM 流,如常见音量调节, 变声, 变调等特性。...AudioTrack 是播放音频另外一种方式 「如果你感兴趣还可以了解下 SoundPool」, 并且只能用于播放 PCM 数据。 AudioTrack API 概述 : 1....写入数据 /** * @param audioData 保存要播放数据数组 * @param offsetInBytes 在要写入数据audioData中以字节表示偏移量 *

2.1K31

音视频之音频相关概念介绍

信号本身有一个频率,而采样函数也有一个频率,根据Nyquist-Shannon采样定理,如果要正确获取原始信号信息,那么采样频率至少需要是原始信号频率2倍。...采样位数 在用数字信号表示音频信号时候,某个信号可以用8位数字,也就是1个字节表示,也可以用2个字节标记。用位数越多,表示信号等级也就越多,目前用最多是2个字节。...采样时长 按照前面的介绍,就可以理解单位时间内采样音频数据大小计算了,1s音频数据大小是: image.png f是采样频率,Channels是声道数,BytesPerSample是采样字节数。...耳返 耳返就是在采集端建一个回路,可以将采集数据实时播放出来。 PCM PCM(pulse code modulation)脉冲编码调制,就是原始音频信号,未经过压缩那种。...在分析音频问题时候,用最多方法就是导出各个阶段PCM数据,看是哪个阶段出问题。这儿阶段就是采集,重采样,3A,混音,上行,下行,重采样,混音,播放

1.2K10

从wav到Ogg Opus 以及使用java解码OPUS

WAV PCM原始语音,依据采样率定义,我们知道要播放PCM,需要知道采样率,因此需要一个文件格式可以封装PCM,wav就是微软公司专门为Windows开发一种标准数字音频文件,该文件能记录各种单声道或立体声声音信息...wav文件前44个字节,定义了采样率,channel等参数,播放器通过这个数据就可以播放PCM数据了。...MP3 wav 很好解决了PCM播放问题,但是PCM实在是太大了,因此出现了mp3等音频格式,通过一定压缩算法压缩语音,以便于互联网传输分享。...OPUS一般是分帧编码,比如一个320采样点(640字节数据,编码后为70多个字节,和PCM一样,编码后OPUS不能直接播放: 无法从文件本身获取音频元数据(采样率,声道数,码率等) 缺少帧分隔标识...Opus: 以低和高可变比特率处理语音,音乐和通用音频(每通道≈6-510kbit / s) 无损 FLAC 处理文件和高保真音频数据 未压缩 OggPCM 处理未压缩PCM音频,与WAV类似

2.8K31

python WAV音频文件处理—— (1)读写WAV文件

如果你用音频软件(Audacity)打开WAV文件,可能看到这样波形 Audacity中波形--振幅随时间变化 WAV 文件结构 WAV 音频文件格式是一种二进制格式,结构如下: WAV文件格式...Header中参数说明: • Encoding:编码。样音频信号数字表示。可用编码类型包括未压缩线性脉冲编码调制 (PCM) 和一些压缩格式, ADPCM、A-Law 或 μ-Law。...为了忠实地表现音乐,大多数 WAV 文件使用立体声 PCM 编码,其中 16 位有符号整数以 44.1 kHz 采样。这些参数对应于标准 CD 质量音频。...混合和立体声 为了合成立体声, 我们需要制造左右两个声道声音,并在每一帧交替播放。...到目前为止,您一直使用单个字节(8位)来表示每个音频样本,以保持简单。

40810

音频基础知识 - PCM 浅析

PCM浅析 最近有个需求:对音频裁剪时,裁剪条纵坐标必须是音频音量,以帮助用户更好选择音频区域,所以就需要快速准确提取出音频音量列表。...数字音频:通过采样和量化获得离散、数字化音频信号,即:计算机可以处理二进制音频数据。 相反,当通过扬声器播放声音时,计算机内部数字信号通过D/A转换,还原成了强弱不同电压信号。...所以为了更好归一化处理,我们会对FFmpeg解码出PCM进行重采样,统一采样成AV_SAMPLE_FMT_S16P格式,即:每个采样点是两字节有符号short类型,并且按照Planar方式存储。...PCM播放 PCM原始采样数据,必须指定采样率、声道数和采样位数(大小端)才能播放。...PCM数据:文件 -> 导入 -> 原始数据,然后选择对应采样率、声道数、采样位数和大小端就可以播放了。

3.6K21

腾讯云流式TTS语音合成客户端实现

pcm原始音频流,本文将从鉴权开始,详细介绍流式tts客户端实现。...消息体由数量未定块组成,并以最后一个大小为0块为结束。 每一个非空块都以该块包含数据字节数(字节数16进制以表示)开始,跟随一个CRLF (回车及换行),然后是数据本身,最后块CRLF结束。...,数据分为两种,opus压缩和pcm原始音频流,题主了解到opus拥有较好压缩比(10:1),可以很好节省传输时间和网络带宽。...opus源码地址 TTS数据解析 这里主要参考官网java示例,循环读取数据,按以下格式说明不断读取头/序号/长度/音频数据,直到到达数据末尾。...TTS完成解析数据都经由YoutuOpusDecoder类进行播放,此处主要封装了两个功能,第一个功能是封装了AudioTrack播放pcm原始音频,第二个是将解析完成音频不断送入播放器 完整代码如下

8.9K41

音频基础知识

比如对于 PCM 流来说,采样率为 44100Hz,采样位数为 16,通道数为 2,那么一秒音频固定大小:44100162 / 8 字节。...、比特率(码率) 指音频每秒钟播放数据量,单位为 bit,例如对于 PCM 流,采样率为 44100Hz,采样大小为 16,声道数为 2,那么码率为:44100* 16 * 2 = 1411200...、PCMPCM 流就是原始收录声音时,数据会保存到一串 buffer 中,这串 buffer,就采用了 PCM 格式存储。...比如在播放音乐过程中,来了一个提示音,就需要把音乐和提示音都混合到 codec 输出,音乐原始采样率和提示音原始采样率可能是不一致。...4、音频压缩格式 ①、WAV 编码 WAV 编码是在 PCM 数据格式前面加上 44 字节,分别用来描述 PCM 采样率、声道数、数据格式等信息。 特点:音质非常好、大量软件都支持。

1.3K61

音频基础知识

PCM技术就是把声音从模拟信号转化为数字信号技术,即对声音进行采样、量化过程,经过PCM处理后数据,是最原始音频数据,即未对音频数据进行任何编码和压缩处理。...原始模拟音频数据如下 按照固定频率进行采样,得到 最后,对采样后数据选择合适精度进行量化: 采样 是指把物理信号转化为数字信号过程。...压缩 PCM数据是最原始音频数据,完全无损,所以PCM数据虽然音质优秀但体积庞大,为了解决这个问题先后诞生了一系列音频格式,这些音频格式运用不同方法对音频数据进行压缩,其中有无损压缩和有损压缩两种...ALAC、APE、FLAC 有损压缩:消除冗余信息,人耳能听到声音为 20Hz - 20000Hz 以内,所以可以将此范围外声音去除掉。...overrun,录制时,数据都满了,应用来不及取走;underrun,需要数据来播放,应用来不及写入数据 以FFmpeg中常见PCM数据格式 s16le 为例:它描述是有符号16位小端PCM数据

1.2K30
领券