ffmpeg交叉编译到window平台下使用.doc_第1页
ffmpeg交叉编译到window平台下使用.doc_第2页
ffmpeg交叉编译到window平台下使用.doc_第3页
ffmpeg交叉编译到window平台下使用.doc_第4页
ffmpeg交叉编译到window平台下使用.doc_第5页
全文预览已结束

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

FFmpeg是一个开源且跨平台的音视频解决方案,集采集、转码、流式化为一身,项目的libavcodec编解码模块和libavformat媒体格式模块,支持非常非常丰富的编解码格式和容器封装格式,是做媒体相关开发工作必须要掌握和借鉴的一个项目。定制和编译ffmpeg是做流媒体开发迟早要面对的,linux平台上相对简单,windows平台就比较麻烦了。本文的目的就是详细介绍下如何基于ubuntu交叉编译环境,编译和定制ffmpeg。一 概述ffmpeg主要是基于linux开发,当然它也支持windows,不过并不支持visual studio系列IDE(因为它使用了大量C99特性,而vs不支持C99),所以要想在windows上使用,必须要通过mingw或cygwin来编译,或者在linux上构建windows交叉编译环境,后者要简单些。二 环境准备1.Ubuntu Linux,本人使用的Ubuntu 11.10,安装在VMware Workstation中2.要有可用的网络,因为之后要在线安装软件包,如果宿主机能上网 虚拟机上不了 可以将虚拟机连接方式改成NAT3.MinGW编译环境,我们要非常感谢,zeranoe,它做了一个自动下载和编译ffmpeg所需要的mingw及其他工具链的脚本,请到/blog/下载最新的“MingGW-w64 Build Script 2.8.4”。解压(解压命令为 tar xvf 加文件名)后新建一个目录把它放进去(本人的目录是/home/haibindev/studio/mingw-w64/),然后打开终端,cd 到MinGW-w64所在目录,执行chmod +x mingw-w64-build-2.8.4,使这个脚本可以执行。之后运行./mingw-w64-build-2.8.4,就可以按照提示来做了。如果它提示你缺少依赖库,就按照它的提示先安装依赖库,方式是,执行sudo apt-get install 库名字。这里要注意mingw的安装选择 选择下如图选择 y 选择2 选择 n最后会生成下图文件 3. 设置终端的环境变量执行一下命令即可。(注意,如果你关闭了终端,或者新建一个终端,需要重新执行一下这个命令。)export PATH=$PATH:/home/haibindev/studio/mingw-w64/mingw-w64-i686/bin三 下载FFmpeg源码和你需要的编解码库的源码这点不用做什么介绍,先到ffmpeg官网,下载ffmpeg源代码,然后再Google你需要的编解码库,到相关网站下载即可。本人这次编译共下载了以下代码,以做大家参考。libx264 libfaac libmp3lame libogg libspeex libvorbis libtheora ffmpeg这些编解码库的源码都可以在 /builds 找到FFmpeg0.8.11下载 /releases/ffmpeg-0.8.11.tar.bz2 下载完后解压,然后统一放到一个目录中,本人的目录是/home/haibindev/studio/opensource/。下图是全家福(build-ffmpeg是编译ffmpeg的工作目录,下面介绍,freetype我没有编译)。 四 编译为了方便,我把所有库编译后的结果都存放到了一个统一的目录/home/haibindev/opensdk,方法请见下面的编译命令。除了第一个命令以外,其余的都是configure命令,执行完之后,还需要执行make命令,然后执行make install。我就不再写出来了。1. 先执行以下命令ln -s /usr/bin/pkg-config /home/haibindev/studio/mingw-w64/mingw-w64-i686/bin/i686-w64-mingw32-pkg-config如果没有pkg的话 执行sudo apt-get install pkg 安装pkg软件包2.libx264./configure -enable-static -enable-win32thread -host=i686-w64-mingw32 -prefix=/home/haibindev/opensdk -cross-prefix=i686-w64-mingw32-3.libfaac./configure -host=i686-w64-mingw32 -prefix=/home/haibindev/opensdk -enable-static -disable-shared -with-mp4v2=no4.libmp3lameCFLAGS=-DFORCEINLINE= ./configure -host=i686-w64-mingw32 -prefix=/home/haibindev/opensdk -enable-static -disable-shared -disable-frontend6.libogg./configure -host=i686-w64-mingw32 -prefix=/home/haibindev/opensdk -enable-static -disable-shared7.libspeex./configure -host=i686-w64-mingw32 -prefix=/home/haibindev/opensdk -enable-static -disable-shared -disable-oggtest8.libvorbis./configure -host=i686-w64-mingw32 -prefix=/home/haibindev/opensdk -enable-static -disable-shared -disable-oggtest 9.libtheora./configure -host=i686-w64-mingw32 -prefix=/home/haibindev/opensdk -enable-static -disable-shared -disable-oggtest -disable-vorbistest -disable-sdltest -with-ogg-includes=/home/haibindev/opensdk/include -with-ogg-libraries=/home/haibindev/opensdk/lib11.ffmpeg先创建/home/haibindev/studio/opensource/build-ffmpeg,然后cd到该目录,执行./ffmpeg-0.8.11/configure -disable-static -enable-shared -enable-version3 -enable-gpl -enable-nonfree -disable-pthreads -enable-w32threads -enable-runtime-cpudetect -enable-memalign-hack -enable-libfaac -enable-libmp3lame -enable-libspeex -enable-libtheora -enable-libvorbis -enable-libx264 -enable-zlib -enable-cross-compile -target-os=mingw32 -arch=x86 -prefix=/home/haibindev/opensdk/ffmpeg -cross-prefix=i686-w64-mingw32- -extra-cflags=-I/home/haibindev/opensdk/include -extra-ldflags=-L/home/haibindev/opensdk/lib 这里之后的make会出错误 需要更改源码文件 cd到home目录 执行find name strsafe.h 查找到文件 vi更该文件 在1926行 更改 如图 将这两行注释掉然后在make就没问题了libmp3lame命中中最前面的“CFLAGS=-DFORCEINLINE=”是为了防止mp3lame中的一个编译错误,要记得带上。以上编译成功之后,ffmpeg win32 sdk就出现在/home/haibindev/opensdk/ffmpeg里面了,bin目录下就是我们需要的所有文件了。 五 验证编译后的程序拷贝到windows上,在命令中运行ffmpeg.exe,看 验证一下,做个转码操作就行了,执行ffmpeg.exe -i s.avi -vcodec libx264 -acodec libfaac s.mp4运行正常,生成了264编码和aac编码的,mp4文件,播放正常,ok了。

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论