在ffmpeg中加入x264模块

引言:最近一直致力于多媒体应用开发,一说起编码解码就不得不说下FFmpeg。FFmpeg是一个集录制、转换、音/视频编码解码功能为一体的完整的开源解决方案。FFmpeg的开发是基于Linux操作系统,但是可以在大多数操作系统中编译和使用。下面就详细介绍下在Windows操作系统中如何编译并且使用FFmpeg做应用开发。

下载源码

到FFmpeg官方下载最新的FFmpeg版本。CVS服务器地址如下:

cvs -z9 -d:pserver:anonymous@mplayerhq.hu:/cvsroot/ffmpeg co ffmpeg。

现在已改成SVN下载:

svn://svn.mplayerhq.hu/ffmpeg/trunk

编译需要的工具

1)MinGW-5.0.2.exe 

2)MSYS-1.0.11.exe(安装的时候需要注意,将MSYS-1.0.10.exe装到MinGW的bin目录下:我的安装目录为C:/MinGW/bin/1.0),由于新版的ffmpeg需要较高的MSYS,将bash-3.1-MSYS-1.0.11-snapshot.tar.bz2解压,然后将bin的文件拷贝到C:/MinGW/bin/1.0/bin下面

3)如果提示没有yasm,下载yasm-0.6.0.tar.gz,并按下提示安装

/*************yasm begin**************

要安裝x264,就需要用yasm來編譯。那就先裝個yasm吧。

yasm下載網址:http://www.tortall.net/projects/yasm/releases/yasm-0.6.0.tar.gz

#tar xzvf yasm-0.6.0.tar.gz

#cd yasm-0.6.0

#./configure --prefix=/usr/local/yasm

#make

#make install

/*************that is ok here*********************/

#export PATH="$PATH:/usr/local/yasm/bin"

#vi /etc/profile

--[在最後,插入]—

export PATH="$PATH:/usr/local/yasm/bin"

/*************yasm end**************

编译步骤

1、配置

用记事本打开C:/MinGW/bin/MSYS-1.0.10下msys.bat文件。在第一行添加对vcvars32.bat的引用。vcvars32.bat在VC7的bin下面,如下:

call D:/WindowsXP/Microsoft Visual Studio .NET 2003/Vc7/bin/vcvars32.bat

@echo off

rem Copyright (C):  2001, 2002  Earnie Boyd

rem   mailto:earnie@users.sf.net ............

2、运行msys.bat,效果如下:

clip_image001

3、编译x264

1)下载x264源码

     地址:svn://svn.videolan.org/x264/trunk
          或svn co svn://svn.videolan.org/x264/trunk x264
 

2)编译x264

编译静态库:

svn co svn://svn.videolan.org/x264/trunk x264

cd x264

./configure --prefix=/static

make

make install

clip_image003

编译动态库

svn co svn://svn.videolan.org/x264/trunk x264

cd x264

patch -p0 < dll.patch

./configure --prefix=/shared --enable-shared

make

make install

clip_image005

如果make install报错,没关系,将x264库文件拷贝过去,如:cp libx264.* /shared/lib/.

4.configure ffmpeg

./configure --enable-shared --disable-static --enable-memalign-hack --enable-libx264 --enable-gpl (--enable-libx264 --enable-gpl:表示支持x264)

注:按照上述步骤,好像有时会提示没有找到x264,经过几翻周折,决定采用最笨的方法:

1)将x264.h文件拷贝到C:/MinGW/include下面

2)将libx264.a,libx264.so,libx264.so.47文件拷贝到C:/MinGW/mingw32/lib

3)./configure --enable-shared --disable-static --enable-memalign-hack --enable-libx264 --enable-gpl

clip_image007

5、make ffmpeg

下面就执行make了。如果没有出现什么错误的话,就再执行make install。

6合并libavcodec和libavutil

1) 新建一个目录make_my

2) 拷贝需要的.o文件

a) #cp ffmpeg/libavcodec/*.o make_my

b) #mkdir make_my/i386

c) #cp ffmpeg/libavcodec/i386/*.o make_my/i386

d) #cp ffmpeg/libavutil/*.o make_my

3) 合并libavcodec和libavutil成一个库(注意路径问题)

gcc -shared -Wl,--output-def,avcodec-51.def,--out-implib,libavcodec.dll.a -Wl,--enable-runtime-pseudo-reloc -Wl,--enable-auto-image-base -Wl, --warn-common -Wl,-rpath-link,"/e/H323Codec/VideoCodec/ffmpeg/ffmpeg_build/ffmpeg.r9450"/libavcodec -Wl,-rpath-link, "/e/H323Codec/VideoCodec/ffmpeg/ffmpeg_build/ffmpeg.r9450"/libavformat -Wl,-rpath-link, "/e/H323Codec/VideoCodec/ffmpeg/ffmpeg_build/ffmpeg.r9450"/libavutil -o libavcodec.dll bitstream.o utils.o allcodecs.o mpegvideo.o jrevdct.o jfdctfst.o jfdctint.o resample.o resample2.o dsputil.o motion_est.o imgconvert.o mpeg12.o simple_idct.o ratecontrol.o eval.o error_resilience.o raw.o faandct.o parser.o rangecoder.o h263.o opt.o bitstream_filter.o audioconvert.o imgresample.o i386/fdct_mmx.o i386/cputest.o i386/dsputil_mmx.o i386/mpegvideo_mmx.o i386/motion_est_mmx.o i386/simple_idct_mmx.o i386/idct_mmx_xvid.o i386/fft_sse.o i386/fft_3dn.o i386/fft_3dn2.o aasc.o ac3enc.o ac3tab.o ac3.o alac.o asv1.o atrac3.o mdct.o fft.o avs.o bethsoftvideo.o bmp.o bmpenc.o c93.o cavs.o cavsdsp.o golomb.o cinepak.o cljr.o cook.o cscd.o cyuv.o dca.o dnxhddec.o dsicinav.o dvbsubdec.o dvbsub.o dvdsubdec.o dvdsubenc.o dv.o 8bps.o ffv1.o huffyuv.o flac.o flacenc.o flicvideo.o 4xm.o fraps.o gifdec.o lzw.o gif.o h261dec.o h261.o h261enc.o h263dec.o h264.o h264idct.o cabac.o idcinvideo.o imc.o indeo2.o indeo3.o interplayvideo.o dpcm.o jpeglsdec.o jpegls.o mjpegdec.o mjpeg.o jpeglsenc.o kmvc.o ljpegenc.o mjpegenc.o loco.o mace.o mjpegbdec.o mmvideo.o mpegaudiodec.o mpegaudiodecheader.o mpegaudio.o mpegaudiodata.o mpegaudioenc.o mpc.o msmpeg4.o msmpeg4data.o msrle.o msvideo1.o lcl.o nuv.o rtjpeg.o pnmenc.o pnm.o ptx.o qdm2.o qdrw.o qpeg.o qtrle.o ra144.o ra288.o roqvideodec.o roqvideo.o roqvideoenc.o elbg.o roqaudioenc.o rpza.o rv10.o sgidec.o sgienc.o rle.o shorten.o smacker.o smc.o snow.o sonic.o sp5xdec.o svq1.o targa.o targaenc.o vp3.o xiph.o vp3dsp.o tiertexseqv.o tiff.o tiffenc.o lzwenc.o truemotion1.o truemotion2.o truespeech.o tscc.o tta.o txd.o s3tc.o ulti.o vc1.o vc1data.o vc1dsp.o vcr1.o vmdav.o vmnc.o vorbis_dec.o vorbis.o vorbis_data.o vorbis_enc.o vp5.o vp56.o vp56data.o vp6.o vqavideo.o wavpack.o wmadec.o wma.o wmaenc.o wnv1.o ws-snd1.o xan.o xl.o pcm.o adpcm.o adx.o g726.o libx264.o aac_parser.o aac_ac3_parser.o ac3_parser.o cavs_parser.o dca_parser.o dvbsub_parser.o dvdsub_parser.o h261_parser.o h263_parser.o h264_parser.o mjpeg_parser.o mpeg4video_parser.o mpegaudio_parser.o mpegvideo_parser.o pnm_parser.o vc1_parser.o dump_extradata_bsf.o remove_extradata_bsf.o noise_bsf.o mp3_header_compress_bsf.o mp3_header_decompress_bsf.o mjpega_dump_header_bsf.o imx_dump_header_bsf.o i386/idct_mmx.o i386/cavsdsp_mmx.o i386/snowdsp_mmx.o i386/vp3dsp_mmx.o i386/vp3dsp_sse2.o mathematics.o rational.o intfloat_readwrite.o crc.o md5.o lls.o adler32.o log.o mem.o fifo.o tree.o lzo.o random.o aes.o base64.o -L"/e/H323Codec/VideoCodec/ffmpeg/ffmpeg_build/ffmpeg.r9450"/libavutil -lavutil -lm -lx264


本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/453908.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

RabbitMQ实例教程:发布/订阅者消息队列

消息交换机&#xff08;Exchange&#xff09; RabbitMQ消息模型的核心理念是生产者永远不会直接发送任何消息给队列&#xff0c;一般的情况生产者甚至不知道消息应该发送到哪些队列。 相反的&#xff0c;生产者只能发送消息给交换机&#xff08;Exchange&#xff09;。交换机的…

OAuth 2.0(网转)

&#xff08;一&#xff09;背景知识 OAuth 2.0很可能是下一代的“用户验证和授权”标准&#xff0c;目前在国内还没有很靠谱的技术资料。为了弘扬“开放精神”&#xff0c;让业内的人更容易理解“开放平台”相关技术&#xff0c;进而长远地促进国内开放平台领域的发展&#xf…

kafka 自动提交 和 手动提交

Consumer 需要向 Kafka 汇报自己的位移数据&#xff0c;这个汇报过程被称为提交位移&#xff08;Committing Offsets&#xff09;。因为 Consumer 能够同时消费多个分区的数据&#xff0c;所以位移的提交实际上是在分区粒度上进行的&#xff0c;即 Consumer 需要为分配给它的每…

axios vue 回调函数_vue中ajax请求与axios包完美处理

这次给大家带来vue中ajax请求与axios包完美处理&#xff0c;vue中ajax请求与axios包处理的注意事项有哪些&#xff0c;下面就是实战案例&#xff0c;一起来看一下。在vue中&#xff0c;经常会用到数据请求&#xff0c;常用的有&#xff1a;vue-resourse、axios今天我说的是axio…

用int还是用Integer?

昨天例行code review时大家有讨论到int和Integer的比较和使用。 这里做个整理&#xff0c;发表一下个人的看法。【int和Integer的区别】int是java提供的8种原始类型之一&#xff0c;java为每个原始类型提供了封装类&#xff0c;Integer是int的封装类。int默认值是0&#xff0c;…

前端之 JavaScript 常用数据类型和操作

JavaScript 常用数据类型有&#xff1a;数字、字符串、布尔、Null、Undefined、对象 JavaScript 拥有动态类型 JavaScript 拥有动态类型。这意味着相同的变量可用作不同的类型 var x; // 此时x是undefined var x 1; // 此时x是数字 var x "Alex" …

mysql备份还原(视图、存储过程)

最近在备份还原mysql的时候发现&#xff0c;视图还原报错&#xff0c;无法创建视图&#xff0c;在网上查了下资料&#xff0c;找到以下信息&#xff1a;1、如果备份的数据库含有视图,还原时需要把my.ini中的character-set改为latin1,才能够还原视图。2、还原后,需要把latin1改为…

有关javabean的说法不正确的是_关于 JavaBean, 下列叙述中不正确的是 ( ) 。_学小易找答案...

【填空题】在使用 URL 传值时传输的数据只能是 类型。【简答题】陶器是人类最伟大的发明,比四大发明更有意义,你如何认为?(手机上直接回答提交)【单选题】对于 ( ) 作用范围的 Bean, 当客户离开这个页面时 JSP 引擎取消为客户的该页 面分配的 Bean, 释放他所占的内存空间。【填…

Postgres中tuple的组装与插入

1.相关的数据类型 我们先看相关的数据类型&#xff1a; HeapTupleData(src/include/access/htup.h) typedef struct HeapTupleData {uint32 t_len; /* length of *t_data */ItemPointerData t_self; /* SelfItemPointer */Oid t_tableOid; /* ta…

Python 自动生成环境依赖包 requirements

一、生成当前 python 环境 安装的所有依赖包 1、命令 # cd 到项目路径下&#xff0c;执行以下命令 pip freeze > requirements.txt# 或者使用如下命令 pip list --formatfreeze > requirements.txt 2、常见问题 1、中使用 pip freeze > requirements.txt 命令导出…

DenyHosts 加固centos系统安全

DenyHosts是Python语言写的一个程序&#xff0c;它会分析sshd的日志文件&#xff08;/var/log/secure&#xff09;&#xff0c;当发现重 复的攻击时就会记录IP到/etc/hosts.deny文件&#xff0c;从而达到自动屏IP的功能 DenyHosts官方网站 http://denyhosts.sourceforge.net 下…

在windows xp下编译出ffmpeg.exe

找了好多资料&#xff0c;把自己的编译成功过程详细叙述&#xff0c;以避免后来者可以少浪费点时间。 1.安装MSys 到http://sourceforge.net/project/showfiles.php?group_id2435下载文件&#xff1a;   bash-3.1-MSYS-1.0.11-tar.bz2   msysCORE-1.0.11-2007.01.19-1.ta…

手机uc怎么放大页面_手机网站怎样做可以提高用户体验度?——竹晨网络

目前&#xff0c;手机已经占据了人们大多数的闲暇时间&#xff0c;互联网的流量开始逐渐向移动端倾斜&#xff0c;重视移动端的用户体验&#xff0c;就可以给客户端增加很多意想不到的功能。但是还是有很多公司和站长不知道手机网站应该怎么建才能符合用户的使用习惯。下面&…

科技申报项目总结

这个项目分为三大模块&#xff0c;管理员&#xff0c;专家以及单位模块&#xff0c;具体页面有&#xff1a;1单位信息&#xff1b;2项目申报&#xff1b;3专家信息&#xff1b;4项目评审&#xff1b;5 项目信息&#xff1b;6申报设置&#xff1b;7专家信息。 —-项目框架SSM&am…

kafka 异常:ERROR Failed to clean up log for __consumer_offsets-30 in dir /tmp/kafka-logs due to IOExce

问题概述 kafka进程不定期挂掉。ERROR Failed to clean up log for __consumer_offsets-30 in dir /tmp/kafka-logs due to IOException (kafka.server.LogDirFailureChannel)&#xff0c;报错如下 [2020-12-07 16:12:36,803] ERROR Failed to clean up log for __consumer_o…

树形控件(CTreeCtrl和CTreeView)

如何插入数据项目&#xff1f;如何添加鼠标右击事件&#xff1f;插入数据项 通过InsertItem()方法&#xff0c;有四种重载样式: HTREEITEM InsertItem(LPTVINSERTSTRUCT lpInsertStruct); HTREEITEM InsertItem(UINT nMask, LPCTSTR lpszItem, int nImage,int nSelectedImage, …

ffmpeg编译(生成Windows或Win32平台dll, lib)

ffmpeg编译(生成Windows或Win32平台dll, lib) 介绍&#xff1a;本文简要介绍通过cygwin环境来编译生成ffmpeg。 包括解码组件libfaad与libopencore-amrnb的编译。 1)安装msys mingw环境 具体安装过程可以看网上教程 我用的是&#xff1a;http://code.google.com/p/msys-cn/ 假…

2019python课件_2019版经典Python学习路线分享

Python有三大神器&#xff0c;包括numpy,scipy,matplotlib,因此适合用于数据处理。spark&#xff0c;Hadoop都开了Python的接口&#xff0c;所以使用Python做Python的mapreduce也非常简单。因此它也备受欢迎&#xff0c;python学习大纲分享给大家。一、Python基础1.2数据的存储…

UML之涉众/参与者(角色/执行者)(Actor)/业务主角(BusinessActor)/业务工人(BusinessWorker)/用户/角色辨析【图解】...

参考文档&#xff1a; 【业务建模】(http://www.baike.com/wiki/%E4%B8%9A%E5%8A%A1%E5%BB%BA%E6%A8%A1) 【UML 核心元素之参与者】(http://www.voidcn.com/article/p-obarwwaq-tp.html) 【UML核心元素之参与者】(http://www.voidcn.com/article/p-ntpnhoue-da.html)转载于:htt…

git 报错:Please make sure you have the correct access rights and the repository exists

提示&#xff1a;Warning: Permanently added gitee.com,120.55.226.24 (ECDSA) to the list of known hosts.是公钥出问题了&#xff0c;要先设置用户和邮箱再重新生成ssh公钥即可。 1、首先我得重新在git设置一下身份的名字和邮箱 进入到需要提交的文件夹底下&#xff08;…