为android构建 rtc的脚本,包括对 tmodel ( 和 OpenSSL )的支持

・3 分钟阅读

  • 源代码名称: android-ffmpeg-with-rtmp
  • 源代码网址: https://www.github.com/cine-io/android-ffmpeg-with-rtmp
  • android-ffmpeg-with-rtmp的文档
  • android-ffmpeg-with-rtmp的源代码下载
  • Git URL:
    git://www.github.com/cine-io/android-ffmpeg-with-rtmp.git
  • Git Clone代码到本地:
    git clone https://www.github.com/cine-io/android-ffmpeg-with-rtmp
  • Subversion代码到本地:
    $ svn co --depth empty https://www.github.com/cine-io/android-ffmpeg-with-rtmp
                              Checked out revision 1.
                              $ cd repo
                              $ svn up trunk
              
  • android-ffmpeg-with-rtmp

    这个库包含了使用 RTMP ( 和 OpenSSL ) 支持为android构建ffmpeg的脚本。

    命令行指令

    • 安装 Android ( 使用版本克隆测试)。
    • 确保安装了 cURL
    • 确保安装了 pkg配置插件。
    • 将这里存储库和 cd 克隆到它的目录中。
    • 运行 build.sh
    • build/dist 中查找得到的库和可执行文件。
    • 如果出现错误,请在 build/build.log 中查找。

    例如:

    $ git clone git@github.com:cine-io/android-ffmpeg-with-rtmp.git
    $ cd android-ffmpeg-with-rtmp
    $./build.sh

    注释

    第一次运行脚本时,它会尝试查找你adsi的安装位置。 它还将尝试自动检测你的操作系统和体系结构。 这个过程可能需要一两分钟,因此信息将被保存到名为 .build-config.sh的配置文件中,后者将用于后续脚本的执行。

    $ rm -rf src build. build-config.sh
    $./build.sh

    Android

    要在 Android 应用 中使用 ffmpeg,你需要将二进制文件与库一起部署。 下面是 build/dist 目录的列表。

    
    .
    
    
    ├── bin
    
    
    │ ├── ffmpeg
    
    
    │ ├── openssl
    
    
    │ └── ssltest
    
    
    └── lib
    
    
     ├── libavcodec-56.so
    
    
     ├── libavdevice-56.so
    
    
     ├── libavfilter-5.so
    
    
     ├── libavformat-56.so
    
    
     ├── libavutil-54.so
    
    
     ├── libcrypto.so
    
    
     ├── librtmp-1.so
    
    
     ├── libssl.so
    
    
     ├── libswresample-1.so
    
    
     └── libswscale-3.so
    
    
    
    

    部署二进制文件的一种简单方法是归档( 比如, zip ) 这些目录并将归档复制到Android项目的res/raw目录中。 然后在运行时将存档解压到应用程序可以访问的目录中,并设置适当的权限,比如 chmod 750 R 目录名称。

    为了让 Android 应用 使用库,LD_LIBRARY_PATH必须被设置为库所在的位置。 例如:

    // Change the permissionsRuntime.getRuntime().exec("chmod -R 0750 "+ abspath).waitFor();//...ProcessBuilder processBuilder =newProcessBuilder(cmd);finalMap<String, String> environment = processBuilder.environment();
    environment.put("LD_LIBRARY_PATH", context.getDir("lib", 0).getAbsolutePath());Process process = processBuilder.start();//...

    Acknowledgements

    受启发: openssl-android 和 ffmpeg android。

    讨论
    Fansisi profile image