iOS开发中音频视频播放的简单实现方法
前言
我们在平时的iOS开发中,音视频的播放有很多种,目前系统的自带的都属于AVFoundation框架,更加接近于底层,所以灵活性很强,更加方便自定义
还有就是第三方音视频视频播放,特点是功能强大,实现简单,支持流媒体,下面来逐一介绍,给大家参考学习,下面来一起看看详细的介绍吧。
播放系统音效或者短音效
注意:
- 这里的资源长度最多30秒
- 资源必须在Target-->BuildPhases-->CopyBundleResources引入资源文件,否则获取不到文件
ifletsoundURL=Bundle.main.url(forResource:"sourceName",withExtension:"wav"){
varmySound:SystemSoundID=0
AudioServicesCreateSystemSoundID(soundURLasCFURL,&mySound)
//Play
AudioServicesPlaySystemSound(mySound);
}
播放音乐-AVAudioPlayer
- 资源必须在Target-->BuildPhases-->CopyBundleResources引入资源文件,否则获取不到文件
- 支持多种音频格式,而且能够进行进度、音量、播放速度等控制。
定义一个播放器属性
//定义一个播放器属性 fileprivatevarplayer:AVAudioPlayer?
初始化并开始播放音乐
funcplayMusic(){
//2.获取对应音乐资源
guardletfileUrl=Bundle.main.url(forResource:"309769",withExtension:"mp3")else{
return}
//3.创建对应的播放器
do{
player=tryAVAudioPlayer(contentsOf:fileUrl)
}catch{
print(error)
}
//设置代理监听播放完成
player?.delegate=self
//4.准备播放
player?.prepareToPlay()
//5.播放音乐
player?.play()
}
停止、暂停
//停止、暂停 player?.stop()
监听AVAudioPlayer播放完成
//MARK:-AVAudioPlayerDelegate
extensionViewController:AVAudioPlayerDelegate{
///完成播放
funcaudioPlayerDidFinishPlaying(_player:AVAudioPlayer,successfullyflag:Bool){
ifflag{
print("播放完成")
}
}
}
使用AVPlayer进行视频的播放
AVPlayer的对象要设置为全局的,否则会播放不成功
AVPlayer存在于AVFoundation中,可以播放音乐、本地音频和流媒体播放
但是它对视屏有很高自由度的控制,而且能够自定义视屏播放界面
通过通知监听播放的进度及相关参数
AVPlayer三要素
- AVPlayerItem(提供数据,设置数据源)
- AVPlayer(负责控制播放,暂停、播放、指定时间播放等)
- AVPlayerLayer(负责显示如果缺少就只有声音没有视频)
funcplayVideo(){
//1.创建AVPlayer
guardleturl=URL(string:"http://baobab.wdjcdn.com/14559682994064.mp4")else{return}
//2.创建播放器
//提供数据,设置数据源
letitem=AVPlayerItem(url:url)
//负责控制播放,暂停、播放、指定时间播放等
letplayer=AVPlayer(playerItem:item)
//3.创建图层,负责显示
letlayer=AVPlayerLayer(player:player)
layer.frame=playerView.bounds
playerView.layer.addSublayer(layer)
//4.播放视频
player.play()
}
使用IJKMediaFramework进行视频的播放
ijkPLayer是Bilibili基于ffmpeg开发并开源的轻量级视频播放器,支持播放本地网络视频,也支持流媒体播放
功能很强大,支持视频的软解码和硬解码
手动导入IJKMediaFramework.frameworkSDK,添加libz.tbd依赖
importIJKMediaFramework
初始化播放器并进行播放
funcplayVideoByIJKPlayer(){
//1.设置配置,打开硬解码
letoptions=IJKFFOptions.byDefault()
options?.setOptionIntValue(1,forKey:"videotoolbox",of:kIJKFFOptionCategoryPlayer)
//2.初始化播放器
guardletijkPlayer=IJKFFMoviePlayerController(contentURLString:"http://baobab.wdjcdn.com/14559682994064.mp4",with:options)else{return}
ijkPlayer.view.frame=playerView.bounds
playerView.addSubview(ijkPlayer.view)
//3.开始进行播放
ijkPlayer.prepareToPlay()
}
总结
以上就是这篇文章的全部内容了,希望本文的内容对大家的学习或者工作具有一定的参考学习价值,如果有疑问大家可以留言交流,谢谢大家对毛票票的支持。
声明:本文内容来源于网络,版权归原作者所有,内容由互联网用户自发贡献自行上传,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任。如果您发现有涉嫌版权的内容,欢迎发送邮件至:czq8825#qq.com(发邮件时,请将#更换为@)进行举报,并提供相关证据,一经查实,本站将立刻删除涉嫌侵权内容。