ijkplayer集成使用(一)

本文详细介绍如何在Android项目中集成并使用Bilibili开源的IJKPlayer播放器,包括编译源码、配置环境变量及引入依赖库等步骤。

本篇文章是基于k0.7.7.1进行集成的,如在使用上有出入需要对比版本号

Android/iOS video player based on FFmpeg n3.2, with MediaCodec, VideoToolbox support.

是基于FFMpeg n3.2进行集成的。


ijkplayer是bilibili的一个开源的视频播放器,本篇文章主要讲解如何用ijkplayer播放在线视频。ijkplayer也支持本地视频,方法都大同小异,要是大家有这方面需求的话,可以去官网上下载Demo查看详细说明。

ijkPlayer github地址,跳转


ubuntu编译源码 ,需要NDK,SDK

xport ANDROID_SDK=~/home/ijkplayer/sdk  
export ANDROID_NDK=~/home/ijkplayer/android-ndk-r10e  
export PATH=$PATH:$ANDROID_SDK:$ANDROID_NDK:$ANDROID_SDK/platform-tools/

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

./init-android.sh

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

cd ..
./compile-ijk.sh all


如果 没有什么特殊需求的话,可以直接引入依赖库

app/build.gradle

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

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

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


要想直接集成使用的话,需要引入官司方demo中的几个类。目录结构如下


调用代码部分如下:

        videoView = (IjkVideoView) findViewById(R.id.videoview);
        // init player
        mSettings = new Settings(this);
        IjkMediaPlayer.loadLibrariesOnce(null);
        IjkMediaPlayer.native_profileBegin("libijkplayer.so");
        videoView.setVideoURI(Uri.parse("http://112.253.22.157/17/z/z/y/u/zzyuasjwufnqerzvyxgkuigrkcatxr/hc.yinyuetai.com/D046015255134077DDB3ACA0D7E68D45.flv"));

        videoView.setOnPreparedListener(new IMediaPlayer.OnPreparedListener() {
            @Override
            public void onPrepared(IMediaPlayer mp) {
                videoView.start();
            }
        });


集成完毕,后续还会继续深入学习,大家一起进步。

gitHub 地址:https://github.com/dyoungliuwang/IjkPlayerDemo



ijkplayer款基于ffmpeg的视频直播框架,支持Android和iOS。以下是其在不同平台的集成使用方法: #### iOS集成方法 了解ijkplayer是做视频直播的框架,可在网上查找很多集成说明。基于项目需求,可详细记录在iOS中集成ijkplayer的步骤,以便后续学习保存 [^1]。 #### Android集成方法 - **项目集成**:编译后源码路径为android/ijkplayer/,需集成的部分有ijkplayer-java(必选),ijkplayer-example下widget包下所有代码(必选),ijkplayer-exo(可选)。需要哪种CPU指令类型的so库,可自行选择复制到项目module的jni目录,使用v7a [^3]。 - **用法**:编译文件中有android/ijkplayer/ijkplayer-example的目录,使用其播放器时,需将些配置文件拷到项目中,可在demo中获取相关文件 [^2]。 - **运行示例**:可从github下载zip包并解压,其README文档有依赖项目方法和使用技术等内容。demo路径为ijkplayer-k0.8.0\android\ijkplayer使用android studio导入即可。若未安装NDK,可将现成的.so文件复制到ijkplayer-example\lib里再运行 [^4]。 - **模块导入**:下载的ijkplayer源码工程不能直接集成,需先编译,然后集成编译后生成的子工程,该子工程位于[ijkplayer根目录]/android/ijkplayer。在主工程中使用import module将ijkplayer作为module导入主工程,路径指向编译后的子工程。若觉得其目录结构不合适,可将需要的so库挪到ijkplayer-java的libs目录下,然后删除所有abi对应的module,编译成功即可 [^5]。 以下是个简单的Android使用ijkplayer播放视频的代码示例: ```java import tv.danmaku.ijk.media.player.IjkMediaPlayer; import android.widget.VideoView; public class MainActivity extends AppCompatActivity { private IjkMediaPlayer ijkMediaPlayer; private VideoView videoView; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); videoView = findViewById(R.id.videoView); ijkMediaPlayer = new IjkMediaPlayer(); try { ijkMediaPlayer.setDataSource("your_video_url"); videoView.setMediaPlayer(ijkMediaPlayer); ijkMediaPlayer.prepareAsync(); ijkMediaPlayer.setOnPreparedListener(mp -> { mp.start(); }); } catch (IOException e) { e.printStackTrace(); } } @Override protected void onDestroy() { super.onDestroy(); if (ijkMediaPlayer != null) { ijkMediaPlayer.release(); } } } ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值