最新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.mzph.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。大家有时间…