ijkplayer README

The project's README from github.com/bilibili/ijkplayer. As one markdown file: README.md.

ijkplayer

Platform Build Status
Android Build Status
iOS Build Status

Video player based on ffplay

Download

# required
allprojects {
    repositories {
        jcenter()
    }
}

dependencies {
    # required, enough for most devices.
    compile 'tv.danmaku.ijk.media:ijkplayer-java:0.8.8'
    compile 'tv.danmaku.ijk.media:ijkplayer-armv7a:0.8.8'

    # Other ABIs: optional
    compile 'tv.danmaku.ijk.media:ijkplayer-armv5:0.8.8'
    compile 'tv.danmaku.ijk.media:ijkplayer-arm64:0.8.8'
    compile 'tv.danmaku.ijk.media:ijkplayer-x86:0.8.8'
    compile 'tv.danmaku.ijk.media:ijkplayer-x86_64:0.8.8'

    # ExoPlayer as IMediaPlayer: optional, experimental
    compile 'tv.danmaku.ijk.media:ijkplayer-exo:0.8.8'
}

My Build Environment

Latest Changes

Features

NOT-ON-PLAN

Before Build

# install homebrew, git, yasm
ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)"
brew install git
brew install yasm

# add these lines to your ~/.bash_profile or ~/.profile
# export ANDROID_SDK=<your sdk path>
# export ANDROID_NDK=<your ndk path>

# on Cygwin (unmaintained)
# install git, make, yasm
cd config
rm module.sh
ln -s module-default.sh module.sh
cd android/contrib
# cd ios
sh compile-ffmpeg.sh clean
cd config
rm module.sh
ln -s module-lite-hevc.sh module.sh
cd android/contrib
# cd ios
sh compile-ffmpeg.sh clean
cd config
rm module.sh
ln -s module-lite.sh module.sh
cd android/contrib
# cd ios
sh compile-ffmpeg.sh clean
# choose [No] to use bash
sudo dpkg-reconfigure dash

Build Android

git clone https://github.com/Bilibili/ijkplayer.git ijkplayer-android
cd ijkplayer-android
git checkout -B latest k0.8.8

./init-android.sh

cd android/contrib
./compile-ffmpeg.sh clean
./compile-ffmpeg.sh all

cd ..
./compile-ijk.sh all

# Android Studio:
#     Open an existing Android Studio project
#     Select android/ijkplayer/ and import
#
#     define ext block in your root build.gradle
#     ext {
#       compileSdkVersion = 23       // depending on your sdk version
#       buildToolsVersion = "23.0.0" // depending on your build tools version
#
#       targetSdkVersion = 23        // depending on your sdk version
#     }
#
# If you want to enable debugging ijkplayer(native modules) on Android Studio 2.2+: (experimental)
#     sh android/patch-debugging-with-lldb.sh armv7a
#     Install Android Studio 2.2(+)
#     Preference -> Android SDK -> SDK Tools
#     Select (LLDB, NDK, Android SDK Build-tools,Cmake) and install
#     Open an existing Android Studio project
#     Select android/ijkplayer
#     Sync Project with Gradle Files
#     Run -> Edit Configurations -> Debugger -> Symbol Directories
#     Add "ijkplayer-armv7a/.externalNativeBuild/ndkBuild/release/obj/local/armeabi-v7a" to Symbol Directories
#     Run -> Debug 'ijkplayer-example'
#     if you want to reverse patches:
#     sh patch-debugging-with-lldb.sh reverse armv7a
#
# Eclipse: (obselete)
#     File -> New -> Project -> Android Project from Existing Code
#     Select android/ and import all project
#     Import appcompat-v7
#     Import preference-v7
#
# Gradle
#     cd ijkplayer
#     gradle

Build iOS

git clone https://github.com/Bilibili/ijkplayer.git ijkplayer-ios
cd ijkplayer-ios
git checkout -B latest k0.8.8

./init-ios.sh

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

# Demo
#     open ios/IJKMediaDemo/IJKMediaDemo.xcodeproj with Xcode
# 
# Import into Your own Application
#     Select your project in Xcode.
#     File -> Add Files to ... -> Select ios/IJKMediaPlayer/IJKMediaPlayer.xcodeproj
#     Select your Application's target.
#     Build Phases -> Target Dependencies -> Select IJKMediaFramework
#     Build Phases -> Link Binary with Libraries -> Add:
#         IJKMediaFramework.framework
#
#         AudioToolbox.framework
#         AVFoundation.framework
#         CoreGraphics.framework
#         CoreMedia.framework
#         CoreVideo.framework
#         libbz2.tbd
#         libz.tbd
#         MediaPlayer.framework
#         MobileCoreServices.framework
#         OpenGLES.framework
#         QuartzCore.framework
#         UIKit.framework
#         VideoToolbox.framework
#
#         ... (Maybe something else, if you get any link error)
# 

Support (支持)

License

Copyright (c) 2017 Bilibili
Licensed under LGPLv2.1 or later

ijkplayer required features are based on or derives from projects below:

android/ijkplayer-exo is based on or derives from projects below:

android/example is based on or derives from projects below:

ios/IJKMediaDemo is based on or derives from projects below:

ijkplayer's build scripts are based on or derives from projects below:

Commercial Use

ijkplayer is licensed under LGPLv2.1 or later, so itself is free for commercial use under LGPLv2.1 or later

But ijkplayer is also based on other different projects under various licenses, which I have no idea whether they are compatible to each other or to your product.

IANAL, you should always ask your lawyer for these stuffs before use it in your product.

ijkplayer (bilibili/ijkplayer)

Searching Database…

33.2K ·GitHub
这是什么?ijkplayer 是 Bilibili 开源的 Android 和 iOS 视频播放器库,基于 FFmpeg(n3.4)和 ffplay 构建,通过 MediaCodec 和 VideoToolbox 实现硬件解码。
这是一个可以直接安装的视频播放器 App,还是给我自己的 App 用的库?是一个集成到你自己的 App 里的库,不是独立播放器:在 Android 上它提供类似 MediaPlayer 的 API,在 iOS 上提供类似 MediaPlayer.framework 的 API。
我怎么把它加到我的项目里?在 Android 上用 Gradle 添加即可。iOS 的预编译二进制标注为“即将推出”,所以那边需要先用自带的脚本从源码构建。
我的电脑上需要装什么才能构建它?参考环境是 Mac:Android 需要 NDK(作者用的是 r10e)、Android Studio 2.1.3 和 Gradle 2.14.1;iOS 需要 Xcode(7.3)和 HomeBrew。
硬件解码在所有支持的版本上都能用吗?只有从某些版本开始才支持:MediaCodec 需要 Android 4.1 及以上(API 16 及以上),VideoToolbox 需要 iOS 8 及以上;低于这些底线就只能用 FFmpeg 软件解码。
它到底支持哪些 Android 和 iOS 版本?Android 支持 ARMv7a、ARM64v8a 和 x86 架构上的 API 9~23(ARMv5 未在真机上测试过),iOS 支持 armv7、arm64、i386 和 x86_64 架构上的 7.0~10.2.x。
我可以在商业 App 里用它吗?ijkplayer 本身采用 LGPLv2.1 或更新版本,可以免费商用,但它构建于多个不同许可协议的项目之上,作者建议找律师确认兼容性。GitHub 检测到这个仓库是 GPL-2.0。
我可以换用别的播放器后端吗?可以。在 Android 上可以用 android.media.MediaPlayer 或 ExoPlayer 作为替代后端(有单独的 ijkplayer-exo 模块),在 iOS 上可以用 AVFoundation 的 AVPlayer;MPMoviePlayerController 从 iOS 8 起已废弃。
我能让这个库变得更小吗?可以。默认构建已经通过 config/module-lite.sh 移除了不常用的 FFmpeg 组件,“Before Build”一节还提供了支持更多或更少编解码器的变体(可选保留 HEVC),用来在包体积和格式支持之间取舍。
有没有明确不在计划内的事情?有——就是 NOT-ON-PLAN 列表:过时的平台(Android API-8 及以下、iOS 6.0 之前)、过时的 CPU(ARMv5、ARMv6、MIPS)、原生字幕渲染,以及 avfilter 支持。
Creator
bilibili
Size
8.1 MB
Stars
33.2K
Updated
CommitApr 26
Age
13y
Commits · 90 Days