美文网首页音视频
iOS(Swift)中的基于FFmpeg的IJKPlayer从引

iOS(Swift)中的基于FFmpeg的IJKPlayer从引

作者: 奔跑的徐胖子 | 来源:发表于2017-08-24 15:24 被阅读722次

    FFmpeg是音视频流相关的比较牛逼的东西吧,我不了解,然后从头开始学起!先从能看到结果的东西搞起,就是B站大牛写的IJKPlayer,从这个开始了解一下FFmpeg。

    1. 编译FFmpeg类库

    1.1 编译前的准备

    按照github上(https://github.com/Bilibili/ijkplayer)bilibili所介绍的流程,首先先做一些编译FFmpeg的准备工作。

    1.1.1 homebrew, git, yasm

    首先,安装一下homebrew。homebrew这个东西应该是使用cocoaPods的时候接触过,反正用这个东西可以安装许多东西,使用起来方便。具体的安装这个的方法,就百度一下,肯定知道哈。

    其次,安装一下git。git这个东西应该是比别的一些版本控制管理的要厉害吧,分布式的,而且github,看名字就……你懂得。我是一只用git的,但是我没有深入的去看git,只是用了一些比较简单的git的命令来管理app的版本。

    最后安装一下yasm。这个yasm是一个完全重写的NASM汇编。目前,它支持x86和AMD64指令集,接受NASM和气体汇编语法,产出二进制, ELF32 , ELF64 , COFF , Mach - O的( 32和64 ) , RDOFF2 ,的Win32和Win64对象的格式,并生成STABS 调试信息的来源,DWARF 2 ,CodeView 8格式。(以上这些均来自于互联网,我并看不懂这些都是什么,但是大体的应该就是一个汇编器吧,一种编译的时候可以加快速度之类的一些环境吧)

    在安装了homebrew的情况下,终端执行以下命令安装yasm:
    brew install yasm

    没有错误信息安装成功.png

    1.2 编译FFmpeg

    首先克隆下来IJKPlayer的项目,找一个你要克隆下来的文件夹,cd进去,然后直接克隆下来:

    git clone https://github.com/Bilibili/ijkplayer.git ijkplayer-ios
    
    克隆成功.png

    然后进入到克隆到的文件夹中:

    cd ijkplayer-ios
    
    文件夹中的文件.png

    其中的init-ios.sh是一个看名字用来初始化IJKPlayer的东西,实际上它做的工作是下载FFmpeg编译的相关的真机、模拟器框架(armv7、arm64、i386、x86_64)。然后我们执行这个脚本:

    ./init-ios.sh
    
    其中一项类似的信息.png

    之后依次执行下面的命令,来编译FFmpeg:

    cd ios
    ./compile-ffmpeg.sh clean
    ./compile-ffmpeg.sh all
    

    搂一眼期间没有Error的提示,应该就是顺利编译了。打开
    ios/IJKMediaDemo/IJKMediaDemo.xcodeproj
    这个路径的这个工程,看看官方给的demo能不能跑起来,跑起来的话,就没问题了。

    demo中的直播画面.png

    2. 把IJKPlayer集成到自己的项目中

    具体的集成过程,可以看github上面的把整个工程给添加进去,也可以使用framework。已经有大神写的很清楚了:http://www.jianshu.com/p/1f06b27b3ac0,但是我按照这个教程直接弄,之后会出现问题,是一个连接的问题:

    一个链接的问题.jpg

    诸如这样的报错之类的把,是缺少了链接库之类的吧,我也不是太明白,总之是因为FFmpeg里面有一些C++的东西吧(这个问题看上去是个关于C++的问题)。解决的方案是,在other link flag 里面添加一个:

    -lstdc++
    

    或者是再加一个依赖库:

    关于编译链接C++的库.png

    这样问题就解决了,然后我们就可以参考demo,来进行直播画面的播放控制之类的了。

    相关文章

      网友评论

        本文标题:iOS(Swift)中的基于FFmpeg的IJKPlayer从引

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