iOS-音视频播放的简单实现
2017-09-20 14:15
417 查看
iOS开发中,音视频的播放有很多种,目前系统的自带的都属于 AVFoundation 框架,更加接近于底层,所以灵活性很强,更加方便自定义
还有就是第三方音视频视频播放,特点是功能强大,实现简单,支持流媒体
资源必须在
支持多种音频格式,而且能够进行进度、音量、播放速度等控制。
AVPlayer存在于AVFoundation中,可以播放音乐、本地音频和流媒体播放
但是它对视屏有很高自由度的控制,而且能够自定义视屏播放界面
通过通知监听播放的进度及相关参数
AVPlayer(负责控制播放,暂停、播放、指定时间播放等)
AVPlayerLayer(负责显示如果缺少就只有声音没有视频)
功能很强大,支持视频的软解码和硬解码
手动导入
还有就是第三方音视频视频播放,特点是功能强大,实现简单,支持流媒体
播放系统音效或者短音效
注意:
这里的资源长度最多30秒资源必须在
Target --> Build Phases --> Copy Bundle Resources引入资源文件,否则获取不到文件
if let soundURL = Bundle.main.url(forResource: "sourceName", withExtension: "wav") { var mySound: SystemSoundID = 0 AudioServicesCreateSystemSoundID(soundURL as CFURL, &mySound) // Play AudioServicesPlaySystemSound(mySound); }
播放音乐 - AVAudioPlayer
资源必须在Target --> Build Phases --> Copy Bundle Resources引入资源文件,否则获取不到文件
支持多种音频格式,而且能够进行进度、音量、播放速度等控制。
定义一个播放器属性
// 定义一个播放器属性 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三要素
AVPlayerItem(提供数据,设置数据源)AVPlayer(负责控制播放,暂停、播放、指定时间播放等)
AVPlayerLayer(负责显示如果缺少就只有声音没有视频)
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开发--利用MPMoviePlayerViewController播放视频简单实现
- iOS开发中音频视频播放的简单实现方法
- iOS开发--利用MPMoviePlayerController播放视频简单实现
- android视频播放简单实现示例(VideoView&MediaPlayer)
- android 简单的实现视频的播放 基于 ijkplayer的封装更加简单 方便快捷
- iOS开发 简单实现视频音频的边下边播
- fairyGUI简单实现视频播放
- iOS开发网络篇—实现一个视频播放客户端小应用
- ios-播放音效的简单实现
- Android高级控件(四)——VideoView 实现引导页播放视频欢迎效果,超级简单却十分的炫酷
- MediaPlayer简单使用,绑定surfaceView实现播放视频的功能
- iOS编译FFmpeg、kxmovie实现视频播放
- iOS 本地视频播放 二步实现
- ios视频循环播放实现
- iOS音视频实现边下载边播放
- iOS中 MediaPlayer framework实现视频播放 韩俊强的博客
- iOS----简单实现视频音频的边下边播
- iOS开发之简单视频播放
- ExoPlayer简单实现播放本地视频
- iOS开发中对音效和音乐播放的简单实现