使用ijkPlayer播放视频
程序员文章站
2024-01-16 19:52:22
...
ijkPlayer简介
ijkPlayer 是一个基于 ffmpeg 的轻量级 Android/iOS 视频播放器。具有以下优点:
- 实现了跨平台功能,API 易于集成
- 编译配置可裁剪,方便控制安装包大小
- 支持硬件加速解码,更加省电
github地址: https://github.com/Bilibili/ijkplayer
ijkPlayer的编译
打开项目目录 ios/IJKMediaDemo 的示例程序运行
会提示 'libavformat/avformat.h' file not found
的错误
因为 ijkPlayer 是基于 FFmpeg 的,但是项目中并没有这个库
编译步骤:
- 执行 init.sh 脚本
终端进入项目目录, 执行./init-ios.sh
这个命令会下载ffmpeg到ios目录下 - 编译 ffmpeg 库
进入项目的 ios 目录
执行./compile-ffmpeg.sh clean
接着执行./compile-ffmpeg.sh all
这个命令会执行比较久,耐心等待就可以啦
此时 demo项目就可以运行了 - 打包framework
参考文章 http://www.jianshu.com/p/1f06b27b3ac0
一个坑:在我执行 ./compile-ffmpeg.sh all
这个命令出现了 C compiler test failed
错误,找了好久原因,最后发现是找不到我机器的 ios 版本(⊙﹏⊙)b, 因为我用的是 XCode-beta。。。用正式版的应该不会有这个问题
在终端执行下面这条命令即可sudo xcode-select --switch /Applications/Xcode-beta.app/Contents/Developer/
如果装了多个XCode出错了,也可用这个方法解决
如碰到其他错误可参照 这篇文章
播放视频
新建一个项目,导入打包后的 framework 和它依赖的 framework
- libbz2.tbd
- libz.tbd
- AudioToolbox.framework
- VideoToolbox.framework
- CoreGraphics.framework
- QuartzCore.framework
- CoreMedia.framework
- CoreVideo.framework
- AVFoundation.framework
- MediaPlayer.framework
- MobileCoreServices.framework
- OpenGLES.framework
在 viewController 中添加代码
- (void)viewDidLoad {
[super viewDidLoad];
NSURL *url = [NSURL URLWithString:@"http://live.hkstv.hk.lxdns.com/live/hks/playlist.m3u8"];
// 成员属性强引用
_player = [[IJKFFMoviePlayerController alloc] initWithContentURL:url withOptions:nil];
[_player setScalingMode:IJKMPMovieScalingModeAspectFill];
UIView *playerView = [self.player view];
playerView.backgroundColor = [UIColor blackColor];
playerView.frame = self.view.bounds;
// 使视频自适应屏幕的宽高
playerView.autoresizingMask = UIViewAutoresizingFlexibleWidth | UIViewAutoresizingFlexibleHeight;
[self.view insertSubview:playerView atIndex:1];
}
- (void)viewWillAppear:(BOOL)animated {
[super viewWillAppear:animated];
[_player prepareToPlay];
}
- (void)viewDidAppear:(BOOL)animated {
[super viewDidAppear:animated];
[self.player play];
}
上一篇: 视频处理.
下一篇: 输出* *** ***** ...