使用ijkPlayer播放视频

作者: AlinCoder | 来源:发表于2016-09-24 02:52 被阅读5009次

    ijkPlayer简介

    ijkPlayer 是一个基于 ffmpeg 的轻量级 Android/iOS 视频播放器。具有以下优点:

    • 实现了跨平台功能,API 易于集成
    • 编译配置可裁剪,方便控制安装包大小
    • 支持硬件加速解码,更加省电

    github地址: https://github.com/Bilibili/ijkplayer

    ijkPlayer的编译

    打开项目目录 ios/IJKMediaDemo 的示例程序运行
    会提示 'libavformat/avformat.h' file not found 的错误
    因为 ijkPlayer 是基于 FFmpeg 的,但是项目中并没有这个库

    编译步骤:

    1. 执行 init.sh 脚本
      终端进入项目目录, 执行 ./init-ios.sh
      这个命令会下载ffmpeg到ios目录下
    2. 编译 ffmpeg 库
      进入项目的 ios 目录
      执行 ./compile-ffmpeg.sh clean
      接着执行 ./compile-ffmpeg.sh all
      这个命令会执行比较久,耐心等待就可以啦
      此时 demo项目就可以运行了
    3. 打包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];
    }
    

    相关文章

      网友评论

        本文标题:使用ijkPlayer播放视频

        本文链接:https://www.haomeiwen.com/subject/lhkxyttx.html