iOS 语音循环播放设置

本地文件、网络文件,区别就是URL创建方式

1、使用AVPlayerItem与AVPlayer(这个简单,只需要设置回调),而不是AVAudioPlayer(这个麻烦,需要设置代理、计时器等等)

2、设置AVPlayerItem的url,然后AVPlayer播放这个AVPlayerItem,在AVPlayer播放AVPlayerItem回调读取播放完毕后,重新设置进度,具体如图

NSString *document=[NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES)firstObject];

NSString *audioPath = [document stringByAppendingPathComponent:@"voice"];

NSString *toUrl = [audioPath stringByAppendingPathComponent:self.filepatch];

NSURL *musicURL = [NSURL fileURLWithPath:toUrl];

NSError *error;

self.player = [[AVPlayer alloc] initWithPlayerItem:nil];

AVPlayerItem * songItem = [[AVPlayerItem alloc]initWithURL:musicURL];

__weak typeof(songItem) weakSong =songItem;

[self.player replaceCurrentItemWithPlayerItem:songItem];

self.player.volume = 1.0;

weakify(self)

[_player addPeriodicTimeObserverForInterval:CMTimeMakeWithSeconds(1, 1) queue:NULL usingBlock:^(CMTime time) {

//进度 当前时间/总时间

wSelf.progress.progress =CMTimeGetSeconds(wSelf.player.currentItem.currentTime)/CMTimeGetSeconds(wSelf.player.currentItem.duration);

NSLog(@"per:%f-%f",CMTimeGetSeconds(wSelf.player.currentItem.currentTime),CMTimeGetSeconds(wSelf.player.currentItem.duration));

if ( wSelf.progress.progress==1) {

[weakSong seekToTime:kCMTimeZero];

[wSelf.player play];

}

wSelf.label.text = [NSString stringWithFormat:@"%.2f秒|%.2f秒",CMTimeGetSeconds(wSelf.player.currentItem.currentTime),CMTimeGetSeconds(wSelf.player.currentItem.duration)];

}];

[self.player play];

相关推荐
草明3 小时前
ios 开发配置蓝牙
macos·ios·cocoa
小杨互联网6 小时前
Fiddler 配置安卓和ios抓包和pc抓包
ios·fiddler·抓包·安卓抓包·fiddler抓包配置安卓·浏览器抓包
m0_7482546610 小时前
iOS中使用WKWebView加载和显示PDF文档实战
ios·pdf·cocoa
逆向协议风控大师16 小时前
ios逆向某新闻 md5+aes
macos·ios·cocoa
十月ooOO17 小时前
Capacitor 打包后的 iOS app 无法访问 http 的内容,解决办法
http·ios·iphone
二流小码农21 小时前
鸿蒙开发:一个轻盈的上拉下拉刷新组件
android·ios·harmonyos
Victor_Barnett1 天前
Xcode模拟器运行报错:The request was denied by service delegate
ide·macos·ios·objective-c·xcode·swift
网络安全Jack2 天前
iOS应用网络安全之HTTPS
web安全·ios·https
志飞2 天前
ios使用UIScrollView和PageControl创建图片轮播
macos·ios·cocoa