1. 程式人生 > >xcode 中使用ffmpeg 編譯的靜態庫

xcode 中使用ffmpeg 編譯的靜態庫

1、在ffmpeg 官網下載最新的ffmpeg 原始碼:如下

git clone https://git.ffmpeg.org/ffmpeg.git ffmpeg

2、編譯ffmpeg
直接 執行 ./configure 有些mac 會報一些問題
這是本人遇到的情況

Undefined symbols for architecture x86_64:
  "_ff_filters_ssse3", referenced from:
      _put_8tap_smooth_64hv_8_ssse3 in libavcodec.a(vp9dsp_init.o)
      _put_8tap_regular_64hv_8_ssse3 in
libavcodec.a(vp9dsp_init.o) _put_8tap_sharp_64hv_8_ssse3 in libavcodec.a(vp9dsp_init.o) _put_8tap_smooth_64v_8_ssse3 in libavcodec.a(vp9dsp_init.o) _put_8tap_regular_64v_8_ssse3 in libavcodec.a(vp9dsp_init.o) _put_8tap_sharp_64v_8_ssse3 in libavcodec.a(vp9dsp_init.o) _put_8tap_smooth_64h_8_ssse3 in
libavcodec.a(vp9dsp_init.o) ... "_ff_pw_m16364_804", referenced from: l070 in libavcodec.a(vp9itxfm_16bpp.o) l073 in libavcodec.a(vp9itxfm_16bpp.o) l082 in libavcodec.a(vp9itxfm_16bpp.o) l088 in libavcodec.a(vp9itxfm_16bpp.o) l094 in libavcodec.a(vp9itxfm_16bpp.o) l100 in
libavcodec.a(vp9itxfm_16bpp.o) ld: symbol(s) not found for architecture x86_64 clang: error: linker command failed with exit code 1 (use -v to see invocation)

從上面錯誤情況看是vp9 不支援 ,因此用下面編譯方法通過

./configure --disable-decoder=vp9 && make && make install

成功編譯出mac版的ffmpeg 靜態庫。
3、使用xcode 呼叫ffmpeg 靜態庫
建立一個簡單的xcode工程 在General裡的Linked Frameworks and Libraries 裡新增相應的 ffmpeg 靜態庫,同時也要新增相應的框架庫

QuarzCore.framework
CoreMedia.framework
AudioToolbox.framework
CoreFoundation.framework
VideoDecoderAcceleration.framework
VideoToolbox.framework
libz.dylib
libav*.a (ffmepg 的靜態庫)

同時新增ffmpeg 標頭檔案搜尋路徑

相關推薦

Mac OS 下手動編譯靜態Xcode使用該靜態的例子(一)

第一部分 Mac OS 下建立靜態庫 前言 眾所周知,Mac OS實際上是基於UNIX來編寫的,因此它保留了眾多的UNIX原有的特性,就靜態庫而言,仍舊以libXXXX.a來命名。要編譯Mac下的靜態庫,方法有很多,如使用Xcode的建立和編譯,也可以直接使用命令列(可結合

Mac OS 下手動編譯靜態Xcode使用該靜態的例子(二)

前言 在使用Xcode建立app時,通常需要呼叫一些第三方提供的靜態庫,這部分將詳細講述如何呼叫前面我們建立的靜態庫libperson.a。 啟動Xcode並建立一個新的Xcode專案 選擇單示圖應用進行建立 輸入專案名並設定好將要執行的裝置 設定專案要儲存的目錄

xcode 9 上編譯靜態在低版本xcode 可能連結失敗

Xcode 9上編譯的靜態庫在低版本xcode 上編譯有可能提示連結失敗。錯誤:ld: framework not found FileProvider for architecture x86_64 / arm64clang: error: linker command f

Ubuntu ffmpeg編譯靜態和共享

Ubuntu16.04 環境下編譯ffmpeg生成靜態庫和共享庫 基本上按照這個步驟編 Compile FFmpeg on Ubuntu,Debian,or Mint Get the Dependencies sudo apt-get u

ffmpeg的ubuntu的編譯過程(編譯靜態和動態

ffmpeg第一步源碼下載通過git下載git clone https://git.ffmpeg.org/ffmpeg.git ffmpeg或者直接下載wget http://ffmpeg.org/releases/ffmpeg-3.3.tar.bz2如果是下載的ffmpeg-3.3.tar.bz2 需要進

在ubuntu系統下編譯ffmpeg靜態

在ubuntu上配置ffmpeg的開發環境,參考:http://blog.csdn.net/leechee_1986/article/details/41891119 到ffmpeg官網下載ffmpeg的原始碼,解壓,編譯 ./configure --enable-gpl

VS編譯靜態 .lib 其中Release 版本比Debug版本要大好多原因

bug -1 工程 blog 技術分享 其中 logs debug image 如果工程代碼使用了: 把此選項關閉即可減少庫大小不少: VS編譯靜態庫 .lib 其中Release 版本比Debug版本要大好多原因

GCC實現多文件編譯,靜態,動態

blank () iba exp main.c run spa 文件夾 con 一 代碼 //add.h int add(int a, int b); //add.c int add(int a, int b) { r

linux+vs2013編譯靜態和動態

cal 控制 文件 urn 運行時 names c++ spec using Linux下創建與使用靜態庫 Linux靜態庫命名規則 Linux靜態庫命名規範,必須是"lib[your_library_name].a":lib為前綴,中間是靜態庫名,擴展名為.a。 創建靜態

OpenGV Win7 VS2013 Cmake 編譯靜態

bin文件 就是 param 錯誤 uil 這一 ons 出現 pat 最近在實驗室師兄的介紹下看了下OpenGV庫(Open Geometric Vision),在ubuntu16上按照!網站 的方法可以很方便的安裝,就是要主要make的線程數。一開始用make -j4,

如何編譯靜態及將多個.a靜態合併成一個.a靜態

所使用的命令為ar 1 將所有的.a庫解壓成.o檔案ar x xx.a 2 將所有的.o 檔案合併成.aar rcs xx.b *.o 3 編譯.a 靜態庫 1)生成對應的.o 檔案 gcc -c a.c b.c 2)使用ar命令合成靜態庫 ar crs libjson.a *.o 3) 檢視編譯庫

用Makefile編譯靜態檔案和動態檔案

    最近要用到的簽名演算法只給了一堆原始碼沒有給庫檔案,api都不好呼叫,於是嘗試著用Makefile給一堆c原始碼編譯靜態連結庫檔案和動態連結庫檔案。 Makefile檔案編輯的相關資料連結: https://www.cnblogs.com/yya

CMakelist編譯靜態和動態

從程式碼模組化的角度,往往需要將一個系統工程拆分成很多小的模組,編譯成庫函式也是很好的方法。 編譯庫函式的時候,可以選擇編譯成靜態庫或者動態庫。靜態庫對應.a檔案,動態庫對應.so檔案。 還是以氣泡排序為例加以說明。 編寫StaticBubble.h標頭檔

linux 編譯靜態例子--from周立功文件

/* hello1.c */#include <stdio.h>int hello1 (void){printf("hello 1!\n");return 0;}/* hello2.c */#include <stdio.h>int hello2 (void){printf("hell

openssl windows自動編譯+靜態符號缺失問題(/Fd選項)

摘要:     本文描述使用bat指令碼自動編譯openssl1.0.2j的過程,並解釋了使用openssl靜態庫時可能出現的連結告警(warning LNK4099: PDB 'lib.pdb' was not found),原因是其符號檔案lib.pdb缺失,本文提供的編譯

linux 編譯靜態檔案

編譯步驟: gcc -c  *.c 編譯靜態庫 ar  -r libtest.a   *.o 編譯執行檔案 gcc main.c -L  libtest.a  -o main ./main

在VS2015匯入/建立靜態並使用靜態【VS+Qt專案開發系列】

本專案示例原始碼已經上傳,歡迎點選下載~注:靜態庫——在連結步驟中,聯結器將從庫檔案取得所需的程式碼,複製到生成的可執行檔案中,這種庫稱為靜態庫,其特點是可執行檔案中包含了庫程式碼的一份完整拷貝;缺點就是被多次使用就會有多份冗餘拷貝。即靜態庫中的指令都全部被直接包含在最終生成

linux環境下給BOOST編譯靜態加上-fPIC選項

在linux環境下,使用靜態方式編譯boost時,bjam沒有新增-fPIC, 解決辦法如下:  編輯tools/build/v2/tools/gcc.jam檔案,將第391行的 if( $link ) = shared 註釋掉,如下圖:

使用拆分庫的方法解決iOSDuplicate Symbol靜態衝突

在自己寫SDK或者使用第三方庫的時候,可能會遇到編譯時Duplicate Symbol錯誤,本文就是通過使用拆分庫的方法,將庫中衝突的目標檔案去除,以解決此類問題。 遇到此類問題,一般都是兩個庫中包含了相同的目標檔案導致,可以通過去除其中一個庫中的衝突目標檔案來解決。 大致解決思路如下: 檢視庫支援

Qt:Qt 5.* &vs2015 編譯靜態版本

簡介 靜態編譯qt5.6 、靜態編譯qt5.7、 靜態編譯qt5.8 安裝Qt 去Qt官網下載Qt安裝包 安裝Qt和原始碼,一定要勾選source選項 新增bin到系統變數 工具 需要python3和 perl、 vs2015 第三