當前位置:首頁 » 編程軟體 » mac編譯ffmpeg

mac編譯ffmpeg

發布時間: 2022-05-30 07:34:27

Ⅰ mac 怎麼移除安裝的ffmpeg

首先在FFmpeg官網下載一個版本,在「FFmpeg Releases」一欄下選擇一個版本:

然後,直接進行解壓。打開OS X的Terminal,使用cd命令進入該項目目錄。

如果你的OS X使用了最新的XCode 4.3.x或更新版本,那麼所有編譯工具均以沙盒狀態呈現,即沒有注冊到系統環境,因此不能直接通過命令行進行編譯。此時需要進入

即Mac開發者主頁。使用開發者帳號登陸(即便沒有支付過99$成為iDP或mDP都沒有關系),然後找到「Additional Downloads」一覽,點擊「View all downloads」。最後選擇最新版本的「Command Line Tools for XCode」進行下載。

下載完後直接安裝即可。

然後可以使用命令行進行編譯。由於Apple現在已經棄用老陳的GCC而使用更為先進的LLVM CLang,因此我們可以直接使用CLang進行編譯。我們可以先用命令——clang --version

來查看clang編譯器的版本信息,並確定其有效性。

隨後,我們輸入命令——./configure --cc=clang --disable-asm

這里使用--cc選項來選擇編譯器使用clang;而--disable-asm用來禁止所有牽涉到匯編文件的匯編,因為Apple的LLVM自帶的匯編器可能與GCC的默認風格有些不同。

成功後,我們再輸入命令——make

最後再輸入命令——sudo make install

輸入登機密碼即可。

最後會生成一個ffmpeg可執行文件在當前工程目錄中。

Ⅱ 如何編譯ffmpeg以支持dshow設備 相關文章

解決方案:
1. 從htt p:/ /sourceforg e.n et/projects/mingw-w64/下載mingw-w64-headers,我這里用的是mingw-w64-headers-20100717.tar.xz
2. 把mingw-w64-headersinclude目錄下的strmif.h、rpcndr.h、uuids.h、ksuuids.h、control.h拷貝到MinGWinclude,覆蓋原有文件。
3. 打開strmif.h,刪掉所有」__MINGW_EXTENSION」。
4. 打開rpcndr.h,刪掉所有」__MINGW_EXTENSION」,並在第81行」typedef int ssize_t;」的前後分別加上」#ifdef _SSIZE_T_」和」#endif」。
5. 打開vmr9.h,查找」MixerPref9_RenderTargetMask = 0x000FF000″一行,在後面加上」,」;查找」wchar_t szDescription[512]「,在後面加上」;」。(這個最莫名其妙了,原作者居然都沒加)
6. 打開Windows SDK的wmr9.h,把介面都添到MinGW的vmr9.h中。
至此,DShow相關的東西就可以用MinGW編譯了!

Ⅲ ios下 怎麼在代碼中調用ffmpeg的命令

ffmpeg是一個多平台多媒體處理工具,處理視頻和音頻的功能非常強大。目前在網上搜到的iOS上使用FFMPEG的資料都比較陳舊,而FFMPEG更新迭代比較快; 且網上的講解不夠詳細,對於初次接觸FFMPEG的新手(例如我)來說確實不太好使用。為了防止忘記,這里對iOS下使用FFMPEG做一個總結。

1. FFMPEG層次結構的簡單理解
要使用FFMPEG,首先需要理解FFMPEG的代碼結構。根據志哥的提示,ffmpeg的代碼是包括兩部分的,一部分是library,一部分是tool。api都是在library裡面,如果直接調api來操作視頻的話,就需要寫c或者c++了。另一部分是tool,使用的是命令行,則不需要自己去編碼來實現視頻操作的流程。實際上tool只不過把命令行轉換為api的操作而已。

2. 預熱-在mac os下使用ffmpeg
在mac os下使用ffmpeg比較簡單,可以直接使用命令行來操作。首先安裝ffmpeg,這里默認系統已經安裝好brew,只需要在終端上輸入:
brew install ffmpeg
等待安裝結束即可。
安裝結束後,嘗試以下命令:
ffmpeg -i input.mp4 output.avi
如果能順利轉換,表明安裝成功

3. 編譯能在iOS下使用的FFMPEG library庫
這一步是編譯1所說的library,編譯好之後可以調用FFMPEG的api。網上有一些方法,但都要自己手動編譯,稍顯復雜而且比較陳舊。按照app store的需求,編譯出來的包還必須支持arm64。我在萬能的github中找到一個能夠"一鍵編譯"的腳本,地址如下:
https://github.com/kewlbear/FFmpeg-iOS-build-script
而且寫這個腳本的歪果仁挺好人,更新很及時,已經更新到了最新的2.5.3版本。下載下來,只有一個build-ffmpeg.sh腳本文件。在終端中轉至腳本的目錄,執行命令:
./build-ffmpeg.sh
腳本則會自動從github中把ffmpeg源碼下到本地並開始編譯。
編譯結束後,文件目錄如下:

其中,ffmpeg-2.5.3是源碼,FFmpeg-iOS是編譯出來的庫,裡面有我們需要的.a靜態庫,一共有7個。
執行命令:
lipo -info libavcodec.a
查看.a包支持的架構,這幾個包都支持了armv7 armv7s i386 x86_64 arm64這幾個架構,這個腳本果真是業界良心啊~~~

4.在xcode中引入FFMPEG library庫
新建工程,把上面編譯好的FFmpeg-iOS拖到xcode工程中,添加一個頭文件引用

#include "avformat.h"
添加一個api語句:

av_register_all();
添加一個空的類,把執行文件.m後綴改為.mm,開啟混編模式。
添加相應的framework,包括avfoundation和coremedia。
運行工程,如果沒有報錯,則表明編譯成功。

5.在xcode項目中使用命令行
執行到第4步,已經可以使用library庫了。但是如果要對視頻進行操作,還是需要手動寫很多代碼去調用api,工作量較大,自然不如直接寫命令行方便。為了命令行能夠在xcode工程中使用,還需要做以下工作:
(1)添加源碼中的tools,具體文件包括:


(2)添加Header Search Paths
在target--build setting中搜索Header Search Paths,並在Header Search Paths下面添加源碼ffmpeg-2.5.3和scratch的路徑。
(3)修改ffmpeg.h和ffmpeg.c源碼

如果此時run這個工程,則會報錯,原因是工程裡面有2個main函數,此時處理方法為:
在ffmpeg.h中添加一個函數聲明:
int ffmpeg_main(int argc, char **argv);
在ffmpeg.c中找到main函數,把main函數改為ffmpeg_main。
(4)調用命令行範例
添加頭文件:#import "ffmpeg.h"
調用命令行
int numberOfArgs = 16;
char** arguments = calloc(numberOfArgs, sizeof(char*));

arguments[0] = "ffmpeg";
arguments[1] = "-i";
arguments[2] = inputPath;
arguments[3] = "-ss";
arguments[4] = "0";
arguments[5] = "-t";
arguments[6] = rationChar;
arguments[7] = "-vcodec";
arguments[8] = "";
arguments[9] = "-acodec";
arguments[10] = "aac";
arguments[11] = "-strict";
arguments[12] = "-2";
arguments[13] = "-b:a";
arguments[14] = "32k";
arguments[15] = outputPath;

int result = ffmpeg_main(numberOfArgs, arguments);
其中inputpath和outputpath是文件路徑。經測試,這兩個路徑不支持asset-library://協議和file:// 協議,所以如果是要用相冊的文件,我目前的解決辦法是把它拷貝到沙盒裡面。

6. 改關閉進程為關閉線程
如果順利進行到了第5步,在app中是能夠用命令行處理視頻了,但會出現一個問題,app會退出。經肖大神提醒,發現了命令行執行完畢之後會退出進程。而iOS下只能啟動一個進程,因此必須改關閉進程為關閉線程,或者直接把關閉進程的方法給注掉。

在ffmpeg.c中可以看到,執行退出進程的方法是exit_program,定位到了cmtils.c中執行了c語言的exit方法。這里我將它改為了pthread_exit(需要添加#include 頭文件)。在xcode項目中使用時,則可以用NSThread來新開一個線程,執行完畢之後,把線程關閉了即可。再使用NSThreadWillExitNotification通知,即可監聽線程退出的情況。

7. 修復ffmpeg.c裡面的一個bug
在實際項目中,可能需要多次調用命令行,但在多次調用命令行的過程中,發現ffmpeg.c的代碼中會訪問空屬性導致程序崩潰。逐步debug後發現,很多指針已經置空了,但它們的計數卻沒有置零,不知道是不是ffmpeg.c的一個bug。修復方法如下:在ffmpeg_cleanup方法下,將各個計數器置零,包括:
nb_filtergraphs
nb_output_files
nb_output_streams
nb_input_files
nb_input_streams
置零之後,重復使用ffmpeg_main方法一切正常。

Ⅳ ios 怎麼配置編譯ffmpeg

一、系統環境

MAC OS X Mountain Lion 10.8.3、 XCode 5.1

二、編譯FFMpeg

1、下載ffmpeg2.2.5版本代碼,並解壓。

2、下載並解壓gas-preprocessor.pl (附件中有,zip格式,因網易博客不能上傳zip後綴的文件,故加了個.rar)

在終端中使用cp命令將它復制到 /usr/sbin/目錄,並賦予可執行許可權。

sudo cp -f gas-preprocessor/gas-preprocessor.pl /usr/sbin/chmod +x /usr/sbin/gas-preprocessor.pl

3、在ffmpeg目錄下創建一個config.sh腳本

#!/bin/bash
SDKVERSION="7.1"

ARCHS="armv7 armv7s i386"

DEVELOPER=`xcode-select -print-path`

cd "`dirname "$0"`"
REPOROOT=$(pwd)

# where we will store intermediary builds
INTERDIR="${REPOROOT}/built"
mkdir -p $INTERDIR

########################################
# Exit the script if an error happens

for ARCH in ${ARCHS}
do
if [ "${ARCH}" == "i386" ];
then
PLATFORM="iPhoneSimulator"
EXTRA_CONFIG="--arch=i386 --disable-asm --enable-cross-compile --target-os=darwin --cpu=i386"
EXTRA_CFLAGS="-arch i386"
EXTRA_LDFLAGS="-I${DEVELOPER}/Platforms/${PLATFORM}.platform/Developer/SDKs/${PLATFORM}${SDKVERSION}.sdk/usr/lib"
else
PLATFORM="iPhoneOS"
EXTRA_CONFIG="--arch=arm --target-os=darwin --enable-cross-compile --cpu=cortex-a9 --disable-armv5te"
EXTRA_CFLAGS="-w -arch ${ARCH}"
fi

mkdir -p "${INTERDIR}/${ARCH}"

./configure --prefix="${INTERDIR}/${ARCH}"
--disable-neon
--disable-armv6
--disable-armv6t2
--disable-ffmpeg
--disable-ffplay
--disable-ffprobe
--disable-ffserver
--disable-iconv
--disable-bzlib
--enable-avresample
--sysroot="${DEVELOPER}/Platforms/${PLATFORM}.platform/Developer/SDKs/${PLATFORM}${SDKVERSION}.sdk"
--cc="${DEVELOPER}/Toolchains/XcodeDefault.xctoolchain/usr/bin/clang"
--as='/usr/local/bin/gas-preprocessor.pl'
--extra-cflags="${EXTRA_CFLAGS} -miphoneos-version-min=${SDKVERSION}"
--extra-ldflags="-arch ${ARCH} ${EXTRA_LDFLAGS} -isysroot /Applications/Xcode.app/Contents/Developer/Platforms/${PLATFORM}.platform/Developer/SDKs/${PLATFORM}${SDKVERSION}.sdk -miphoneos-version-min=${SDKVERSION}" ${EXTRA_CONFIG}
--enable-pic
--extra-cxxflags="$CPPFLAGS -isysroot ${DEVELOPER}/Platforms/${PLATFORM}.platform/Developer/SDKs/${PLATFORM}${SDKVERSION}.sdk"

make && make install && make clean

done

mkdir -p "${INTERDIR}/universal/lib"

cd "${INTERDIR}/armv7/lib"
for file in *.a
do

cd ${INTERDIR}
xcrun -sdk iphoneos lipo -output universal/lib/$file -create -arch armv7 armv7/lib/$file -arch armv7s armv7s/lib/$file -arch i386 i386/lib/$file
echo "Universal $file created."

done
cp -r ${INTERDIR}/armv7/include ${INTERDIR}/universal/

echo "Done."

SDKVERSION 是XCode的版本,通過`xcode-select -print-path`來獲取XCode的安裝路徑,ARCHS是編譯的三種模式,接下來在終端中cd到ffmpeg目錄,./config.sh執行就可以編譯了。等到編譯完成後,在ffmpeg目錄下會多出一個built目錄,裡面分別是armv7 armv7s i386及三個合並的universal版本了。

Ⅳ 為什麼ffmpeg只有windows和macox下的庫沒有linux的庫

那隻有那個和下側庫沒有那個的酷,我覺得這個沒有可能,還是因為廠家的問題吧,廠家沒有給你完就都放就沒有唄,你可以全的用不了那隻有那個和下側庫沒有那個的酷,我覺得這個沒有可能,還是因為廠家的問題吧,廠家沒有給你完就都放就沒有唄,你可以全的用

Ⅵ ffmpeg 編譯好的 怎麼用

FFmpeg在Windows系統下的編譯過程,分四步:
如下:
1. 配置編譯環境
2. 下載FFMPEG的代碼
3. 編譯,獲取FFMPEG庫(頭文件,lib,和DLL)
4. 在VC下配置,測試
1. 配置編譯環境
1)安裝MSys
下載文件:
bash-3.1-MSYS-1.0.11-snapshot.tar.bz2
msysCORE-1.0.11-20080826.tar.gz
解壓msysCORE-1.0.11-20080826.tar.gz,比如解壓到X:\msys(以下內容都使用該路徑描述,X為你安裝的盤符)。
解壓bash-3.1-MSYS-1.0.11-snapshot.tar.bz2,產生一個名為bash-3.1的目錄,在該目錄下有一個子目錄名為bin,其他的目錄不需要關心。復制bin目錄中的所有文件到D:\msys\bin,提示是否要覆蓋sh.exe的時候,選擇是。
到「D:\msys\postinstall」目錄下執行pi.bat,在出現的提示中輸入n回車後(這個不搞錯了),按任意鍵退出即可。
2)安裝MinGW

Ⅶ 如何編譯ffmpeg以支持dshow設備

fmpeg已經能支持dshow設備了!
但編譯時會遇到一些麻煩.在此把我的編譯歷程總結一下,以使後來者的心靈免遭蹂躪.
先說一下我的編譯環境:
mingw+msys,ffmpeg用最新版.
在configure ffmpeg工程時,如果不特別指定,默認fdshow設備是被支持的,但編譯後卻沒有.可以查看configure的日誌文件,會發現找不到一些依賴的頭文件.所以最終編譯出來的ffmpeg.exe,
用ffmpeg -formats來看,在indev一項中,一般只有vfwcap,而沒有dshow.

Ⅷ 如何在MAC上編譯FFMpeg-CSDN論壇

編譯mac 上基於ffmepg的軟體需要先下載兩個程序:iFrameExractor和ffmpeg
編譯步驟:
1、在終端下: cd /iFrameExtractor/ffmpeg 建議開始就執行 sudo -s (獲取許可權命令)
2、在終端下輸入 ./configure --prefix=/iFrameExtractor/ffmpeg --libdir=iFrameExtractor/ffmpeg/lib --enable-gpl --enable-static --disable-shared --enable-swscale --enable-zlib --enable-bzlib --disable-ffmpeg --disable-ffplay --disable-ffserver --enable-pthreads
3、執行make 這里會有一堆的編譯情況。
註:最好先升級Command Line Tools,避免編譯錯誤
4、執行make install。 (執行完後 到iFrameExtractor/ffmpeg/lib文件上去看看)
出現 libavcodec libavdevice libavformat libavutil libswscale5個.a文件
5、用xcode 打開iFrameExractor工程,確認Header Search Paths里有:"$(SRCROOT)/ffmpeg"路徑。 $(SRCROOT)表示工程路徑。同時可以看到iFrameExractor工程下ffmpeg文件下的.a文件都不是紅色的了。
6、真機上編譯(模擬器上i386,真機上是arm的,真機還分arm6 和arm7

以下是針對arm7的
/configure --disable-doc --disable-ffmpeg --disable-ffplay --disable-ffserver --enable-cross-compile --arch=arm --target-os=darwin --cc=/Developer/Platforms/iPhoneOS.platform/Developer/usr/bin/gcc --as='gas-preprocessor/gas-preprocessor.pl /Developer/Platforms/iPhoneOS.platform/Developer/usr/bin/gcc' -- sysroot=/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS5.0.sdk --cpu=cortex-a8 --extra-cflags='-arch armv7' --extra-ldflags='-arch armv7 -isysroot /Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS5.0.sdk' --enable-pic
7、執行 make 和make install 就有上面的幾個.a文件,至此編譯結束。

Ⅸ 如何在MAC下編譯出32位的ffmpeg庫

你的系統應該是64位的,但是如果你的XCode也是64位的就有可能出錯,XCode3.2以後的版本都是64位的,想編譯成32位的,試試用XCode3.0

Ⅹ 為什麼ffmpeg只有windows和macox下的庫沒有linux的庫

linux下可以使用包管理工具或者編譯安裝
比如apt yum等
編譯安裝使用源碼

熱點內容
逗號幫手體驗密碼是多少 發布:2024-05-21 09:31:44 瀏覽:130
vb資料庫excel 發布:2024-05-21 09:18:57 瀏覽:319
資本論第一卷中央編譯局 發布:2024-05-21 09:06:21 瀏覽:67
我的世界多人游戲伺服器有哪些 發布:2024-05-21 09:02:48 瀏覽:590
社保計算編程 發布:2024-05-21 08:52:49 瀏覽:530
船用空氣壓縮機 發布:2024-05-21 08:49:11 瀏覽:186
oppo怎麼查密碼是多少 發布:2024-05-21 08:48:28 瀏覽:140
我的世界伺服器怎麼禁用傳送 發布:2024-05-21 08:35:51 瀏覽:107
python程序設計基礎 發布:2024-05-21 08:34:06 瀏覽:303
csql類 發布:2024-05-21 08:19:38 瀏覽:414