c#mp3转mid

c#mp3转mid,第1张

亲,经过查询答案是:i

C#中没有直接的API可以将MP3转换为MIDI,但是可以通过第三方库来实现这一功能。例如,可以使用NAudio库中的NAudioMidi类来实现MP3转MIDI的功能。首先,需要使用NAudioWave来将MP3文件转换为PCM格式,然后使用NAudioMidi类将PCM格式转换为MIDI格式。

音频这块涉及面广,细节也挺多,以下为针对音频转码部分

一、介绍几种压缩编码格式

01、WAV编码

WAV编码的一种实现就是在PCM数据格式的前面加上44字节,分别用来描述PCM的采样率、声道率、数据格式等信息。

特点:音质非常好,大量软件都支持。

使用场合:多媒体开发的中间文件、保存音乐和音效素材。

02、MP3编码

MP3具有不错的压缩比,使用LAME编码(MP3编码格式的一种实现)的中高码率的MP3文件,听感非常接近WAV,当然在不同的应用场景下,应该调整合适的参数以达到最好的效果。特点:音质在128Kbit/s已上表现不错,压缩比比较高,大量软件和硬件都支持,兼容性好。

03、AAC编码

是一种专为声音数据设计的文件压缩格式。与 MP3 不同,它采用了全新的算法进行编码,更加高效,具有更高的“性价比”。利用AAC格式,可使人感觉声音质量没有明显降低的前提下,更加小巧。 苹果ipod 、 诺基亚 手机支持AAC格式的音频文件。

特点:在小于128kBIT/s一下的音频编码,多用于视频中音轨的编码。

04、OGG编码

Ogg是一种非常有潜力的编码,在各种码率下都有比较优秀的表现,尤其在中低码率场景下。Ogg除了音质很好,还是完全免费的。ogg有着出色的算法,可以用更小的码率达到更好的音质。Ogg目前支持的情况还不够好,无论软件还是硬件,都无法和MP3相提并论。

特点:可以用比MP3更小的码率实现比MP3更好的音质,高中低码率下均有良好的表现,兼容性不够好,流媒体特性不支持。

使用场合:语音聊天的音频消息场景

二、iOS音频处理各个框架

AVAudioPlayer

基本 *** 作:播放、暂停、停止、循环等等一些基本的音频播放功能。

控制:可对音频进行任意时间位置播放;进度控制。

其它:从文件或缓冲区播放声音;获取音视频关键参数,如音频标题、作者、功率等等。

三、录音设置

//录音设置

    NSMutableDictionary recordSetting = [[NSMutableDictionary alloc]init];

    //设置录音格式  AVFormatIDKey==kAudioFormatLinearPCM

    [recordSetting setValue:[NSNumber numberWithInt:kAudioFormatLinearPCM] forKey:AVFormatIDKey];

    //设置录音采样率(Hz) 如:AVSampleRateKey==8000/44100/96000(影响音频的质量)

    [recordSetting setValue:[NSNumber numberWithFloat:44100] forKey:AVSampleRateKey];

    //录音通道数  1 或 2

    [recordSetting setValue:[NSNumber numberWithInt:2] forKey:AVNumberOfChannelsKey];

    //线性采样位数  8、16、24、32

    [recordSetting setValue:[NSNumber numberWithInt:16] forKey:AVLinearPCMBitDepthKey];

    //录音的质量

    [recordSetting setValue:[NSNumber numberWithInt:AVAudioQualityHigh] forKey:AVEncoderAudioQualityKey];

注意:如果WAV转MP3通道数目需设置为2,否则转码后声音不对(音色、音质都会变质),录音的采样率和转码的采样率需保持一致,AVNumberOfChannelsKey设置为2时,文件同时会增加一倍;如果设置默认为MP3则会失败。

  

说明:音频的录制通过AudioRecord对象进行,这里录制出来的数据没有进行编码,是属于PCM格式的数据,可以理解为Android平台上的原始的音频数据,只能通过AudioTrack对象进行播放,AudioTrack对象可以对每一帧音频进行控制,灵活性比MediaXXX强大,缺点是播放的音频数据格式必须是PCM格式,因此如果我们使用AudioTrack播放进行了编码的音频数据,则需要先进行解码成PCM格式数据,这边先来展示一下自己写的小Demo。

功能描述:1、长按开始录制音频,松开结束录制并保存成文件(录制过程中会实时显示当前的分贝值数值,并且根据分贝值更新长按控件状态以及显示录制时长(单位秒))。2、支持文件的删除、重命名、解码成PCM、编码PCM格式数据。3播放支持05倍速,原始倍速,2倍速播放,支持播放与暂停。

视频展示:

附上获取分贝值 demo

以上就是关于c#mp3转mid全部的内容,包括:c#mp3转mid、音频转码、基于AudioTrack、AudioRecord获取分贝值、录制时长、PCM解码与编码等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/web/9459676.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-04-28
下一篇 2023-04-28

发表评论

登录后才能评论

评论列表(0条)

保存