b站视频直播开源框架 - ijkplayer

2013-06-03      13309      C语言
项目简介


ijkplayer

基于ffplay的视频播放器。

下载

  • Android:
    • Gradle
# required
allprojects {
    repositories {
        jcenter()
    }
}

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

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

    # ExoPlayer as IMediaPlayer: optional, experimental
    compile 'tv.danmaku.ijk.media:ijkplayer-exo:0.7.5'
}
  • iOS
    • 即将到来..

版本环境

  • 常见
    • Mac OS X 10.11.5
  • 安卓
    • NDK r10e
    • Android Studio 2.1.3
    • Gradle 2.14.1
  • iOS
    • Xcode 7.3 (7D175)

Features

  • 常见的
    • 删除很少使用的ffmpeg组件以减少二进制文件大小配置 
    • 古怪的在线视频工作区.
  • Android
    • platform: API 9~23
    • cpu: ARMv7a, ARM64v8a, x86 (ARMv5 is not tested on real devices)
    • api:MediaPlayer-like
    • video-output: NativeWindow, OpenGL ES 2.0
    • audio-output: AudioTrack, OpenSL ES
    • 硬件解码器: MediaCodec (API 16+, Android 4.1+)
    • 后端选择: android.media.MediaPlayer, ExoPlayer
  • iOS
    • platform: iOS 6.0~9.3.x
    • cpu: armv7, arm64, i386, x86_64, (armv7s is obselete)
    • api: MediaPlayer.framework-like
    • video-output: OpenGL ES 2.0
    • audio-output: AudioQueue, AudioUnit
    • 硬件解码器 : VideoToolbox (iOS 8+)
    • 后端选择 : AVFoundation.Framework.AVPlayer, MediaPlayer.Framework.MPMoviePlayerControlelr (obselete since iOS 8)

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
  • 如果你喜欢更多的codec/format
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
  • 对于Ubuntu/Debian用户
# 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.7.5

./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.7.5

./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)
#