直播拉流:
按照https://github.com/Bilibili/ijkplayer上的readme将IJKPlayer打包好,(已打包好的https://pan.baidu.com/s/1c1kB3S 提取码: 32hn)
将打包好的IJKPlayer包拖入工程(是oc的, 引入头文件; 是swift的, 建立桥文件), 导入相应的库:
在控制器中写入如下代码(基本设置代码, 如需扩展请自己添加)
import UIKit
class ViewController: UIViewController {
// 在模拟器上声音和画面不同步或者比较卡顿的现象在真机没事的,不用太担心。
fileprivate var player: IJKFFMoviePlayerController?
override func viewDidLoad() {
super.viewDidLoad()
let options:IJKFFOptions = IJKFFOptions.byDefault();
// 帧速率(fps)(可以改,确认非标准桢率会导致音画不同步,所以只能设定为15或者29.97)
options.setOptionIntValue(15, forKey: "max-fps", of: kIJKFFOptionCategoryPlayer);
#if DEBUG
// 设置报告日志
IJKFFMoviePlayerController.setLogReport(true);
// 设置日志的级别为Debug
IJKFFMoviePlayerController.setLogLevel(k_IJK_LOG_DEBUG);
#else
// 设置不报告日志
IJKFFMoviePlayerController.setLogReport(false);
// 设置日志级别为信息
IJKFFMoviePlayerController.setLogLevel(k_IJK_LOG_INFO);
#endif
self.player = IJKFFMoviePlayerController(contentURL: URL(string: "视频拉流地址"), with: options);
// 设置适配横竖屏(设置四边固定,长宽灵活)
self.player?.view.autoresizingMask = [UIViewAutoresizing.flexibleWidth, UIViewAutoresizing.flexibleHeight];
self.player?.view.frame = self.view.bounds;
// 填充fill
self.player?.scalingMode = IJKMPMovieScalingMode.aspectFill;
// 设置自动播放(必须设置为NO,防止自动播放,才能更好的控制直播的状态)
self.player?.shouldAutoplay = true;
self.view.autoresizesSubviews = true;
self.view.addSubview(self.player!.view);
// 播放
self.player?.prepareToPlay();
}
override func didReceiveMemoryWarning() {
super.didReceiveMemoryWarning()
}
}
另附demo(为swift版本, 跟oc差不多): https://github.com/songhaisheng/SGLive
参考的博客地址: http://www.jianshu.com/p/a7d9ed02cf40
http://www.jianshu.com/p/4f21af680c19
http://www.jianshu.com/p/b8db6c142aad