polarssl編譯
1. 請教如何使用cygwin編譯ffmpeg靜態庫
如何使用ndk為ffmpeg編譯rtmp+polarssl靜態庫?這個問題花了我整整一天時間。其中遇到很多小問題,這里記錄一下,方便自己也方便其他人。
1、編譯polarssl,查看其Readme文件即可,不需要configure,只需要make時帶上必要的參數即可,不過要記得在每一次執行make命令時都帶上CC的參數(指向你的arm gcc),因為我試過在make install時沒有帶上CC的參數,雖然能編譯出polarssl但是未能正確被rtmp引用到。
2、因為前面我用的polarssl是當前最新(1.3.7)版本,而librtmp使用的好像是polarssl1.0.0以下版本的api,所以需要修改rtmp部分源碼,讓其調用新版polarssl的api,這里的修改可以參照《Migrating from PolarSSL-1.2 to the PolarSSL 1.3 branch》和《[rtmpmp] branch master updated. a312ac7 Fix compat with PolarSSL >= 1.1.0》。
3、出現 undefined reference to `havege_random』錯誤,這里是因為polarssl默認關閉了havege模塊,需要你手動開啟,主要就是修改include/polarssl/config.h,去掉POLARSSL_HAVEGE_C前的注釋,也就是要定義POLARSSL_HAVEGE_C,如下:
#define POLARSSL_HAVEGE_C
4、在編譯出上面兩個庫之後,可以開始編譯ffmpeg(2.1.1版本)了,如果遇到下面的問題 check_pkg_config librtmp librtmp/rtmp.h RTMP_Socket
ERROR: librtmp not found
這里有三種解決方法:
第一種,因為是網路上傳播最多的,算是比較簡便的方法,就是修改ffmpeg的configure,將以下一行:
enabled librtmp && require_pkg_config librtmp librtmp/rtmp.h RTMP_Socket
改為:
enabled librtmp && require librtmp librtmp/rtmp.h RTMP_Socket -lrtmp -lpolarssl -lz
或者直接注釋掉&& *** 部分,然後再自己加上librtmp的庫路徑也行
第二種,(比較推薦,因為解決了這個會順帶解決大部分找不到庫的錯誤!)因為這里使用了pkg-config工具查找庫,而這個工具ndk並沒有附帶提供,而出現check_pkg_config相關錯誤的話,只要稍加註意,會發現在使用configure配置ffmpeg的交叉編譯時,已經有相應的pkg-config不存在的警告了。我對這個工具不熟悉,所以我只是簡單地加上了一個軟鏈接到系統的pkg-config,如下:
ln -s /usr/bin/pkg-config /home/cidy0106/android-ndk-r9d/toolchains/arm-linux-androideabi-4.8/prebuilt/linux-x86_64/bin/arm-linux-androideabi-pkg-config
這個時候重新configure的話可能會出現找不到polarssl庫的錯誤提示,需要修改一下librtmp安裝目錄里的librtmp.pc,把以下內容:
Libs: -L${libdir} -lrtmp -lz
改為:
Libs: -L${libdir} -lrtmp -lz -lpolarssl
至此,就可以正確編譯出ffmpeg了
2. polarssl 與 openssl 編譯出來的 a 文件怎麼體積差別那麼大
第一用靜態編譯;第二就是在演算法上,盡量的減少羅嗦的代碼,能寫子程序的就寫子程序。其他的,好像沒有了吧。呵呵。
3. 求教高手:如何在NDKr5下用單獨的靜態庫編譯
何使用ndkffmpeg編譯rtmp+polarssl靜態庫問題花我整整間其遇問題記錄便自便其 一、編譯polarssl查看其Readme文件即需要configure需要make帶必要參數即要記每執行make命令都帶CC參數(指向arm gcc)我試make install沒帶CC參數雖能編譯polarssl未能確rtmp引用 二、前面我用polarssl前新(一.三.漆)版本librtmp使用像polarssl一.0.0版本api所需要修改rtmp部源碼讓其調用新版polarsslapi修改參照《Migrating from PolarSSL-一.二 to the PolarSSL 一.三 branch》《[rtmpmp] branch master updated. a三一二ac漆 Fix compat with PolarSSL >= 一.一.0》 三、現 undefined reference to `havege_random』錯誤polarssl默認關閉havege模塊需要手啟主要修改include/polarssl/config.h掉POLARSSL_HAVEGE_C前注釋要定義POLARSSL_HAVEGE_C: #define POLARSSL_HAVEGE_C 四、編譯面兩庫始編譯ffmpeg(二.一.一版本)遇面問題 check_pkg_config librtmp librtmp/rtmp.h RTMP_Socket ERROR: librtmp not found 三種解決: 第種中國絡傳播算比較簡便修改ffmpegconfigure行: enabled librtmp && require_pkg_config librtmp librtmp/rtmp.h RTMP_Socket 改: enabled librtmp && require librtmp librtmp/rtmp.h RTMP_Socket -lrtmp -lpolarssl -lz 或者直接注釋掉&& *** 部再自加librtmp庫路徑行 第二種(比較推薦解決順帶解決部找庫錯誤)使用pkg-config工具查找庫工具ndk並沒附帶提供現check_pkg_config相關錯誤要稍加註意發現使用configure配置ffmpeg交叉編譯已經相應pkg-config存警告我工具熟悉所我簡單加軟鏈接系統pkg-config: ln -s /usr/bin/pkg-config /home/cidy0一0陸/android-ndk-r9d/toolchains/arm-linux-androideabi-四.吧/prebuilt/linux-x吧陸_陸四/bin/arm-linux-androideabi-pkg-config 候重新configure能現找polarssl庫錯誤提示需要修改librtmp安裝目錄librtmp.pc,內容: Libs: -L${libdir} -lrtmp -lz 改: Libs: -L${libdir} -lrtmp -lz -lpolarssl 至確編譯ffmpeg 轉
4. 如何用Android NDK編譯FFmpeg
如何使用ndk為ffmpeg編譯rtmp+polarssl靜態庫?這個問題花了我整整一天時間。其中遇到很多小問題,這里記錄一下,方便自己也方便其他人。1、編譯polarssl,查看其Readme文件即可,不需要configure,只需要make時帶上必要的參數即可,不過要記得在每一次執行make命令時都帶上CC的參數(指向你的armgcc),因為我試過在makeinstall時沒有帶上CC的參數,雖然能編譯出polarssl但是未能正確被rtmp引用到。2、因為前面我用的polarssl是當前最新(1.3.7)版本,而librtmp使用的好像是polarssl1.0.0以下版本的api,所以需要修改rtmp部分源碼,讓其調用新版polarssl的api,這里的修改可以參照《MigratingfromPolarSSL-1.2tothePolarSSL1.3branch》和《[rtmpmp]branchmasterupdated.a312ac7FixcompatwithPolarSSL>=1.1.0》。3、出現undefinedreferenceto`havege_random』錯誤,這里是因為polarssl默認關閉了havege模塊,需要你手動開啟,主要就是修改include/polarssl/config.h,去掉POLARSSL_HAVEGE_C前的注釋,也就是要定義POLARSSL_HAVEGE_C,如下:#definePOLARSSL_HAVEGE_C4、在編譯出上面兩個庫之後,可以開始編譯ffmpeg(2.1.1版本)了,如果遇到下面的問題check_pkg_configlibrtmplibrtmp/rtmp.hRTMP_SocketERROR:librtmpnotfound這里有三種解決方法:第一種,因為是網路上傳播最多的,算是比較簡便的方法,就是修改ffmpeg的configure,將以下一行:enabledlibrtmp&&require_pkg_configlibrtmplibrtmp/rtmp.hRTMP_Socket改為:enabledlibrtmp&&requirelibrtmplibrtmp/rtmp.hRTMP_Socket-lrtmp-lpolarssl-lz或者直接注釋掉&&***部分,然後再自己加上librtmp的庫路徑也行第二種,(比較推薦,因為解決了這個會順帶解決大部分找不到庫的錯誤!)因為這里使用了pkg-config工具查找庫,而這個工具ndk並沒有附帶提供,而出現check_pkg_config相關錯誤的話,只要稍加註意,會發現在使用configure配置ffmpeg的交叉編譯時,已經有相應的pkg-config不存在的警告了。我對這個工具不熟悉,所以我只是簡單地加上了一個軟鏈接到系統的pkg-config,如下:ln-s/usr/bin/pkg-config/home/cidy0106/android-ndk-r9d/toolchains/arm-linux-androideabi-4.8/prebuilt/linux-x86_64/bin/arm-linux-androideabi-pkg-config這個時候重新configure的話可能會出現找不到polarssl庫的錯誤提示,需要修改一下librtmp安裝目錄里的librtmp.pc,把以下內容:Libs:-L${libdir}-lrtmp-lz改為:Libs:-L${libdir}-lrtmp-lz-lpolarssl至此,就可以正確編譯出ffmpeg了轉載
5. 如何使用ndk編譯ffmpeg靜態庫
如何使用ndk為ffmpeg編譯rtmp+polarssl靜態庫?這個問題花了我整整一天時間。其中遇到很多小問題,這里記錄一下,方便自己也方便其他人。
1、編譯polarssl,查看其Readme文件即可,不需要configure,只需要make時帶上必要的參數即可,不過要記得在每一次執行make命令時都帶上CC的參數(指向你的arm gcc),因為我試過在make install時沒有帶上CC的參數,雖然能編譯出polarssl但是未能正確被rtmp引用到。
2、因為前面我用的polarssl是當前最新(1.3.7)版本,而librtmp使用的好像是polarssl1.0.0以下版本的api,所以需要修改rtmp部分源碼,讓其調用新版polarssl的api,這里的修改可以參照《Migrating from PolarSSL-1.2 to the PolarSSL 1.3 branch》和《[rtmpmp] branch master updated. a312ac7 Fix compat with PolarSSL >= 1.1.0》。
3、出現 undefined reference to `havege_random』錯誤,這里是因為polarssl默認關閉了havege模塊,需要你手動開啟,主要就是修改include/polarssl/config.h,去掉POLARSSL_HAVEGE_C前的注釋,也就是要定義POLARSSL_HAVEGE_C,如下:
#define POLARSSL_HAVEGE_C
4、在編譯出上面兩個庫之後,可以開始編譯ffmpeg(2.1.1版本)了,如果遇到下面的問題 check_pkg_config librtmp librtmp/rtmp.h RTMP_Socket
ERROR: librtmp not found
這里有三種解決方法:
第一種,因為是網路上傳播最多的,算是比較簡便的方法,就是修改ffmpeg的configure,將以下一行:
enabled librtmp && require_pkg_config librtmp librtmp/rtmp.h RTMP_Socket
改為:
enabled librtmp && require librtmp librtmp/rtmp.h RTMP_Socket -lrtmp -lpolarssl -lz
或者直接注釋掉&& *** 部分,然後再自己加上librtmp的庫路徑也行
第二種,(比較推薦,因為解決了這個會順帶解決大部分找不到庫的錯誤!)因為這里使用了pkg-config工具查找庫,而這個工具ndk並沒有附帶提供,而出現check_pkg_config相關錯誤的話,只要稍加註意,會發現在使用configure配置ffmpeg的交叉編譯時,已經有相應的pkg-config不存在的警告了。我對這個工具不熟悉,所以我只是簡單地加上了一個軟鏈接到系統的pkg-config,如下:
ln -s /usr/bin/pkg-config /home/cidy0106/android-ndk-r9d/toolchains/arm-linux-androideabi-4.8/prebuilt/linux-x86_64/bin/arm-linux-androideabi-pkg-config
這個時候重新configure的話可能會出現找不到polarssl庫的錯誤提示,需要修改一下librtmp安裝目錄里的librtmp.pc,把以下內容:
Libs: -L${libdir} -lrtmp -lz
改為:
Libs: -L${libdir} -lrtmp -lz -lpolarssl
至此,就可以正確編譯出ffmpeg了
轉載
6. ffmpeg 把avi轉換flv怎麼是0kb
ffmpeg版本太舊,用的7年前的版本。支持太少。換新版即可。
我自己編譯的版本,為core2以上cpu優化
ffmpeg version N-57940-g1b3d3a9 Copyright (c) 2000-2013 the FFmpeg developers
built on Nov 6 2013 18:49:29 with gcc 4.7.3 (GCC)
configuration: --prefix=/mingw/i686-w64-mingw32 --enable-version3 --enable-gpl
--enable-nonfree --enable-avisynth --enable-libfaac --enable-libaacplus --enabl
e-libvo-aacenc --enable-libfdk-aac --enable-libmp3lame --enable-libx264 --enable
-librtmp --enable-libvpx --enable-libvorbis --enable-libopus --disable-runtime-c
pudetect --disable-doc --disable-manpages --disable-podpages --disable-txtpages
--enable-cross-compile --target-os=mingw32 --arch=x86 --enable-w32threads --extr
a-cflags='-Ofast -mtune=core2 -fomit-frame-pointer' --extra-libs='-lrtmp -lpolar
ssl -lwinmm -lws2_32 -lgdi32'
libavutil 52. 52.100 / 52. 52.100
libavcodec 55. 41.100 / 55. 41.100
libavformat 55. 21.100 / 55. 21.100
libavdevice 55. 5.100 / 55. 5.100
libavfilter 3. 90.102 / 3. 90.102
libswscale 2. 5.101 / 2. 5.101
libswresample 0. 17.104 / 0. 17.104
libpostproc 52. 3.100 / 52. 3.100
7. polarssl 與 openssl 編譯出來的 a 文件怎麼體積差別那麼大
PolarSSL 1.2.0發布了,這是新的產品系列。2012-10-31 上一個版本是2012-05-31的1.1.4 。越來越多的應用已經從只支持OpenSSL到可以支持PolarSSL。 PolarSSL源碼,也許是最小巧的ssl代碼庫。高效、便於移植和集成。尤其適合嵌入式應用。 支持了TLS 1.2 完全改進: More relevant is what this release will mean for you. First and foremost is the addition of support for TLS 1.2. On a cryptographic front Galois Counter Mode for AES was added, the Blowfish symmetric algorithm and PBKDF2. We have done a lot of internal rework and a number of changes that can impact some of your code.
