文档章节

移植FFMPEG到VS2008系列之四

abcijkxyz
 abcijkxyz
发布于 2016/11/22 16:45
字数 630
阅读 1
收藏 0

这部分主要是引入第三方库,还有就去去除无关的测试代码。


7. 引入第三方库


    必须引入的第三方库为zdll.lib,这个库在网上可以下载到,如若不加入这个库,很多的函数将链接不到。还有在avcodec文件夹下面以lib打头的文件都是为引入第三方库而进行的接口封装,以适应ffmpeg去调用的相关代码。最重要的例如libx264,libmp3lame.lib libfdk_aac等。我的x264采用我自己用vs2008编译的版本,其它的库也基本上采用vs的版本。暂时不想加入的库,例如libspeex等可以把这些代码移出。


8. 去除冗余和暂时不相关的代码。


     之前我们把所有的c文件都添加进来,其实有些是没有必要的。例如有些c文件里面有一个main函数,它仅仅是为了测试某个函数接口应用而存在的,这样的c文件是可以移除。另外,文件名包含template关键字的文件也必须要移除,因为这样的文件已经被include到其它文件里面的。如若不移除,单独编译这个文件会产生大量的编译错误。另外与网络相关的模块也可以暂时移除,当然也可以在tcp.c文件里面加入windows上的库ws2_32.lib解决链接错误。


9. 初始化全局结构体变量


    在前面一部分,对于结构体的初始化,我们用了一个函数去做。所以,在程序刚刚起来的时候,必须调用这些函数去初始化所有的全局结构体变量。由于这样的结构体变量初始化函数太多太多,不太可能用复制粘贴的方法。一种可行的方法是,在vs开发环境里面切换到class view选项里面找到Global functions and variables,选中所有的初始化结构体的函数,然后复制到一个文本文件里面,再写一个简单的正则表达式,将其转换为函数调用的格式。前面提到的文件g_var_func_init.c就是自己添加的这些函数调用的代码,用以初始化全局结构体变量。



综上所述,排除完所有的编译错误和链接错误,你就可以在vs2008下面调试ffmpeg的代码了。







本文转载自:http://www.cnblogs.com/celerychen/archive/2013/04/23/3588208.html

共有 人打赏支持
abcijkxyz
粉丝 61
博文 6196
码字总数 1876
作品 0
深圳
项目经理
ffmpeg 在 windows 系统下面的编译

网上的版本是很老的版本,经过自己的测试完成了现在可以编译通过的版本,编辑时间是2013/8/2 1. 下载ffmpeg源代码,下载网址:svn://svn.mplayerhq.hu/ffmpeg/trunk 2. 安装windows下的编译系...

曾利广
2013/08/02
0
1
Linux编译ffmpeg并转换MP3到AMR

AMR格式是智能手机上的常用音频文件格式,比如MP3格式的压缩比大,但是文件比MP3小,所以在移动互联项目中应用比较广泛。去年年底协助联想研究院开发一款预装产品过程中需要使用到MP3格式和A...

飞晏
2012/10/23
0
9
FFMPEG在嵌入式硬件上应用之 —— 基本环境搭建及编译

前段时间在翻看电脑里面资料时,发现了以前做的在嵌入式硬件上面运行以ffmepg为基础,以嵌入式硬件解码的多媒体播放工作,发现都快忘记完了。今日得闲整理温习了一下ffmpeg在嵌入式上的运用,...

yang_danny
2015/03/29
0
0
最新靠谱可用的 Mac 环境下 FFmpeg 环境搭建

大家好,我是光源。 最近在尝试搭建 FFmpeg 开发环境时遇到一个蛋疼的事,Google 了 N 篇文章竟然没有一篇是可以跑起来的! 少部分教程是给出了自我矛盾的配置(是的,按照贴出来的代码和配置...

光源_Android
05/13
0
0
FFMPEG系列二:linux下下载编译安装ffmpeg(超详细附采坑完整版)

一、官网下载linux版本的ffmpeg源码包 ffmpeg-4.0.tar.xz 此步骤也可以使用git clone下载源码包,本质上是一样的 二、使用xftp将源码包ffmpeg-4.0.tar.xz上传至linux主机(直接使用linux命令...

陈守印
07/24
0
0

没有更多内容

加载失败,请刷新页面

加载更多

70.shell的函数 数组 告警系统需求分析

20.16/20.17 shell中的函数 20.18 shell中的数组 20.19 告警系统需求分析 20.16/20.17 shell中的函数: ~1. 函数就是把一段代码整理到了一个小单元中,并给这个小单元起一个名字,当用到这段...

王鑫linux
今天
0
0
分布式框架spring-session实现session一致性使用问题

前言:项目中使用到spring-session来缓存用户信息,保证服务之间session一致性,但是获取session信息为什么不能再服务层获取? 一、spring-session实现session一致性方式 用户每一次请求都会...

WALK_MAN
今天
5
0
C++ yield()与sleep_for()

C++11 标准库提供了yield()和sleep_for()两个方法。 (1)std::this_thread::yield(): 线程调用该方法时,主动让出CPU,并且不参与CPU的本次调度,从而让其他线程有机会运行。在后续的调度周...

yepanl
今天
4
0
Java并发编程实战(chapter_3)(线程池ThreadPoolExecutor源码分析)

这个系列一直没再写,很多原因,中间经历了换工作,熟悉项目,熟悉新团队等等一系列的事情。并发课题对于Java来说是一个又重要又难的一大块,除非气定神闲、精力满满,否则我本身是不敢随便写...

心中的理想乡
今天
33
0
shell学习之获取用户的输入命令read

在运行脚本的时候,命令行参数是可以传入参数,还有就是在脚本运行过程中需要用户输入参数,比如你想要在脚本运行时问个问题,并等待运行脚本的人来回答。bash shell为此提 供了read命令。 ...

woshixin
今天
4
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部