美文网首页
音频播放和视频播放

音频播放和视频播放

作者: Hevin_Chen | 来源:发表于2016-09-21 11:34 被阅读20次

    简介

    简单来说,音频可以分为2种

    音效:

           又称“短音频”,通常在程序中的播放时长为1~2秒

            在应用程序中起到点缀效果,提升整体用户体验

    音乐:

          比如游戏中的“背景音乐”,一般播放时间较长

          播放音频可以使用框架AVFoundation.framework

    音效的播放

    // 1.获得音效文件的路径

    NSURL *url = [[NSBundle mainBundle] URLForResource:@"m_03.wav" withExtension:nil];

    // 2.加载音效文件,得到对应的音效ID

    SystemSoundID soundID = 0;

    AudioServicesCreateSystemSoundID((__bridge CFURLRef)(url),&soundID);

    // 3.播放音效

    AudioServicesPlaySystemSound(soundID);

    音效文件只需要加载1次

    音效播放常见函数总结

    加载音效文件

    AudioServicesCreateSystemSoundID(CFURLRef inFileURL, SystemSoundID *outSystemSoundID)

    释放音效资源

    AudioServicesDisposeSystemSoundID(SystemSoundID inSystemSoundID)

    播放音效

    AudioServicesPlaySystemSound(SystemSoundID inSystemSoundID)

    播放音效带点震动

    AudioServicesPlayAlertSound(SystemSoundID inSystemSoundID)

    音效格式

    声音和音效小结——音频转换工具

    转换aiff格式

    pafconvert -f AIFF -d I8 filename

    转换caf格式

    pafconvert-f caff-d aac-b 32000 filename

    批量转换

    find. -name '*.mp3'  -exec afconvert -f caff-d aac -b 32000 {} \;

    音乐的播放

    音乐播放用到一个叫做AVAudioPlayer的类

    AVAudioPlayer常用方法

    //  加载音乐文件

    - (id)initWithContentsOfURL:(NSURL*)urlerror:(NSError**)outError;

    - (id)initWithData:(NSData*)data error:(NSError**)outError;

    // 准备播放(缓冲,提高播放的流畅性)

    - (BOOL)prepareToPlay;

    // 播放(异步播放)

    - (BOOL)play;

    // 暂停

    - (void)pause;

    // 停止

    - (void)stop;

    // 是否正在播放

    @property(readonly,getter=isPlaying)BOOLplaying;

    // 时长

    @property(readonly)NSTimeIntervalduration;

    // 当前的播放位置

    @propertyNSTimeIntervalcurrentTime;

    //播放次数(-1代表无限循环播放,其他代表播放numberOfLoops+1次)

    @propertyNSIntegernumberOfLoops;

    //音量

    @propertyfloatvolume;

    //是否允许更改速率

    @propertyBOOLenableRate;

    //播放速率(1是正常速率,0.5是一般速率,2是双倍速率)

    @propertyfloatrate;

    //有多少个声道

    @property(readonly)NSUIntegernumberOfChannels;

    //声道(-1是左声道,1是右声道,0是中间)

    @propertyfloatpan;

    //是否允许测量音量

    @property(getter=isMeteringEnabled)BOOLmeteringEnabled;

    //更新测量值

    - (void)updateMeters;

    // 获得当前的平均音量

    - (float)averagePowerForChannel:(NSUInteger)channelNumber;

    视频播放

    如何播放视频?

    MPMoviePlayerController的使用

    加载视频资源(注意,如果url为nil同样可以加载)

    NSAssert(self.url, @"URL不能为空");

    [[MPMoviePlayerController alloc] initWithContentURL:self.url];

    // 显示

    [self.view addSubview:self.moviePlayer.view];

    通过设置AutoresizingMask属性可以在横竖屏转换时自动调整视图大小

    // 播放

    [self.moviePlayer play];

    // 全屏

    [self.moviePlayer setFullscreen:YES animated:YES];

    lMPMoviePlayerController的播放状态是通过通知中心监听的

    常用监听通知事件

    // 状态变化

    MPMoviePlayerPlaybackStateDidChangeNotification

    // 播放结束

    MPMoviePlayerPlaybackDidFinishNotification

    // 退出全屏

    MPMoviePlayerDidExitFullscreenNotification

    // 截屏完成

    MPMoviePlayerThumbnailImageRequestDidFinishNotification

    // 截屏方法

    -requestThumbnailImagesAtTimes:timeOption:

    相关文章

      网友评论

          本文标题:音频播放和视频播放

          本文链接:https://www.haomeiwen.com/subject/edloettx.html