ijkplayer基于FFmpeg的Android/iOS视频播放器

ijkplayer


下载

  • Android:
  • Gradle
复制代码
# 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'
}

构建环境

功能

  • 常用
  • 删除不常用的 ffmpeg 组件以减少二进制文件大小 config/module-lite.sh
  • 解决部分在线视频错误。
  • Android
  • 平台:API 9~23
  • CPU:ARMv7a、ARM64v8a、x86(ARMv5 未在真机上测试)
  • API:MediaPlayer-like
  • 视频输出:NativeWindow,OpenGL ES 2.0
  • 音频输出:AudioTrack,OpenSL ES
  • 硬件解码器:MediaCodec(API 16+,Android 4.1+)
  • 替代后端:android.media.MediaPlayer、ExoPlayer
  • iOS
  • 平台:iOS 7.0~10.2.x
  • CPU:armv7、arm64、i386、x86_64(armv7s 已过时)
  • API: MediaPlayer.framework-like
  • 视频输出:OpenGL ES 2.0
  • 音频输出:AudioQueue, AudioUnit
  • 硬件解码器:VideoToolbox (iOS 8+)
  • 替代后端:AVFoundation.Framework.AVPlayer, MediaPlayer.Framework.MPMoviePlayerControlelr (iOS 8 起已废弃)

构建准备

复制代码
# 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
  • 如果您希望使用较少的编解码器/格式以获得较小的二进制大小(包括 hevc 函数)
复制代码
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
  • For Ubuntu/Debian 用户.
复制代码
# choose [No] to use bash
sudo dpkg-reconfigure dash

构建 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

构建 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)
# 

License

复制代码
Copyright (c) 2017 Bilibili
Licensed under LGPLv2.1 or later

商业用途

ijkplayer 遵循 LGPLv2.1 或更高版本许可,因此其本身在 LGPLv2.1 或更高版本下可免费用于商业用途。

但 ijkplayer 也基于其他遵循不同许可的项目,我不知道它们是否彼此兼容,或者是否与您的产品兼容。

IANAL,在您的产品中使用 ijkplayer 之前,请务必咨询您的律师。

关于项目

基于 FFmpeg n3.4 的 Android/iOS 视频播放器,支持 MediaCodec、VideoToolbox。
GPL-2.0
C
33,004
8218
1179
2013-06-03
2024-08-13

增长趋势 - stars