完美国际私服 基于窗口的DirectDraw编程 - lanyzh0909的专栏 - 博客频道 - CSDN.NET在Windows下编译ffmpeg

    编译动态库

    CODE:

    2. 如果你选择编译动态链接库(dll),这些库将和其他的动态链接库一样在使用上没什么差别。你可以使用MSVC++来链接这些库进入到你的程序,只有这种情况下MSVC++是被支持的。

    安装MinGW

      如果你的系统已经按照所安装配置,那么下面的动作将正常执行:

      include征途私服包含了一个名为ffmpeg的子征途私服,这个子征途私服里存放了所有其他应用程序访问FFmpeg库时所需包含的头文件。

      MSvc++创建output_example.ex

      如果你不知道项包含什么,那么就输入:

        因为MSys将ln(制作符号链接的程序)以cp(文件复制)来对待,所以就产生了这些相同的拷贝。

        你必须完全的理解了部分。

        在向FFmpeg的二进制文件中添加其他的库时,你必须首先考虑库是以静态还是动态的链接到FFmpeg中。不要把这个和FFmpeg本身是静态/动态链接库搞混,你可以把静态的将第三方库链接到FFmpeg中,但是FFmpeg的库本身是动态加载的dll库。

        考虑这种情况:你想要更换xvidcore却不希望重新编译FFmpeg,那你就应该把xvidcore编译成动态链接库。

        其次你要考虑的是这些第三方库被安装到MSys系统中的什么位置上。

        对于绝大多数的是库,如果你把它们安装到缺省路径,你就得向FFmpeg的configure脚本传递额外的参数,这样才能在编译的时候找到这些库。

        如果你把这些库安装到gcc的缺省includelib路径下,就不需要额外指定这些参数了。如果你希望把动态库和静态库分开保存,那就不得不指定路径。这样的路径被称为你所安装的库的prefix。 如果你把库安装在了非gcc的缺省寻找路径,你必须向FFmpeg的configure脚本传递这些路径信息。

        介绍本指南是十分冗长的。如果你已经以前曾有过编译开源软件的经验,你可以尝试读一下。它要简短的多,只需要一些小的微调就能正常工作。
        但是如果你遇到了任何问题,在你向ffmpeg的邮件列表报告错误时请先仔细的通读本文,它是非常直观的,不少地方的细节甚至可能过于详细了。我们试图涵盖一切可能出错的地方,如果你精确的遵照文中的方法,你不会在Windows环境下的FFmpeg上有任何问题。尽你的努力去解决你所遇到的问题,绝大多数的FFmpeg开发人员不使用Windows,所以他们帮不了你什么。

        预备这里的内容可能和本文没有什么关系,但是我不想留下任何可能出错的地方。对于绝大多数人来说,这一部分可以跳过。 你需要一个解压的工具软件支持“*.tar.gz”和“*.tar.bz2”文件。你将需要把这些压缩包解压缩到指定的传奇外传sf下。如果你已经有这样的程序了,并且知道如何解压到特定传奇外传sf下,请阅读。 这里我将演示如何使用7-Zip或WinRAR来解压缩。推荐使用7-Zip,因为它是开源且免费的。

        bash-3.1-MSYS-1.0.11-snapshot.tar.bz2

        现在需要向configure脚本多传递两个参数:

        Install。不久你将看到

          1. 对于compile和build这两个词,本文统一的使用编译这个词,根据上下文读者应能区分语义上的差别,热血传奇sf

          如果你看到如下的画面,说明一切OK,注意有Microsoft (R) Library Manager字样。

          msys-1.0.dll-SNAP-1.0.11-2006.04.23.tar.bz2

            编译FFplay你必须事先安装了。

            ./configure --enable-memalign-hack --enable-mp3lame-?extra-ldflags=-L/usr/local/lib--extra-cflags=-I/usr/local/include

            这是绝大多数人发生误解的地方:FFmpeg SVN本身不能用MSVC++编译,但是如果它在MinGW下正确的被编译,那么你可以把生成的dll用在任何支持dll的程序里。

            Next >

              --extra-ldflags=-L<prefix>/lib --extra-cflags=-I<prefix>/include

                一个米色背景的窗口会出现在你的眼前,这是一个运行着bashrxvt程序

                1. 解压该软件包。

                链接

                编译的过程将持续很长时间。如果一切正常,结束后将返回提示符,并有如下的输出画面

                如果你已经安装配置完毕,那么请阅读下一部分(),否则的话请依次执行下面的步骤。

                注意你将用到的不是ffmpeg.exe,而是那些dll

                Next >

                5. 将bin下的SDL.dll复制到C:/msys/mingw/bin

                待配置完成后,将回到命令提示符,你应该看到如下的画面:

                用SVN方式获取FFmpeg如果你已经知道如何获取FFmpeg的源代码,那么请阅读下一部分。 由于FFmpeg的源代码存放在SVN仓库里,你必须使用命令行程序或是图形界面程序来访问。我个人推荐TortoiseSVN,因为它和Windows资源管理器结合的非常棒,所以我只介绍使用的方法。 编译

                上面假定了你是在完成了后在FFmpeg传世sf下执行的,如果你还没有编译动态库,那么依次执行如下:

                Next >

                选择MSys在启动菜单中位置,推荐MinGW,点Next >

                4. 将bin下的i386-mingw32msvc-sdl-config复制到C:/msys/mingw/bin,并重命名为sdl-config

                现在通过包含include/ffmpeg下的头文件,和使用刚才我们拷贝的那三个lib文件进行链接,就能够编写具备FFmpeg功能的应用程序了。

                从启动菜单出进入

                本文的内容几乎全部来自于,但是由于国内的网络封锁,很难访问这个域名下的内容,因此我一方面按照我自己的理解和实践做了翻译,另一方面也是为了能提供一个方便的参考方法。

                注:

                ffmpeg诛仙sf下有三个子诛仙sf名字分别为:libavutillibavcodeclibavformat。在这三个破天一剑私服下都有一个SLIBNAME_WITH_MAJOR.lib这样的文件,分别是avcodec-51.libavformat-50.libavutil-49.libMSVC++从这些文件中才能知道dll的导出函数。把这三个文件拷贝到Program Files下的FFmpeg下的lib破天一剑sf

                后面的则不变:

                  输入n后回车

                  把下面这行

                  如果你接受许可协议,点Yes

                    在开始往下阅读之前,你应该确保你完成并理解了和部分的内容。这不是推荐的,而是必须的。

                    测试例子:

                    把所有打勾的框去掉,然后点Finish

                    msys提示符下输入:

                    你可能已经注意到了每个库都有三个对应的dll,它们是同一份文件拷贝。

                    下载如下的文件:

                    注意你将用到的不是ffmpeg.exe,而是那些dll

                    Yes

                    DirectDraw在window下支持全屏模式(也叫独占模式)和窗口模式。DirectDraw基于全屏模式的编程例子在%_WINCEROOT%PUBLIC/DIRECTX/SDK/SAMPLES/DDRAW下有,读者可以去自己去查看,但是基于窗口下的DirectDraw编程例子确是很找到,魔域sf。下面我一步步介绍一下基于窗口的DirectDraw编程。
                    1、既然是基于窗口,首先我们就必须先创建一个窗口,先调用RegisterClass注册窗口类,再调用CreateWindowsEx创建一个窗口,用m_hAttach保存窗口句柄。

                    2、调用DirectDrawCreate创建一个DirectDraw对象

                    编译静态库

                    1. 由于MSVC++并不严格的遵循C标准,因此FFmpeg不能使用MSVC++来编译,而且将来也不会支持。所以整个编译过程必须使用MSys+MinGW系统来完成。

                    安装MSys

                    把它们全部解压到C:/msys/mingw

                    本文的目的是提供一切与FFmpeg在Windows下的相关帮助。它最初是一个针对用MSys+MinGW系统编译的手把手的教程,现在也增加了如何在你的项目中链接FFmpeg所产生的库(C++,C#)。
                    我们不讨论Cygwin,因为它的工作方式基本上与Unix系统相一致。 开始之前,破天一剑私服,首先要明确以下几点:

                    2. 将lib下的所有文件复制到C:/msys/mingw/lib

                    编译动态库和编译静态库没有什么明显的差别,只不过你要明确地告诉configure脚本你现在将编译动态库。

                    msys提示符下输入:

                    除了消耗点磁盘外不会有任何其他问题,不过对于所有使用这些库的可执行文件来说只链接到SLIBNAME_WITH_MAJOR,因此你可以放心的删除另外两个。换句话说你只需留下avcodec-51.dll、avformat-50.dll 和 avutil-49.dll就行了。

                    这是一个类Linux的shell并且在Windows上运行的就像是在使用一个真正的Linux shell。

                    如果你的操作系统是Windows x64,那你必须把下面的这些内容插入到:_WindowsNT标签后面(行36):

                    整合MinGWMSys

                    MSVC++链接DLL

                    选择MSys安装的路径,推荐C:/msys。点Next >

                    //DirectDraw.cpp

                    下面是我自己封装的一个DirectDraw类,

                    --enable-memalign-hack选项是在FFmpegWindows上编译成功所必须指定的。


                    类似这样:

                    首先配置FFmpeg,选择你所需要的部分,如果你还想安装额外的库(例如mp3lame,或xvid),参考后面的部分。不过先确保完成了这一部分和下一部分动态库编译。

                    CODE:

                    切换魔域私服到你之前存放FFmpeg源代码的传奇sf,如果你严格的按照本文的示范,那么就应该输入下面的命令来切换:

                    3、设置协作级别,通过m_pDD调用SetCooperativeLevel接口,将俩个参数设置为m_hAttach和DDSCL_NORMAL

                    现在通过包含include/ffmpeg下的头文件,和使用刚才我们拷贝的那三个lib文件进行链接,就能够编写具备FFmpeg功能的应用程序了。

                    3. 将include下的所有文件复制到C:/msys/mingw/include

                    接下来依次安装这些文件:

                    如果还没有MSys的话,那么现在启动它:

                    很好,你现在可以方便的运行ffmpeg.exeFFmpeg已经成功的编译并静态链接了。

                    得到如下的输出画面:

                      改为

                      CODE:

                      再按一下回车。

                      MSvc++创建output_example.exe

                      当然你得知道正确的参数使用方法,要产生Windows兼容的文件请参考以获取更多的信息。


                      在MSys下gcc的缺省路径是 /mingw另外,如果你把这些库的dll安装后,确保你的应用程序能在PATH环境变量中找到相应的dll。 我将展示下面这些库的安装:

                      ffmpeg传奇世界私服下有三个子冒险岛私服名字分别为:libavutillibavcodeclibavformat。在这三个破天一剑私服下都有一个SLIBNAME_WITH_MAJOR.lib这样的文件,分别是avcodec-51.libavformat-50.libavutil-49.libMSVC++从这些文件中才能知道dll的导出函数。把这三个文件拷贝到Program Files下的FFmpeg下的lib征途sf。

                      用文本编辑器打开C:/msys/msys.bat,譬如记事本等。如果你打算用MSVC++编译你的程序(注意:是你的程序,不是FFmpeg),你需要有.lib文件才能链接到FFmpeg的库。这些.lib文件可以使用微软的工具链中lib命令产生。为此,你的机器上必须已经安装了微软的Visual Studio或是Visual C++。把下面这行加到msys.bat的最前面,把路径替换成你机器上vcvars32.bat实际存在的路径。

                      5、创建裁剪器,裁剪器的作用就是将显示的内容限制在窗口区域内,超出的将不能显示。

                      4、创建主屏页和离屏页,主屏页就相当与显示器,当你往主屏上绘制什么东西显示器上将显示相应的东西,1.76精品传奇。离屏也就相当于内存DC,我们首先在离屏页上绘制好图形,然后通过Blt到主页上去。

                      用文本编辑器打开C:/msys/etc/fstab编辑。(注意:使用一个支持Unix换行风格的编辑器)

                        然后将Windows风格的路径名改为Linux风格的路径名,进入该奇迹sf,在该传世sf下输入

                        上面假定了你是在完成了后在FFmpeg蜀门sf下执行的,如果你还没有编译动态库,那么依次执行如下:

                        引用原文:

                        准备MSys+MinGW系统获取最新的MSys+MinGW系统。注意以下几个包的版本要求:


                          现在你可以按照前面的方式静态或动态重新编译FFmpeg,在运行configure脚本后,它将正确的找到SDL和ffplay。

                          对第三方库的支持

                          在开始往下阅读之前,你应该确保你完成并理解了和部分的内容。这不是推荐的,而是必须的。

                          这将会复制所有生成的重要文件到系统的"Program Files"传奇外传私服下。通常"Program Files"传奇世界sf"C:/Program Files",但也有可能会不同。要了解确切的路径,在提示符下输入:


                          SDL.dll必须在ffplay.exe德PATH路径中,程序才能启动。在MSys环境下mingw/bin在PATH环境变量中,因此运行ffplay.exe不会有问题。但如果你想在MSys外部运行,则应SDL.dll复制到和ffplay.exe同一个冒险岛sf下。

                          修改 "msys.bat"

                          程序已经编译好了,你可以在ffmpeg的征途私服下找到ffmpeg.exe这个文件。之后,你应该执行安装步骤

                          运行 MSYS-1.0.11-2004.04.30-1.exe.

                          //DirectDraw.h

                          切换到FFmpeg的源代码魔域sf,在开始编译前先清理上一次留下的中间文件是个好习惯:

                          这是绝大多数人发生误解的地方:FFmpeg SVN本身不能用MSVC++编译,但是如果它在MinGW下正确的被编译,那么你可以把生成的dll用在任何支持dll的程序里。

                          我提供了一个示例:

                          在Program Files下的FFmpeg完美国际私服里,现在应该多了一些文件:

                          如果你看到如下的画面,说明一切OK,注意有Microsoft (R) Library Manager字样。

                          如果没有错误的话,你现在就可以"make" FFmpeg了,在提示符后输入:

                          我提供了一个示例:

                          MSYS-1.0.11-2004.04.30-1.exe

                          lib魔兽世界sf下有一个子魔兽世界sfpkgconfig。如果你不知道它是干吗的,那就忽略它吧。

                          6、完成上面步骤后,我们就可以开始在绘图了。在处理WM_PAINT消息时调用OnPaint()
                          现在可以编译和运行程序了,能看到Test.bmp已经显示在窗口的客户区域中。

                          复制C:/msys/etc/fstab.sampleC:/msys/etc/fstab

                          下载这些文件:


                          上一篇: 传奇外传sf 网站性能相关小结 - hetaoblog的专栏 - 博客频道 - CSDN.NET计算机网络10问之5 如何共享你的文
                          下一篇:下面没有链接了