windows系統下_ffmpeg編譯_2011年

ffmpeg開源庫在linux系統下弄的,是一個很全的音頻和視頻的編解碼庫要在windows下編譯出用于開發的lib庫確實比linux下要麻煩,百度了很久,參照別人的見解終于成功編譯出自己需要的可以用于開發的庫(dll的形式,附帶dll的lib,靜態庫不會編)?

編譯環境:window xp,vs2008(vs2003也成功編過一次),MinGW+msys百度出來的多數說的比較麻煩,特別是下載一些MinGW+msys的文件,隨著時間的更新,實際上已經沒有那么麻煩了。?

1.首先去下載MinGW,去http://sourceforge.net/搜索mingw,下載一個最新的名字類似于mingw-get-inst-20110802.exe的文件這個文件一般只有幾百K字節,下完以后雙擊運行,按提示安裝,在需要選擇的時候把和C、C++、msys相關的都選上,然后繼續自動安裝,然后需要等待一些時間(因為是下載文件安裝的方式)。。。。MinGW+msys系統便已經安裝好了,我安裝的路徑是C:\MinGW, msys的目錄就是C:\MinGW\msys\1.0,下面都是按此路徑說的(路徑隨便放哪都可以)?

2.編輯C:\MinGW\msys\1.0\msys.bat文件,在最前面加入一行

call "C:\Program Files\Microsoft Visual Studio 9.0\VC\bin\vcvars32.bat"

后面路徑是你機器上安裝了vs200x的對應路徑,加入這行編譯ffmpeg時會多出windows下調用dll對應的lib,方便vs200x調用,好像就看到ffmepg會生產,測試過xvid和x264及一些其他庫都沒生成,ffmpeg太仁慈了。?

3.去ffmpeg的官方網站http://ffmpeg.org/上下載一個最新的版本,此時的版本是0.8,文件很小,應該能很快下載下來,解壓,隨便放哪,我展開目錄是D:\pifu\ffmpeg-0.8\ffmpeg-0.8

注:ffmpeg編譯里面的匯編代碼需要yasm.exe,去yasm官網當一個window合適的最新版本,32bit和64bit不要弄錯了,弄好改名成yasm.exe放到C:\WINDOWS\system32下去(主要是省得加環境變量),最好nasm也弄一個,經常某些庫編譯用的上。不放也無所謂,就是生成的東西不支持匯編,可以速度會很受影響?

4.雙擊C:\MinGW\msys\1.0\msys.bat運行,進入目錄D:\pifu\ffmpeg-0.8\ffmpeg-0.8 它和cmd運行有些區別,右斜杠需要換成左斜杠,然后盤符D:也需要更改/d上面輸入cd /d/pifu/ffmpeg-0.8/ffmpeg-0.8,也可以分部進入如

cd /d

cd pifu

cd ffmpeg-0.8

cd ff*

等等。。。(*號可以替字符)

然后輸入

./configure --enable-shared --disable-static --enable-memalign-hack

等待比較長的時間,界面回到$開頭后輸入

make

等待很長的編譯時間,界面回到$開頭后輸入

make install

編譯過程結束

需要的結果在C:\MinGW\msys\1.0\local目錄下,有對應的頭文件、dll加lib和ffmpeg.exe等運行程序

是不是很簡單。

補充說明:make指令后實際上在ffmpeg目錄里已經有生成的dll和lib了,但是make install指令還是建議要執行 因為它會為你整理好需要的頭文件(太體貼了,自己全拷覺得太多,自己選擇又太麻煩,而且不會正確),然后dll文件會小好幾圈(原理不清楚)。第一個指令./configure加上make和make install三個指令可以在windows下用mingw編譯很多來自于linux的開源庫./configure --help可以看到./configure可以配置那些開關,后面輸錯了或者輸少了沒有關系,msys會提醒你,非常體貼。一般./configure能執行,那么根目錄下都有一個configure文件,可以用wordpad或者其他文檔編輯工具(如UE)打開

D:\pifu\ffmpeg-0.8\ffmpeg-0.8下的configure文件,里面可以找到./configure --help列出的文件。有這么一段

External library support:
? --enable-avisynth??????? enable reading of AVISynth script files [no]
? --enable-bzlib?????????? enable bzlib [autodetect]
? --enable-libcelt???????? enable CELT/Opus decoding via libcelt [no]
? --enable-frei0r????????? enable frei0r video filtering
? --enable-libopencore-amrnb enable AMR-NB de/encoding via libopencore-amrnb [no]
? --enable-libopencore-amrwb enable AMR-WB decoding via libopencore-amrwb [no]
? --enable-libopencv?????? enable video filtering via libopencv [no]
? --enable-libdc1394?????? enable IIDC-1394 grabbing using libdc1394
?????????????????????????? and libraw1394 [no]
? --enable-libdirac??????? enable Dirac support via libdirac [no]
? --enable-libfaac???????? enable FAAC support via libfaac [no]
? --enable-libfreetype???? enable libfreetype [no]
? --enable-libgsm????????? enable GSM support via libgsm [no]
? --enable-libmp3lame????? enable MP3 encoding via libmp3lame [no]
? --enable-libnut????????? enable NUT (de)muxing via libnut,
?????????????????????????? native (de)muxer exists [no]
? --enable-libopenjpeg???? enable JPEG 2000 decoding via OpenJPEG [no]
? --enable-librtmp???????? enable RTMP[E] support via librtmp [no]
? --enable-libschroedinger enable Dirac support via libschroedinger [no]
? --enable-libspeex??????? enable Speex decoding via libspeex [no]
? --enable-libtheora?????? enable Theora encoding via libtheora [no]
? --enable-libvo-aacenc??? enable AAC encoding via libvo-aacenc [no]
? --enable-libvo-amrwbenc? enable AMR-WB encoding via libvo-amrwbenc [no]
? --enable-libvorbis?????? enable Vorbis encoding via libvorbis,
?????????????????????????? native implementation exists [no]
? --enable-libvpx????????? enable VP8 support via libvpx [no]
? --enable-libx264???????? enable H.264 encoding via x264 [no]
? --enable-libxavs???????? enable AVS encoding via xavs [no]
? --enable-libxvid???????? enable Xvid encoding via xvidcore,
?????????????????????????? native MPEG-4/Xvid encoder exists [no]
? --enable-mlib??????????? enable Sun medialib [no]
? --enable-zlib??????????? enable zlib [autodetect]

它們是指ffmpeg本身沒有但可以擴展的的庫,下面就繼續說一下這個?

5.擴展庫,ffmpeg本身不支持MP3的編碼,而我又強烈希望能編MP3

去http://sourceforge.net/搜索lame,此時是第一個,下載下來,仿照上面ffmpeg的步驟執行./configure,make,make install,執行./configure前先--help一下,如果有靜態和動態庫區別,關掉動態庫,選擇靜態庫(當然你也可以不理)執行完以后lame(實際上里面包含了mp3的編碼)的庫就在C:\MinGW\msys\1.0\local下了(庫的輸出路徑

是可以設置的,不過最好不要去找那個麻煩)其它庫也可以同樣的執行,我試過x264 xvid libvo-aacenc libvo-amrwbenc?zlib,前面兩個很容易找到官方網站然后下載,后面的都是去sourceforge上搜的,主要注意./configure的時候加上匯編和線程的支持(如果支持的話)?

然后ffmepg先卸載掉(也可以重新來過),進入目錄D:\pifu\ffmpeg-0.8\ffmpeg-0.8,執行

make uninstall

./configure后面我的參數做為一個例子(下面是沒有回車之類的):

?./configure --enable-shared --disable-static --enable-w32threads --enable-m
emalign-hack --enable-libvo-aacenc --enable-libvo-amrwbenc --enable-libmp3lame -
-enable-zlib --extra-cflags=-I/usr/local/include --extra-ldflags=-L/usr/local/li
b --enable-version3

--extra-cflags和--extra-ldflags是指明調用其它庫的路徑

最后我實際上是沒有加上xvid和x264的。xvid是對mpeg4視頻的編解碼,功能非常強大,ffmpeg對mpeg4的編解其實也是支持的。x264是對h.264編碼,非常高效,ffmpeg沒有對h.264編碼的支持。我沒有加入這兩個庫的理由:我用了x264的vfw的一個版本,然后又用了加了x264支持的ffmpeg庫,在一個進程里debug時碰到斷言錯誤(release版本沒有),所以沒有加入x264,而且x264額外拿出來編碼效率比ffmpeg高,然后我擔憂xvid也可能碰到一樣的情況,就都沒有加入。

說到xvid當你用了xvid就請厭惡divx吧

x264我在CSDN上掛了一個很好的vfw的版本(第一次掛)http://download.csdn.net/source/3463887

適合開發,效率比最新的x264,用mingw編譯出來的要好,而且整理過。可惜沒人下載,估計資源快被刪除了?

6.最后說點不大相關的

生成的dll和lib有好幾組,文件實際上是一樣的,需要取類似avcodec-53.dll和avcodec-53.lib的文件,*.lib的名字

無所謂,但是dll的名字卻是被限定的。用ue編輯avcodec-53.lib,里面一堆avcodec-53.dll的字符。有時后希望改掉

dll的名字,因為畢竟怕調用別人的庫是人家也生成了ffmpeg的庫,名字沖突可是很危險的事情。

這個可以簡單操作一下,用ue把里面avcodec-53大小全字匹配更改成別的名字,(名字長度需要和以前一樣,不一樣

結界自己去試),avcodec-53.dll也干這個事情,還有就是ffmpeg里生成的dll都用到了avutil-51.dll,avcodec-53.dll里

對應的的avutil-51.dll字符需要對應更改。(上述說文件名只是舉例,后面跟的版本后可能會改動)?

在ffmpeg目錄下搜索包含example的文件(應該有兩個),照著寫應該很容易寫出簡單的調用上面生成的ffmpeg庫swscale庫實現了原始圖像格式的轉換(支持很多很多格式)和大小的變化,只要調用兩個方法(加一個釋放相關的)輕松搞定,效率很不錯,建議使用

?

。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/453878.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/453878.shtml
英文地址,請注明出處:http://en.pswp.cn/news/453878.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

部署WEB項目到服務器(三)安裝mysql到linux服務器(Ubuntu)詳解

突發奇想,想在自己電腦上部署一個web網站。 1,首先是下載一個適合自己已安裝服務器版本的mysql數據庫。 這里使用網上的鏈接http://dev.mysql.com/downloads/mysql/5.6.html#downloads 或者使用代理網站上下載:https://mirrors.huaweicloud.c…

在Windows下編譯ffmpeg完全手冊

本文的內容幾乎全部來自于FFmpeg on Windows,但是由于國內的網絡封鎖,很難訪問這個域名下的內容,因此我一方面按照我自己的理解和實踐做了翻譯,另一方面也是為了能提供一個方便的參考方法。 注: 1. 對于compil…

padding和卷積的區別_TensorFlow筆記1——20.CNN卷積神經網絡padding兩種模式SAME和VALID...

第1種解說:(核心最后一張圖,兩種填充方式輸出的形狀尺寸計算公式)在用tensorflow寫CNN的時候,調用卷積核api的時候,會有填padding方式的參數,找到源碼中的函數定義如下(max pooling也是一樣)&am…

MORMOT數據庫連接池

MORMOT數據庫連接池 MORMOT封裝了一堆的PROPS控件,用于連接各種數據庫。 MORMOT的封裝是武裝到了牙齒的,這堆PROPS控件居然數據庫連接池也封裝好了。這就為我們省了不少事,筆者非常喜歡! 下面拿TOleDBMSSQLConnectionProperties控…

循環神經網絡變形之 (Long Short Term Memory,LSTM)

1、長短期記憶網絡LSTM簡介 在RNN 計算中,講到對于傳統RNN水平方向進行長時刻序列依賴時可能會出現梯度消失或者梯度爆炸的問題。LSTM 特別適合解決這種需要長時間依賴的問題。 LSTM(Long Short Term Memory,長短期記憶網絡)是R…

Windows 系統下使用 MinGW + MSYS + GCC 編譯 FFMPEG

一定要按照順序操作,否則你很可能持續遇到很多奇怪的問題(ffmpeg對編譯系統版本要求比較高)。 1. www.mingw.org: 下載并安裝 MinGW 5.1.4 (http://jaist.dl.sourceforge.net/sourceforge/mingw/MinGW-5.1.4.exe),安裝時選中 g, m…

eclipse怎樣改編碼格式_Eclipse中各種編碼格式及設置

操作系統:Windows 10(家庭中文版)Eclipse版本:Version: Oxygen.1a Release (4.7.1a)剛看到一篇文章,里面介紹說Ascii、Unicode是編碼,而GBK、UTD-8等是編碼格式。Java中的編碼問題(by 迷失之路):https://www.cnblogs.c…

UE4 ShooterGame Demo的開火的代碼

之前一直沒搞懂按下鼠標左鍵開火之后&#xff0c;代碼的邏輯是怎么走的&#xff0c;今天看懂了之前沒看懂的部分&#xff0c;進了一步 ShooterCharacter.cpp void AShooterCharacter::OnStartFire() {AShooterPlayerController* MyPC Cast<AShooterPlayerController>(Co…

kafka 異常:return ‘<SimpleProducer batch=%s>‘ % self.async ^ SyntaxError: invalid syntax

Python3.X 執行Python編寫的生產者和消費者報錯&#xff0c;報錯信息如下&#xff1a; Traceback (most recent call last): File "mykit_kafka_producer.py", line 9, in <module> from kafka import KafkaProducer File "/usr/local/lib/python3.7/sit…

python 分布式計算框架_漫談分布式計算框架

如果問 mapreduce 和 spark 什么關系&#xff0c;或者說有什么共同屬性&#xff0c;你可能會回答他們都是大數據處理引擎。如果問 spark 與 tensorflow 呢&#xff0c;就可能有點迷糊&#xff0c;這倆關注的領域不太一樣啊。但是再問 spark 與 MPI 呢&#xff1f;這個就更遠了。…

Codeforces 899D Shovel Sale

題目大意 給定正整數 $n$&#xff08;$2\le n\le 10^9$&#xff09;。 考慮無序整數對 $(x, y)$&#xff08;$1\le x,y\le n, x\ne y$&#xff09;。 求滿足 「$xy$ 結尾連續的 9 最多」的數對 $(x,y)$ 的個數。 例子&#xff1a; $n50$&#xff0c;$(49,50)$ 是一個滿足條件的…

Windows系統使用minGW+msys 編譯ffmpeg 0.5的全過程詳述

一.環境配置 1.下載并安裝 MinGW-5.1.4.exe (http://jaist.dl.sourceforge.net/sourcef … -5.1.4.exe)&#xff0c;安裝時選中 g, mingw make。建議安裝到c:/mingw. 2.下載并安裝 MSYS-1.0.11-rc-1.exe (http://jaist.dl.sourceforge.net/sourcef … 1-rc-1.exe)&#xff0c;安…

Liunx安裝gogs,mysql,jdk,tomcat等常用軟件

Liunx CentOS系統采用yum安裝Mysql 一.安裝mysql客戶端 yum -y install mysql 二.安裝mysql服務器端 [注意:由于CentOS7下的不自帶mysql-server,所以得先安裝資源包,步驟: 1.wget http://repo.mysql.com/mysql-community-release-el7-5.noarch.rpm (采用wget獲取必須有wge…

stm32單片機端口映射_STM32單片機的重映射與地址映射的使用方法及步驟

重映射STM32中對于一些端口的外設已經被其他引腳所使用&#xff0c;這是就需要用端口重映射來解決了&#xff0c;很方便。以USART1為例重映射的步驟為&#xff1a;打開重映射時鐘和USART重映射后的I/O口引腳時鐘&#xff0c;RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOB|RCC_A…

python 第三方模塊 yaml - 處理 YAML (專門用來寫配置文件的語言)

markdown 的配置使用 Yaml —— Yet Another Markup Language &#xff1a;另一種標記語言。 簡介 YAML 是專門用來寫配置文件的語言&#xff0c;非常簡潔和強大&#xff0c;遠比 JSON 格式方便。 YAML在python語言中有PyYAML安裝包。 YAML 語言&#xff08;發音 /?jm?l/ &…

程序員 賺錢

業余編程賺錢 程序員的好方法 現在的人生活水平高了&#xff0c;開銷也大了&#xff0c;同時對于一些技術性人員來說有很多種&#xff0c;有些程序員自己開公司&#xff0c;開發自己的產品&#xff0c;年賺百萬&#xff0c;有些程序員還在給別人打工&#xff0c;每天累死累活的…

java合并單元格的快捷鍵_java poi合并單元格問題

使用poi導出的execl合并單元格&#xff0c;會出現下圖問題整個單元格看似合并了&#xff0c;但是文字沒有垂直居中&#xff0c;而且execl中所有的合并都會在第三行開始出現灰色分層樣式合并單元格偽代碼String upCompareField ""; //上一行的對比值for(int i 0; i …

webpack自動化構建腳本指令npm run dev/build

指令 為不同環境配置可執行指令&#xff0c;我們使用npm scripts方式&#xff0c;在package.json文件中配置執行指令&#xff1a; {"scripts": {"start": "cross-env NODE_ENVdev webpack-dev-server","build": "cross-env NODE_…

前端之 form 詳解

認識表單 在一個頁面上可以有多個form表單&#xff0c;但是向web服務器提交表單的時候&#xff0c;一次只可以提交一個表單。要聲明一個表單&#xff0c;只需要使用 form 標記來標明表單的開始和結束&#xff0c;若需要向服務器提交數據&#xff0c;則在form標簽中需要設置act…

代碼 優化 指南 實踐

C代碼優化方案 華中科技大學計算機學院 姓名&#xff1a; 王全明 QQ&#xff1a; 375288012 Email&#xff1a; quanming1119163.com 目錄 目錄 C代碼優化方案 1、選擇合適的算法和數據結構 2、使用盡量小的數據類型 3、減少運算的強度 &#xff08;1&…