最新ffmpeg編譯和用eclipse進行源碼調試

最近由于項目需要,必須修改ffmpeg的源碼進行修改才能滿足項目的需求,但以前我從來沒有自己去編譯和使用ffmpeg的源代碼,一直都是用別人編譯好了的sdk,再加上習慣了vs方便的編譯環境,要在linux下對如此多的源代碼進行編譯和調試還真的是一件非常困難的事情。Linux下也沒別的什么好的集成開發環境好用,沒辦法eclipse還湊合吧。好了,廢話就不多說了,直接進入正題吧。
第一部分: ffmpeg的編譯

首先要下載最新的ffmpeg源代碼:

由于我用的是教育網,用svn下載太tm的慢了,1kb/s,估計到明年都下不完。推薦一個網站,除了有ffmpeg的源代碼以外還有各個源的源碼,并且用現成的sdk(windows下的)。

網址如下:

Step1: 網址

http://ffmpeg.zeranoe.com/builds/

Step2: 版本問題

下載完成以后,一個很重要的工作要做,否則以后你在使用或者調試ffmpeg的時候會出現很多莫名其妙的問題。一定要先檢查的清理你的linux下是否已經安裝了ffmpeg的庫文件,如果安裝了,要先remove掉,否則到最近,你的庫有的是新的,有的是舊的,到用的時候給你報一堆版本錯誤,你就哭吧……具體做法:

下面是我在編譯的時候出現的版本錯誤:

ffmpeg: relocation error: ffmpeg: symbol postproc_configuration, version LIBPOSTPROC_51 not defined in file libpostproc.so.51 with link time reference

解決辦法:

$: apt-get remove ffmpeg

$: apt-get remove libavcodec52 libavdevice52 libavfilter0 libavformat52 libavutil49 libpostproc

$: apt-get remove libx264-dev

上面的解決辦法可能在不同的機子上不一樣,因為安裝的庫可能不同

如果還不行,就手動解決:

庫文件的路徑:/usr/lib

頭文件的路徑:/usr/include

進入這些路徑看看是否有ffmpeg中的庫,如果有,都刪除掉。

Step3: 安裝ffmpeg所依賴的庫文件:

$: sudo apt-get update

$: sudo apt-get install build-essential git-core checkinstall yasm texi2html libfaac-dev /

libopencore-amrnb-dev libopencore-amrwb-dev libsdl1.2-dev libtheora-dev /

libvorbis-dev libx11-dev libxfixes-dev libxvidcore-dev zlib1g-dev

這個步驟中只提供最常用的配置所需要的庫文件,如果在編譯ffmpeg中還有其它附加的配置,請使用新立得軟件管理器進行安裝。

Step4: 安裝x264

從Step1中的網址上下載x264源碼:

$:./configure –enable-static

$:make

$:make install

Step5: 安裝ffmpeg

注意:

1. 如果是安裝庫文件,一定要使用--enable-shared, 不然不會生成.so文件。

2. 默認的庫文件目錄是/usr/local/lib,我們把它修改為/usr, 這樣在安裝的時候方便

$: ./configure --enable-gpl --enable-shared --enable-version3 --enable-nonfree --enable-postproc --enable-libfaac --enable-libopencore-amrnb --enable-libopencore-amrwb --enable-libtheora --enable-libvorbis --enable-libxvid --enable-x11grab --prefix=/usr

$: make

$: sudo make install

第二部分:使用eclipse進行調試

Linux下也沒有什么好用的集成開發環境,就eclipse吧。

首先下載eclispe + cdt,這個網上用ubuntu的software center就可以。

這里要注意一下,使用eclipse進行調試,如果ffmpeg源碼的編譯中使用了—enable-shared選項,那么在調試時會出現無法step into的情況,這個問題折磨了我好久,后來才發現是.so文件干的事,唉……

重新配置:在ffmpeg源碼的目錄下輸入

$: ./configure --enable-gpl --enable-nonfree --enable-pthreads --enable-libfaac --enable-libmp3lame --enable-libtheora --enable-libx264 --enable-libxvid --enable-x11grab --enable-libopencore-amrnb --enable-libopencore-amrwb --enable-libopencore-amrnb --enable-version3 --disable-optimizations --disable-asm

$: make

建立項目工程,這里我們選File->new->Makefile Project with Existing Code

clip_image002

n 在Import Existing Code對話框中的Toolchain for Indexer Settings中選Linux GCC

clip_image004

然后點Browse找到源代碼文件夾

clip_image006

然后點OK->Finish

可以看到新建的工程中已經包含了所有的源碼和編譯后的文件。

clip_image008

右鍵點擊ffmpeg_g選debug as->Local c/c++ Application->gdb/mi 然后Ok

clip_image010

好了,想怎么調就怎么調吧。

關于Eclipse的快捷鍵:

使用vs用習慣了,eclipse調試時的快捷鍵不太好用,想改。

window->Preference->general->keys->Scheme: Microsoft visual studio

但隨之而來的一個問題,F10!

這個鍵在vs里面是step over, 但eclipse中只要你一按f10就會出出file對話框,后來上網查了一下,解決的辦法如下:

Eclipse F10 Key mapping bug

$: gconftool-2 --get /desktop/gnome/interface/menubar_accel

F10

$: gconftool-2 --type string --set /desktop/gnome/interface/menubar_accel "ctrl-shift-m"


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

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

相關文章

Django補充知識點——用戶管理

內容概要 1、Form表單2、Ajax3、布局,Django母板4、序列化5、Ajax相關6、分頁7、XSS攻擊8、CSRF9、CBV、FBV 10、類中用裝飾器的兩種方法 11、上傳文件 12、數據庫正向查詢、反向查詢、多對多查詢 13、jQuery對象和DOM對象可以互相轉換 14、cookie和session 用戶管理…

easypoi導出excel 效率_Spring Boot 入門(十二):報表導出,對比poi、jxl和esayExcel的效率...

關于poi、jxl和esayExcel的介紹自行百度。jxl最多支持03版excel,所以單個sheet頁面最多只能導出65536條數據。我直接將excel導入到瀏覽器并打開,以下統計導出時長指將數據從數據庫查詢,并寫入到excel的過程。不包括打開excel所消耗的時間為了…

Python html 代碼轉成圖片、PDF

一、下載 1、python的imgkit、pdfkit庫 pip install imgkit pip install pdfkit 2、wkhtmltopdf工具包 下載地址:https://wkhtmltopdf.org/downloads.html 下載之后安裝,安裝完成會生成兩個程序,分別用來轉圖片和pdf: 二、使…

SpringEL expression:

2019獨角獸企業重金招聘Python工程師標準>>> 這個異常有下面幾種情況 1、你寫的 EL 表達式有語法錯誤。 2、再者就是你取得變量是多級的話比如 student.address.prevince 屬性model 關聯有問題。 3、還有就是你取得值為空(null) 比如 Thymel…

利用qt和ffmpeg軟件來制作視頻裁剪工具

0 什么是ffmpeg? Libav(舊稱:FFmpeg)是一個自由軟件,可以運行音頻和視頻多種格式的錄影、轉檔、流功能[1],包含了libavcodec ─這是一個用于多個專案中音頻和視頻的解碼器庫,以及 libavformat ——一個音頻…

fresco使用中圓角出現了黑邊

其實并不是出現了黑邊,而是圖片上有顏色滲出 如何修改 在xml加入 fresco:roundWithOverlayColor "color/transparent" //就是把圓角覆蓋圖改為透明色 轉載于:https://www.cnblogs.com/vete-l/p/7998122.html

Python 第三方庫之 docxtpl (處理word文檔)

項目官方文檔 項目官方git docxtpl 軟件包使用兩個主要軟件包: python docx,用于讀取、寫入和創建子文檔jinja2用于管理插入到模板docx中的標記。jinja官網, jinja中文網站 簡單示例 from docxtpl import DocxTemplatetpl DocxTemplate(test.docx)con…

域添加另一臺機器_巨杉Tech | SequoiaDB數據域概念解讀與實踐

近年來,銀行各項業務發展迅猛,客戶數目不斷增加,后臺服務系統壓力也越來越大,系統的各項硬件資源也變得非常緊張。因此,在技術風險可控的基礎上,希望引入大數據技術,利用大數據技術優化現有IT系…

Citrix XenServer 池要求

池要求 資源池是一臺或多臺服務器的同類或異類聚合,每個池最多包含 16 臺服務器。創建池或將服務器加入現有池前,應確保池中的所有服務器滿足下面介紹的要求。 硬件要求 XenServer 資源池中的所有服務器必須具有廣泛兼容的 CPU,也就是說&…

推薦一個接口文檔工具

ShowDoc 轉載于:https://www.cnblogs.com/LW-baiyun/p/8003975.html

自動轉換flv文件

在線轉化.誰有 把其他的視頻文件格式的視頻,經過上傳自動轉化FLV格式的一種插件.提供編程接口.給我一份.類似新浪網播客上傳視頻的一樣. (還有上傳是的哪個效果,進度條如何作的?)或者給我個參考地址什 ... 環境:redhat as41。首先獲取ffmpeg很多人找不到怎么下載,其…

云計算的概念_云計算概念掀起漲停潮 美利云奠定板塊龍頭地位

溫馨提示:股市風險時刻存在,文中所提個股僅為個人觀點,請勿盲目跟隨操作,筆者希望大家都做到不貪婪,不恐懼,不瞎猜,不跟風做一個紀律嚴明輕松淡定的股票交易者。社4月26日訊,滬深兩市…

Python 第三方模塊之 PDFMiner(pdf信息提取)

PDFMiner簡介 pdf提取目前的解決方案大致只有pyPDF和PDFMiner。據說PDFMiner更適合文本的解析,首先說明的是解析PDF是非常蛋疼的事,即使是PDFMiner對于格式不工整的PDF解析效果也不怎么樣,所以連PDFMiner的開發者都吐槽PDF is evil. 不過這些…

TFS2017持續發布中調用PowerShell啟停遠程應用程序

目前團隊項目中有多個Web、服務以及與大數據平臺對接接口等應用,每次的發布和部署采用手工的方式進行。停止應用程序,拷貝發布包,啟動應用程序,不停的循環著,并且時不時地會出現一些人為錯誤性問題。這種模式消耗的很多…

Flask 多線程

參數 app.run()中可以接受兩個參數,分別是threaded和processes,用于開啟線程支持和進程支持。 threaded: 是否開啟多線程,默認不開啟。 if __name__ __main__:app.run(threadedTrue)processes:進程數量&#xff0c…

40天python入門教程_Python入門教程超詳細1小時學會Python

Java和Javascript,不用1小時你就可以用Python快速流暢地寫有用的Python程序.為什么使用Python假設我們有這么一項任務:簡單測試局域網中的電腦是否連通.這些電腦的ip范圍從192.168.0.101到192.168.0.200.思路:用shell編程.(Linux通常是bash而Windows是批處理腳本).例如,在Windo…

基于LVS對LAMP做負載均衡集群

一、簡介 LVS是Linux Virtual Server的簡稱,也就是Linux虛擬服務器, 是一個由章文嵩博士發起的自由軟件項目,它的官方站點是www.linuxvirtualserver.org。現在LVS已經是 Linux標準內核的一部分,在Linux2.4內核以前,使用LVS時必須要…

Python_Day1

1、猜年齡游戲: (1):每循環3次,counter值返回為0,重新開始循環;(2):continue 意思是跳出當前循環;(3)&#xff1…

kafka 入門

初識 Kafka 什么是 Kafka Kafka 是由 Linkedin 公司開發的,它是一個分布式的,支持多分區、多副本,基于 Zookeeper 的分布式消息流平臺,它同時也是一款開源的 基于發布訂閱模式的消息引擎系統。 Kafka 的基本術語 消息&#xf…

實體詞典 情感詞典_tidytextpy包 | 對三體進行情感分析

騰訊課堂 | Python網絡爬蟲與文本分析TidyTextPy前天我分享了 tidytext | 耳目一新的R-style文本分析庫 但是tidytext不夠完善,我在tidytext基礎上增加了情感詞典,可以進行情感計算,為了區別前者,將其命名為tidytextpy。大家有時間…