文档章节

移植FFMPEG到VS2008系列之一

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

做音视频编解码的人都知道ffmpeg。然而,要想在windows上调试ffmpeg却不是一件容易的事情。之前也曾经把x264的代码移植到vs2008上面,具体可以参见我前面的文章。最近终于把ffmpeg的最新代码完全移植到vs2008环境中来。在移植过程中深深的感觉到codec的多样性,我虽然在codec领域工作了很多年,但是ffmpeg里面大多数codec甚至连名字都没有见过。下面把移植过程中需要注意的问题描述一下。


首先,必须要有坚强的毅力和决心。ffmpeg代码量超级大,其总共有3千多个文件,将近100w行代码。移植ffmpeg是一项体力很繁重的活,所以,如果你决定要做,就不要中途放弃。


其次,也是最重要的,就是要掌握方法。ffmpeg代码采用C99的语法,使得微软VS开发环境的不兼容导致产生大量的语法错误。其次,ffmpeg有些采用的linux下面的库也会使得windows上没法编译的问题。如何快速的修改c99语法成为移植ffmpeg的关键!


工欲善其事,必先利其器。通过正则表达式的强大功能,可以一定程度上解决这一问题。对于精通正则表达式的朋友们,完全可以用某种编程语言,例如python,perl等写若干个脚本语言,就可以很轻松的修改c99的语法为标准的c89的语法。这样只需要3,4天的时间完成这项任务。


而我花了将近2个礼拜的时间,其中调试bug花了3天。主要是对于正则表达式不是很在行,只是了解一些正则表达式的写法。也没有用某种编程语言来操作正则表达式的编程经验。我使用的正则表达式工具就是常见的文本编辑器UE。


1. 下载最新的ffmpeg源代码。

我是在github上下载的代码ffmpeg-master。当我把代码跑起来之后发现crash了,调试之后发现ffmpeg-master的版本在初始化的时候有几个bug导致的,对于不熟悉音视频编解码的朋友很难修改这些bug。后来我又下载的稳定的ffmpeg1.2的版本,一比较,发现有三分之一的文件不一样。大概看了下,不一样的地方大部分都不是很关键。我不知道ffmpeg-master的版本是介于1.1和1.2之间的还是高于1.2没有发布的版本,也许ffmpeg1.2的版本没有这些bug。但我已经在master版本中修改的差不多了,所以也没有必要在1.2的版本上重新改。建议大家下载稳定的ffmpeg1.2的版本。


2. 文件重命名。

    ffmpeg不同的文件夹下面有很多的文件名都是相同的,这在vs2008开发环境下会是个问题。所以,干脆把所以的文件名都重命名,例如可以都以某个文件夹的前缀。文件太多,不可能一个一个的改。以文件夹libavcodec下面的所有文件为例说明如下:

2.1 打开dos窗口,切换到libavcodec目录下面执行DOS命令:

dir *.c /b >>c_files.txt


2.2 UE打开c_files.txt,使用正则表达式执行替换操作,具体看下图:

         


         在查找什么方框里面输入的正则表达式为:(?m)(^[\w.]+)

         在替换为方框里面输入的正则表达式为:rename $1 av_codec_$1

         选中正则表达式 perl选项 不用勾选 只匹配整个词语和匹配大小写选项

       

          执行全部替换,保存文件。

2.3  把文件c_files.txt文件后缀改成批处理文件,即c_files.bat。运行这个批处理文件,这样libavcodec文件夹下面的所 有的文件都变成以av_codec_打头的文件了。


2.4  用同样的方法把其它文件夹下面的所有文件重命名。

    


      







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

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

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

曾利广
2013/08/02
0
1
FFmpeg Maintainer赵军:FFmpeg关键组件与硬件加速

本文来自FFmpeg Maintainer赵军在LiveVideoStackCon 2018热身分享,并由LiveVideoStack整理而成。在分享中,赵军介绍了FFmpeg的历史、关键组件,并介绍了英特尔平台上的多种FFmpeg硬件加速方...

LiveVideoStack
07/18
0
0
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

没有更多内容

加载失败,请刷新页面

加载更多

PowerDesigner导出所有表到Excel

'******************************************************************************'* File: pdm2excel.vbs'* Purpose: 分目录递归,查找当前PDM下所有表,并导出Excel'* Title: ......

了凡川
16分钟前
1
0
Maven 项目中依赖的搜索顺序

ettings_mirror 的优先级高于 central settings_profile_repo 优先级高于 settings_mirror settings_profile_repo 优先级高于 pom_repositories settings_profile_repo 优先级高于 pom_prof......

xingyu4j
39分钟前
2
0
改变maven项目的名称

pom.xml <groupId>com.soft.xxx</groupId><artifactId>xxx</artifactId><packaging>war</packaging><version>0.0.1-SNAPSHOT</version><name>xxx Maven Webapp</name><build>......

1713716445
41分钟前
2
0
windows下按照RabbitMQ

rabbitMQ是一个在AMQP协议标准基础上完整的,可服用的企业消息系统。它遵循Mozilla Public License开源协议,采用 Erlang 实现的工业级的消息队列(MQ)服务器,Rabbit MQ 是建立在Erlang OTP平...

zhaochaochao
41分钟前
2
0
10个PHP比特币开源项目

如果你是一个Phper,如果你希望学习区块链,那么本文列出的10个开源的Php比特币项目,将有助于你了解在自己的应用中如何加入对比特币的支持。 如果你希望快速掌握使用Php对接比特币钱包的方法...

笔阁
48分钟前
28
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部