zoukankan      html  css  js  c++  java
  • <图形图像,动画,多媒体> 读书笔记 --- 音效

    音频多媒体文件主要是存放音频数据信息,音频文件在录制的过程中把声音信号,通过音频编码,变成音频数字信号保存到某种格式文件里.在播放过程中在对音频文件解码,解码出的信号通过扬声器等设备就能够转成音波.音频文件在编码的过程中数据量非常大,所以有的文件格式对于数据进行了压缩,因此音频文件能够分为:


    无损格式,是非压缩数据格式,文件非常大一般不适合移动设备,比如:WAV,AU,APE等文件

    有损格式,对于数据进行了压缩,压缩后丢掉了一些数据,比如MP3,WMA等文件.


    1.WAV文件

    WAV文件眼下是最流行的无损压缩格式,WAV文件格式灵活,能够存储多种类型的音频数据,因为文件较大不太适合于移动设备这些存储容量小的设备


    2.MP3文件

    MP3格式如今很流行,MP3是一种有损压缩格式,他尽可能地去掉人耳无法感觉的部分和不敏感的部分,MP3是利用MPEG Audio Layer 3的技术将数据以1:10甚至1:12的压缩率,压缩成容量较小的文件,这么高的压缩比率很适合存储容量小得移动设备


    3.WMA文件

    WMA格式是微软公司公布的文件格式,也是有损压缩格式.它与MP3格式不分伯仲.在低比特率渲染情况下,WMA格式显示出来比MP3很多其它的长处,压缩比MP3更高,音质更好.可是在高比特率渲染情况下MP3还是占优势.


    4.CAFF文件

    CAFF文件是苹果公司开发的专门用于MAC OS X 和iOS系统无法所音频格式.它被设计来替换老的WAV格式


    5.AIFF

    AIFF文件是苹果开发的专业音频文件格式.AIFF的压缩格式是AIFF-C,将数据以4:1压缩率进行压缩,专门应用于MAC OS X 和 iOS系统.


    语音合成

    AVSpeechUtterance *utt = [AVSpeechUtterance speechUtteranceWithString:@"test 文本"];
        utt.rate = [self.slider value];
        [self.speechSynthesizer speakUtterance:utt];
    
    


    System Sound API

    System Sound API是属于core Audio中属于面向c语言的次层次API(书上是这么说,但看代码应该是包括了AudioToolbox)


    播放系统声音

    播放系统声音主要使用AudioServicesPlaySystemSound函数进行播放,主要用于游戏音效和操作声音等.他的工作流程大致是:

    1.播放前的准备阶段:使用AudioServicesCreateSystemSoundID函数创建SystemSoundID,然后使用AudioServicesAddSystemSoundCompletion注销声音播放完毕事件回调函数.

    2.播放阶段:使用AudioServicesPlaySystemSound播放声音实现.

    3.播放后的处理阶段:释放资源,注销事件回调函数,这包含了使用AudioServicesDisposeSystemSoundID函数释放SystemSoundID和使用AudioServicesRemoveSystemSoundCompletion注销声音播放完毕事件回调函数.


    //定义一个回调函数。用于当声音播放完毕之后回调。
    void SoundFinishedPlayingCallback(SystemSoundID sound_id, void* user_data)
    {
        //注销声音播放完毕事件回调函数。
        AudioServicesRemoveSystemSoundCompletion(sound_id);
        //释放SystemSoundID
    	AudioServicesDisposeSystemSoundID(sound_id);
    }
    
    
    
    @implementation ViewController
    
    
    - (IBAction)playSystemSound:(id)sender {
        NSURL* system_sound_url = [NSURL fileURLWithPath:[[NSBundle mainBundle]
                                                          pathForResource:@"AlertChordStroke" ofType:@"wav"]];
        
        SystemSoundID system_sound_id;
        
        //创建SystemSoundID
        AudioServicesCreateSystemSoundID(
                                         (CFURLRef)CFBridgingRetain(system_sound_url),
                                         &system_sound_id
                                         );
        
        //注销声音播放完毕事件回调函数。

    AudioServicesAddSystemSoundCompletion( system_sound_id, NULL, NULL, SoundFinishedPlayingCallback, NULL ); //播放系统声音 AudioServicesPlaySystemSound(system_sound_id); }



    震动设备

    AudioServicesPlaySystemSound(kSystemSoundID_Vibrate);


    OpenAL

    播放声音的流程

    1.获得设备信息

    2.获得环境信息

    3.初始化缓冲区

    4.初始化声援

    5.将缓冲区和声源绑定

    6.初始化听众

    7.播放

    8.释放内存


    初始化缓存的过程

    1.打开文件

    2.获得实际音频文件大小

    3.开辟音频内存数据空间

    4.读取的文件到内存中

    5.关闭文件

    6.从OpenAL中获得缓冲区ID

    7.内存中音频数据拷贝到缓冲区

    8.清除内存中音频数据



  • 相关阅读:
    爬虫-scrapy初试
    python-爬虫day1
    django 内存地址列表-->转换为-->字典
    django 基于 form 验证 确认密码的注册
    django 请求过程,生命周期
    django7 models 高级应用
    django6-项目练习
    Mysql之起始
    python之IO模型
    python模块之Gevent(协程)
  • 原文地址:https://www.cnblogs.com/gcczhongduan/p/5369175.html
Copyright © 2011-2022 走看看