前言
我们在平时的iOS开发中,音视频的播放有很多种,目前系统的自带的都属于 AVFoundation 框架,更加接近于底层,所以灵活性很强,更加方便自定义
还有就是第三方音视频视频播放,特点是功能强大,实现简单,支持流媒体,下面来逐一介绍,给大家参考学习,下面来一起看看详细的介绍吧。
播放系统音效或者短音效
注意:
if let soundURL = Bundle.main.url(forResource: "sourceName", withExtension: "wav") { var mySound: SystemSoundID = 0 AudioServicesCreateSystemSoundID(soundURL as CFURL, &mySound) // Play AudioServicesPlaySystemSound(mySound); }
播放音乐 - AVAudioPlayer
定义一个播放器属性
// 定义一个播放器属性 fileprivate var player: AVAudioPlayer?
初始化并开始播放音乐
func playMusic() { // 2.获取对应音乐资源 guard let fileUrl = Bundle.main.url(forResource: "309769", withExtension: "mp3") else { return } // 3.创建对应的播放器 do { player = try AVAudioPlayer(contentsOf: fileUrl) } catch { print(error) } // 设置代理监听播放完成 player?.delegate = self // 4.准备播放 player?.prepareToPlay() // 5.播放音乐 player?.play() }
停止、暂停
// 停止、暂停 player?.stop()
监听 AVAudioPlayer 播放完成
// MARK: - AVAudioPlayerDelegate extension ViewController: AVAudioPlayerDelegate { /// 完成播放 func audioPlayerDidFinishPlaying(_ player: AVAudioPlayer, successfully flag: Bool) { if flag { print("播放完成") } } }
使用 AVPlayer 进行视频的播放
AVPlayer的对象要设置为全局的,否则会播放不成功
AVPlayer存在于AVFoundation中,可以播放音乐、本地音频和流媒体播放
但是它对视屏有很高自由度的控制,而且能够自定义视屏播放界面
通过通知监听播放的进度及相关参数
AVPlayer三要素
func playVideo() { // 1.创建AVPlayer guard let url = URL(string: "http://baobab.wdjcdn.com/14559682994064.mp4") else { return } // 2.创建播放器 // 提供数据,设置数据源 let item = AVPlayerItem(url: url) // 负责控制播放,暂停、播放、指定时间播放等 let player = AVPlayer(playerItem: item) // 3.创建图层,负责显示 let layer = AVPlayerLayer(player: player) layer.frame = playerView.bounds playerView.layer.addSublayer(layer) // 4.播放视频 player.play() }
使用 IJKMediaFramework 进行视频的播放
ijkPLayer是Bilibili基于ffmpeg开发并开源的轻量级视频播放器,支持播放本地网络视频,也支持流媒体播放
功能很强大,支持视频的软解码和硬解码
手动导入 IJKMediaFramework.framework SDK, 添加 libz.tbd依赖
import IJKMediaFramework
初始化播放器并进行播放
func playVideoByIJKPlayer() { // 1.设置配置,打开硬解码 let options = IJKFFOptions.byDefault() options?.setOptionIntValue(1, forKey: "videotoolbox", of: kIJKFFOptionCategoryPlayer) // 2.初始化播放器 guard let ijkPlayer = IJKFFMoviePlayerController(contentURLString: "http://baobab.wdjcdn.com/14559682994064.mp4", with: options) else { return } ijkPlayer.view.frame = playerView.bounds playerView.addSubview(ijkPlayer.view) // 3.开始进行播放 ijkPlayer.prepareToPlay() }
总结
以上就是这篇文章的全部内容了,希望本文的内容对大家的学习或者工作具有一定的参考学习价值,如果有疑问大家可以留言交流,谢谢大家对小牛知识库的支持。
本文向大家介绍iOS开发实现音频播放功能,包括了iOS开发实现音频播放功能的使用技巧和注意事项,需要的朋友参考一下 音频播放 1、介绍 - 功能介绍 用于播放比较长的音频、说明、音乐 ,使用到的是AVFoundation - 框架介绍 * AVAudioPlayer * 初始化: 注意 : (3)必须声明全局变量的音乐播放对象、或者是属性的音乐播放对象 才可以播放 (4)在退出播放页
主要内容:本节引言:,1.相关方法详解,2.使用代码示例,3.本节示例代码下载:,本节小结:本节引言: 本节带来的是Android多媒体中的——MediaPlayer,我们可以通过这个API来播放音频和视频 该类是Androd多媒体框架中的一个重要组件,通过该类,我们可以以最小的步骤来获取,解码 和播放音视频。它支持三种不同的媒体来源: 本地资源 内部的URI,比如你可以通过ContentResolver来获取 外部URL(流) 对于Android所支持的的媒体格式列表 对于Androi
我有listview,它包含一个带有播放按钮和搜索栏的音频文件列表。 当我单击listview的播放按钮时,我想播放一个音频文件。我成功地实现了这一点,但当我单击列表中的另一个播放按钮时,两个音频文件正在连续播放,它将继续所有单击播放按钮。我如何限制媒体播放器在一个位置播放,如果我点击另一个图标,它必须停止旧的媒体播放器,并开始播放新的。有人能说我怎么实现这个吗?。我有相同的按钮播放和暂停。
我正在开发一个音频播放器,它可以在后台播放音频文件。我的问题是,当录像机或视频播放器启动时,我需要暂停音频播放器。 有什么方法可以处理这个任务吗?例如,我有来处理这些调用。当我接到呼叫或wnat呼叫时,我们可以使用呼叫状态暂停播放器。我想为录像机或视频播放器以及相同的场景。当视频/录制开始时,我需要暂停音频播放器。
问题内容: 我是iOS的初学者,正在尝试使用Swift设计鼓组应用。我设计了一个带有单个按钮的视图,并在下面编写了代码,但是它存在一些问题: 当我像鼓声一样快速触摸按钮时,会丢失一些声音。 仍然在“鼓声滚动”中,每次触摸该按钮都会中断声音,而不是让样本播放到结束为止。例如,c滚动太糟糕了。即使我再次触摸该按钮,我也希望听到所有采样的声音。 触摸和声音之间存在延迟。我知道这是不是低延迟音频的最佳选择
我正在使用AVPlayer播放HLS流。当用户按下录制按钮时,我还需要录制这些流。我使用的方法是分别录制音频和视频,然后在最后合并这些文件以制作最终视频。远程mp4文件是成功的。 但是现在对于HLS(.m3u8)文件,我可以使用AVAssetWriter录制视频,但音频录制有问题。 我正在使用MTAudioProccessingTap处理原始音频数据并将其写入文件。我遵循了这篇文章。我能够录制远程