美文网首页
Win10、Win11使用WSL编译ijkplayer

Win10、Win11使用WSL编译ijkplayer

作者: 夜明智灵 | 来源:发表于2023-09-07 14:26 被阅读0次

    一、安装适用于Linux的Windows子系统

    1.1 什么是WSL

    Windows Subsystem for Linux(简称WSL)是一个在Windows 10\11上能够运行原生Linux二进制的兼容层。它是由微软与Canonical公司合作开发,其目标是使纯正的Ubuntu、Debian等映像能下载和解压到用户的本地计算机,并且映像内的工具和实用工具能在此子系统上原生运行。

    1.2 先决条件

    必须运行 Win10 版本 2004 及更高版本(内部版本 19041 及更高版本)或 Win11

    1.3 安装WSL(这里的图以win11为例。win10大同小异)

    1、通过快捷键"windows键+R",打开运行窗口,输入:control appwiz.cpl。


    image.png

    2、在打开的控制面板的程序和功能界面,点击左边的“启用或关闭windows功能”。


    image.png

    3、在弹出的“windows功能”窗口中找到“适用于Linux的windows子系统”,勾选中然后点击“确定”。


    image.png

    4、从开始菜单中找到并点击“Microsoft Store”图标并进入windows应用商店。


    image.png

    5、在windows应用商店中搜索“linux”关键字,从结果中选择“在windows上运行Linux”。


    image.png

    6、在新打开的页面中,会显示可以在windows 10上安装的linux系统,选择自己想要安装的一款,然后跟从向导安装。(这里选择了Ubuntu 20.04.5 LTS)


    image.png

    二、安装编译环境

    2.1 配置JDK

    下载linux版本中后缀为 .tar.gz 的包,x86 代表 32 位,x64 代表 64 位。我下载的是 jdk-8u351-linux-x64.tar.gz。
    JDK官方发下载地址 Java Downloads | Oracle 中国

    提升权限

    sudo su
    

    创建工程目录

    mkdir App
    

    进入App文件夹

    cd App
    

    上传 jdk-8u351-linux-x64.tar.gz 到App文件夹。
    解压压缩包

    sudo tar xvf jdk-8u351-linux-x64.tar.gz
    

    解压完成后,打开/etc/profile,在/etc/profile文件里配置JDK的环境变量

    sudo gedit /etc/profile
    

    打开后在该文件的最后一行,添加下面几行

    export JAVA_HOME=/home/liming/App/jdk1.8.0_351
    export JRE_HOME=${JAVA_HOME}/jre  
    export CLASSPATH=.:${JAVA_HOME}/lib:${JRE_HOME}/lib  
    export PATH=${JAVA_HOME}/bin:$PATH 
    
    要注意你的 JAVA_HOME 的路径要配制成你的jdk的目录,需要修改的地方如下图所示 image.png

    关闭/etc/profile文件后,使用下面命令行保存配置,保存了才会生效。

     source /etc/profile
    

    查看是否配置成功

    java -version
    

    如下图显示表示配置成功


    image.png

    2.1 配置SDK

    SDK的配置和JDK的配置大同小异
    下载linux版本的SDK包,将该包放到App文件夹目录下,解压

    sudo tar -zxvf android-sdk_r24.4.1-linux.tgz
    

    解压完成后,打开/etc/profile,在/etc/profile文件里配置SDK的环境变量

    sudo gedit /etc/profile
    

    打开后在该文件的最后一行,添加下面几行:

    export ANDROID_SDK=/home/liming/App/android-sdk-linux
    export PATH=${PATH}:$ANDROID_SDK/tools:$ANDROID_SDK/platform-tools
    

    关闭/etc/profile文件后,使用下面命令行保存配置,保存了才会生效。

     source /etc/profile
    

    2.3 配置NDK

    下载 NDK 10

    wget -c http://dl.google.com/android/ndk/android-ndk-r10e-linux-x86_64.bin
    

    下载好以后,逐次执行以下两条命令进行解压缩,解压结束会提示Everything is Ok

    chmod a+x android-ndk-r10e-linux-x86_64.bin  
    ./android-ndk-r10e-linux-x86_64.bin
    

    如果你是下载的zip后缀的压缩包,使用下面命令行解压缩:

    unzip android-ndk-r10e-linux-x86_64.zip
    

    如果解压失败,可能是权限问题,在上级目录给App文件夹权限:

    chamod 777 -R ndk
    

    解压缩后,打开/etc/profile,在/etc/profile文件里配置NDK的环境变量,命令行:

    sudo gedit /etc/profile
    

    打开后在该文件的最后一行,添加下面几行:

    export ANDROID_NDK=/home/liming/App/android-ndk-r10e
    export PATH=$PATH:$ANDROID_NDK
    

    关闭/etc/profile文件后,使用下面命令行保存配置,保存了才会生效。

     source /etc/profile
    

    查看NDK是否配置成功

    ndk-build -v
    

    以下表示安装成功


    image.png

    三、编译ijkplayer

    3.1 安装git

    sudo apt-get install git
    

    3.2 安装yasm

    sudo apt-get install yasm
    

    3.3 下载 ijkplayer 代码

    sudo git clone https://github.com/Bilibili/ijkplayer ijkplayer-android
    

    3.4 初始化

    初始化可能要花一段时间

    cd ijkplayer-android
    ./init-android.sh
    

    3.5 修改编译配置文件module-default.sh。

    cd config
    

    按需修改module-default.sh内的配置
    常用音频编译方式小结 供参考

    mp3
            --enable-libmp3lame 
         --enable-decoder=mp3 
         --enable-demuxer=mp3 
         --enable-muxer=mp3
         --enable-encoder=libmp3lame
    
    
    支持vorbis
         --enable-libvorbis 
         --enable-parser=vorbis 
         --enable-encoder=vorbis 
         --enable-decoder=vorbis 
         --enable-encoder=libvorbis 
         --enable-decoder=libvorbis 
         --enable-muxer=ogg
         --enable-demuxer=ogg
    
    
    支持wav
            --enable-libwavpack
            --enable-muxer=wav
            --enable-demuxer=wav
            --enable-decoder=wavpack
            --enable-encoder=wavpack
            --enable-decoder=wav
            --enable-encoder=wav
            --enable-encoder=pcm_s16le
            --enable-decoder=pcm_s16le
    
            --enable-encoder=pcm_u8
         --enable-decoder=pcm_u8
         --enable-muxer=pcm_u8
         --enable-demuxer=pcm_u8  
    
    
    支持aac
            --enable-libvo-aacenc
            --enable-libfdk_aac
        --enable-libfaac
        --enable-parser=aac
        --enable-encoder=aac
            --enable-decoder=aac
            --enable-encoder=libfaac
            --enable-encoder=libvo_aacenc
        --enable-encoder=libaacplus
        --enable-encoder=libfdk_aac
        --enable-decoder=libfdk_aac
        --enable-demuxer=aac
        --enable-muxer=adts
    
    
    支持mp2
            --enable-encoder=mp2 
        --enable-decoder=mp2 
        --enable-muxer=mp2 
            --enable-decoder=mp2float 
            --enable-encoder=mp2fixed 
    
    
    flac 支持
        --enable-encoder=flac
            --enable-decoder=flac
            --enable-demuxer=flac
            --enable-muxer=flac
            --enable-parser=flac
    
    
    jpeg等
        --enable-encoder=jpeg2000 
        --enable-encoder=mjpeg 
        --enable-encoder=ljpeg 
        --enable-encoder=jpegls
        --enable-decoder=jpeg2000 
        --enable-decoder=jpegls 
        --enable-decoder=mjpeg 
        --enable-decoder=mjpegb 
        --enable-muxer=mjpeg 
        --enable-demuxer=mjpeg 
        --enable-encoder=png 
        --enable-decoder=png 
        --enable-parser=png 
    
    
    添加scale的支持
        --enable-swscale 
        --enable-swscale-alpha 
        --enable-filter=scale 
    
    
    ac3
        --enable-encoder=ac3 
        --enable-decoder=ac3 
        --enable-encoder=ac3_fixed
        --enable-decoder=atrac3 
        --enable-decoder=atrac3p 
        --enable-encoder=eac3 
        --enable-decoder=eac3 
        --enable-muxer=ac3 
        --enable-demuxer=ac3 
        --enable-muxer=eac3 
        --enable-demuxer=eac3 
    
    
    支持wma/wmv
        --enable-decoder=wmalossless 
        --enable-decoder=wmapro 
        --enable-encoder=wmav1 
        --enable-decoder=wmav1 
        --enable-encoder=wmav2 
        --enable-decoder=wmav2 
        --enable-decoder=wmavoice 
        --enable-demuxer=xwma 
        --enable-demuxer=avi 
        --enable-muxer=avi 
        --enable-demuxer=asf 
        --enable-muxer=asf 
        --enable-encoder=wmv1
        --enable-decoder=wmv1 
        --enable-encoder=wmv2 
        --enable-decoder=wmv2 
        --enable-decoder=wmv3 
        --enable-decoder=wmv3_crystalhd 
        --enable-decoder=wmv3_vdpau 
        --enable-decoder=wmv3image 
    

    3.6 建立软链接。

    rm module.sh
    ln -s module-default.sh module.sh
    

    3.7初始化openssl

    cd ..
    ./init-android-openssl.sh
    

    3.8编译opens

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

    3.9初始化 android

    cd ../..
    ./init-android.sh
    

    3.10编译ffmpeg

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

    3.11编译ijk

    cd ..
    ./compile-ijk.sh all
    

    3.12复制so文件

    cp ijkplayer/ijkplayer-armv5/src/main/libs  ijkplayer-java/src/main/jniLibs
    cp ijkplayer/ijkplayer-armv7a/src/main/libs  ijkplayer-java/src/main/jniLibs
    cp ijkplayer/ijkplayer-arm64/src/main/libs  ijkplayer-java/src/main/jniLibs
    cp ijkplayer/ijkplayer-x86/src/main/libs ijkplayer-java/src/main/jniLibs
    

    最后编译出来的so库在ijkplayer-java/src/main/jniLibs文件下

    相关文章

      网友评论

          本文标题:Win10、Win11使用WSL编译ijkplayer

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