zoukankan      html  css  js  c++  java
  • ubuntu12.10+NDK r9 编译 ffmpeg 的一些参考资料Perhaps you should add the directory containing `libssl.pc'

    首先入门级的 编译宝典:

    https://trac.ffmpeg.org/wiki/CompilationGuide/Android

    http://www.roman10.net/how-to-build-ffmpeg-with-ndk-r9/

    二进制文件+so库:

    https://github.com/cine-io/android-ffmpeg-with-rtmp

    一个利用二进制可执行文件的例子:

    https://github.com/vanevery/Android-MJPEG-Video-Capture-FFMPEG

     build_android.sh参数配置参考:http://www.cnblogs.com/ohmytime/archive/2013/05/12/ffmpeg-build-help.html 

    参数参考:http://www.cnblogs.com/ohmytime/archive/2013/05/12/ffmpeg-build-help.html

     其次,确定你本地的 ssh正确生成并添加到了你的github的ssh 管理列表中,下面编译需要使用。

    我的rsa:参考:http://blog.csdn.net/wide288/article/details/21003749

    ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQDC/1KQiZR/lTMYOKSUajVK/KRyn3oTOC8sIhNztoxvN36mL/B2u3bx8pUNfaFIoAQ709QDOybfXY54IbeLDr6NVzoqFpkptjB/GSG2hLoOyt4tlkfLMtFLm0OC+QjKa6b4RMdNeKUof5Qx7xvJ6E7dn7yfK4Mzt9y8RE1IF0VxJJW/RIsfgT0i9tUXXPT5Hh2DOzaT/Wza+8PeBY3NfnpoG7Yejjld9xeSV2NLLj6kbmZpBDiPDlJc1DMlcWr90VlrKWURVVEMuMbMgDE7e855hBJJMde5HMeW6xEQwuX8riCbu1rNzQam/awHj/FgMWnaZakllzPyfNdiZZhWdL9r 302940116@qq.com

    这个环境的private key 我忙了一晚上 参考:https://help.github.com/articles/error-permission-denied-publickey/(从上到下一个一个验证就行)

    注意点: 1.如果 在生成ssh 的时候 你给的 文件名成不是 id_rsa ,后重命名的 ssh agent 是没有的,

        解决办法:进行添加

        ssh-add $HOME/.ssh/id_rsa

         

    下面让我们来运行https://github.com/cine-io/android-ffmpeg-with-rtmp的例子

    1. 下载压缩包解压 (目录随意)

    2. cd android-ffmpeg-with-rtmp

    3.修改build.sh中的几个参数为你自己的路径:

        

    #-- try to intelligently determine where the Android NDK is installed
    function find_ndk {
    ndk_name="android-ndk-r9"//你的ndk存在本地的文件夹名
    top_level_paths_to_search="/home/poe"//你的桌面$HOME路径
    found_ndk=""
    for d in $top_level_paths_to_search; do
    test -d "$d" || continue
    found_ndk=$(find $d -name $ndk_name -print)
    test "$found_ndk" && break
    done
    echo "$found_ndk"
    }

    # create our configuration file if it doesn't yet exist
    if [ ! -f "${config_file}" ]; then
    # determine OS and architecture
    OS_ARCH=$(uname -sm | tr 'A-Z' 'a-z' | sed "s/ /-/g")

    # find / ask for the NDK
    echo "Looking for the NDK ..."
    NDK=$(find_ndk)
    echo -n "Path to NDK [$NDK]: "
    read typed_ndk_root
    test "$typed_ndk_root" && NDK="$typed_ndk_root"

    # save our configuration
    echo "Saving configuration into ${config_file} ..."
    echo "OS_ARCH=$OS_ARCH" > ${config_file}
    echo "NDK=$NDK" >> ${config_file}
    echo "SYSROOT=${NDK}/platforms/android-18/arch-arm" >> ${config_file}//因为我的是ndk-r9 所以没有android-19此处改为18
    echo "TOOLCHAIN=${NDK}/toolchains/arm-linux-androideabi-4.8/prebuilt/${OS_ARCH}" >> ${config_file}
    fi

    继续./build.sh

    open_ssl编译通过

    open_rtmp编译通过

    open_ffmpeg 不同过,查看 build/build.log 拖到底

    patching file configure
    Hunk #1 succeeded at 2727 (offset 58 lines).
    Package libssl was not found in the pkg-config search path.
    Perhaps you should add the directory containing `libssl.pc'
    to the PKG_CONFIG_PATH environment variable
    Package 'libssl', required by 'librtmp', not found
    Package libssl was not found in the pkg-config search path.
    Perhaps you should add the directory containing `libssl.pc'
    to the PKG_CONFIG_PATH environment variable
    Package 'libssl', required by 'librtmp', not found
    ERROR: librtmp not found

    If you think configure made a mistake, make sure you are using the latest
    version from Git. If the latest version fails, report the problem to the
    ffmpeg-user@ffmpeg.org mailing list or IRC #ffmpeg on irc.freenode.net.
    Include the log file "config.log" produced by configure as this will help
    solve the problem.

    根据以上提示我们在编译openssl的时候缺少了libssl.pc这个pkgconfig的文件,

    按照提示我们需要把对应的包管理类拷贝到 你的PKG_CONFIG_PATH

    (user/lib/pkgconfig)

    文件参考这里:http://www.opensource.apple.com/source/OpenSSL098/OpenSSL098-27/pkgconfigs/ 

    把这几个文件

     

    都拷贝到上面路径。

    删除已经编译的缓存

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

    编译通过!
    .
    ├── 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
    

     通过解压demo解压到制定内部文件目录发现二进制文件ffmpeg只有200k,发现无法运行。

     http://blog.csdn.net/sxsj333/article/details/6929487

    费解了,直接在 ubuntu系统执行也提示我无法执行,那么肯定是编译时候的问题了。

    仔细研究参数从新编译:

    我只要动态库,--disable-static

            --enable-shared

    http://www.cnblogs.com/ohmytime/archive/2013/05/12/ffmpeg-build-help.html

  • 相关阅读:
    Shell入门教程:命令替换 $() 和 ``
    CentOS启用sudo,禁用root远程登录
    .htaccess 基础教程(四)Apache RewriteCond 规则参数
    .htaccess 基础教程(三)RewriteCond标志符,RewriteRule适用的标志符
    .htaccess 基础教程(二)
    .htaccess 基础教程(一)
    phpMyAdmin 个性化设置,字体大小设置,去掉“以树形显示数据库”,禁用“发送错误报告”
    PHP的$_SERVER['PHP_SELF']造成的XSS漏洞攻击及其解决方案
    PHP变量作用域(花括号、global、闭包)
    获取PHP文件绝对地址$_SERVER['SCRIPT_FILENAME'] 与 __FILE__ 的区别
  • 原文地址:https://www.cnblogs.com/poe-blog/p/4024179.html
Copyright © 2011-2022 走看看