• <ins id="pjuwb"></ins>
    <blockquote id="pjuwb"><pre id="pjuwb"></pre></blockquote>
    <noscript id="pjuwb"></noscript>
          <sup id="pjuwb"><pre id="pjuwb"></pre></sup>
            <dd id="pjuwb"></dd>
            <abbr id="pjuwb"></abbr>
            Cpper
            C/C++高級工程師 Android高級軟件工程師 IT集成工程師 音頻工程師 熟悉c,c++,java,c#,py,js,asp等多種語言 程序猿

            FFmpeg是在Linux平臺下開發的,但它同樣也可以在其它操作系統環境中編譯運行,本文介紹的就是在windowsXP下編譯FFmpeg。
            一 準備環境:

            1 下載 mingw 和 MSYS

            去 http://sourceforge.net/projects/mingw/  下載

            A 點擊“DownLoad mingw-get-inst-...exe”;

            B 切換到頁面:download? Check your browser's security bar, or try a direct link, or try another mirror. ;

            C 點擊“direct link”下載類似:mingw-get-inst-20110802.exe 的文件。

            提示:msys此處就不用下載了,mingw-get-inst-20110802.exe 中已經包含了msys1.0,后面安裝的時候就可以看到該選項。

            2 下載 yasm

            ffmpeg編譯里面的匯編代碼需要yasm.exe  

            去官網:http://yasm.tortall.net/Download.html 下載

            直接下載:Win32 .exe (for general use on 32-bit Windows)

            文件名為:yasm-1.1.0-win32.exe

            3 下載 ffmpeg

            ffmpeg可以到 http://www.ffmpeg.org/releases/ 下載

            本人選擇的是最新版本:ffmpeg-0.8.5.tar.gz

            文件名為:ffmpeg-0.8.5.tar.gz

            4 下載 SDL

            SDL下載可以到:http://www.libsdl.org/download-1.2.php

            選擇:SDL-1.2.14.tar.gz - GPG signed

            此版本需要自己編譯,后面會解釋為什么下載該版本,而不下載編譯好的SDL-devel-1.2.14-mingw32.tar.gz (Mingw32)

            5 下載 pthreadGC2.dll
            pthreadgc2.dll 是功能強大的處理數字化影視作品編輯軟件premiere6運行所需的一個DLL文件。這是一個無威脅文件。屬于Open Source Software community project的文件。直接去baidu.com三搜索下載就可以了。

            二 編譯步驟

            1 安裝 mingw 和 msys

                執行下載文件:mingw-get-inst-20110802.exe,

                在第3步選擇“Download latest repository catalogues”

                選擇安裝路徑:C:\MinGW(我直接采用默認路徑,未做修改)

                在“Select Components”步驟中選擇:

                √  C Compiler (默認且一定選擇)

                √  C++ Compiler

                √  MSYS Basic System(選擇此項將會安裝msys,msys則不需要另外安裝)

                √  MinGW Developer ToolKit

                等待安裝完成!(需要等待一定的時間,因為安裝過程需要下載文件,可想而知,網速越快,安裝越快)

                安裝完成后,在C:\MinGW目錄下可以看到 msys 文件夾,msys也已經安裝。

            2 配置 msys.bat 批處理文件

                為了方便VS200X以及VS2010調用ffmpeg的動態庫,可以通過配置讓ffmpeg編譯時產生windows下調用dll對應的lib,當然,如果你沒有這個需要,那么就可以省略以下處理,直接進入步驟3。

                進入:C:\MinGW\msys\1.0\文件夾,使用UltraEdit打開msys.bat文件,在文件的最最前面加入如下一行:

                call "D:\Program Files\Microsoft Visual Studio 10.0\VC\bin\vcvars32.bat"

                其中“D:\Program Files\Microsoft Visual Studio 10.0”為你機器上安裝VS200X或VS2010的目錄,我的電腦安裝的是VS2010,并且安裝在了D盤。文件修改后保存即可。

            3 配置 yasm

                為了減少配置環境變量的麻煩,本處直接把 yasm-1.1.0-win32.exe 文件名修改成:yasm.exe,并放到系統目錄下:C:\WINDOWS\system32。

            4 解壓ffmpeg 與 SDL

                ffmpeg-0.8.5.tar.gz 的解壓目錄您可以直接選擇,本人解壓到:D:\ffmpeg中,解壓后目錄為:D:\ffmpeg\ffmpeg-0.8.5

                SDL-1.2.14.tar.tar 解壓到 D:\ffmpeg\ffmpeg-0.8.5 目錄下,解壓后的目錄結構為:D:\ffmpeg\ffmpeg-0.8.5\SDL-1.2.14

            5 編譯SDL

                雙擊“C:\MinGW\msys\1.0\msys.bat”,啟動“MinGW32”,

                切換到SDL目錄:D:\ffmpeg\ffmpeg-0.8.5\SDL-1.2.14,切換方法如下:

                $ cd /d

                $ cd ffmpeg

                $ cd ffmpeg-0.8.5

                $ cd SDL-1.2.14

                再執行以下命令:

                $ ./configure --prefix=/usr 回車等待…

                $ Make 回車等待…

                $ make install 回車等待…

                編譯完成后,在C:\MinGW\msys\1.0的bin、include和lib文件夾下可以看到編譯結果。

                直接編譯ffmpeg時,發現未生成ffplay.exe,

                configure的時候提示信息如下:

                SDL support  no

                所以需要開啟SDL,本人頭天接觸這東西,不知道使用什么方法可以開啟,但通過編譯SDL后

                SDL support  yes

                如果你的 SDL 已經是開啟狀態,你可以直接使用下載中提到的編譯好的壓縮包SDL-devel-1.2.14-mingw32.tar.gz,直接解壓,并把解壓包中的 bin、include和lib文件夾中的文件復制到D:\ffmpeg\ffmpeg-0.8.5,與步驟六相同,只是不在從C:\MinGW \msys\1.0中復制。

            6 拷貝編譯結果:

                C:\MinGW\msys\1.0  到 c:/mingw下 覆蓋

                bin下的SDL.dll、sdl-config拷貝到 bin中

                include下的 SDL文件夾拷貝到 include中

                lib下的libSDL.a、libSDL.dll.a、libSDL.la和libSDLmain.a拷貝到 lib中

            7 修改sdl-config配置文件

                使用UltraEdit打開D:\ffmpeg\ffmpeg-0.8.5\bin下的 sdl-config文件

                把 prefix=/usr 該成: prefix=c:/mingw

                其中:c:/mingw 為 mingw的安裝路徑,請根據你的安裝進行修改。

            8 編譯 ffmpeg

                雙擊“C:\MinGW\msys\1.0\msys.bat”,啟動“MinGW32”,

                切換到SDL目錄:D:\ffmpeg\ffmpeg-0.8.5\SDL-1.2.14,

                切換方法如下:

                $ cd /d

                $ cd ffmpeg

                $ cd ffmpeg-0.8.5

                如果你的“MinGW32”沒有關閉,可以直接切換路徑到:D:\ffmpeg\ffmpeg-0.8.5。

                再執行以下命令:

                $ ./configure --enable-shared --disable-static --enable-memalign-hack

                請耐心等待一段時間

              $ make

               需要等待很長一段時間,等待編譯結束。


                為了匯總編譯結果,請繼續執行以下命令:

                $ make install

                等待完成,在C:\MinGW\msys\1.0\local中將會生成 bin、include、lib等文件夾,其中包含了ffmpeg.exe、ffplay.exe、ffprobe.exe、dll、lib和頭文件等。

            9 運行測試

            直接雙擊運行”ffplay.exe”,如果提示沒有“pthreadGC2.dll”文件,你可以包“pthreadGC2.dll”直接拷貝到當前目錄,也可放到系統目錄C:\WINDOWS\system32中。
            avcodec.lib avformat.lib swscale.lib avutil.lib
            posted @ 2012-12-29 19:53 ccsdu2009 閱讀(4494) | 評論 (0)編輯 收藏
             
            from lxml import etree

            root 
            = etree.parse('xml.xml').getroot()

            itr 
            = root.iter()
            for i in itr:
                
            print 'node:' + i.tag
                att 
            = i.keys()
                
            for j in att:
                    
            print 'attrib:' + j,i.get(j)
            posted @ 2012-12-14 19:35 ccsdu2009 閱讀(484) | 評論 (0)編輯 收藏
             
            import glob
            import io

            file 
            = open('out.txt','w')

            for filename in glob.glob("E:\\*.cpp"):
                str 
            = '@'
                str 
            += filename
                str 
            += '@\n'
                file.write(str)

            file.close()
            posted @ 2012-11-10 18:53 ccsdu2009 閱讀(520) | 評論 (0)編輯 收藏
             
            1.對于讀二進制文件,必須使用rb模式
            如果使用r模式,那么在fread的時候可能會出現讀取字節為0的情況
            2.如果是寫二進制文件,必須使用wb模式
            否則寫成的文件可能存在異常
            posted @ 2012-10-11 21:22 ccsdu2009 閱讀(416) | 評論 (0)編輯 收藏
             
            1. &amp  空格
            2. %27   '
            3. %28  (
            4 %29   )
            4 %2C  .
            posted @ 2012-10-09 22:12 ccsdu2009 閱讀(284) | 評論 (0)編輯 收藏
             
                QTranslator* translator = new QTranslator(NULL);
                translator->load("prj_zh.qm");
                app.installTranslator(translator);

            使用linguist.exe即可把ts文件轉換為qm語言資源文件
            posted @ 2012-09-09 11:53 ccsdu2009 閱讀(1332) | 評論 (0)編輯 收藏
             
            很簡單的 QSound::play(filename).
            posted @ 2012-09-02 18:33 ccsdu2009 閱讀(2003) | 評論 (1)編輯 收藏
             
            QFileInfo類提供了與系統無關的文件信息,它能提供以下信息:
            1.文件和文件路徑
            2.存取權限,以及文件是否為目錄或符號鏈接
            3.文件大小和最后的讀取時間
            4.QFileInfo可以使用相對路徑或絕 對路徑。
            5.要判斷一個函數是否存在,使用exits()函數,文件大小可以通過size()函數獲取,文件類型可以通過isFile(),isDir(),isSymLink()來獲 取,symLinkTarget()函數返回符號鏈接所指向的真正文件名。

            值得說明的是QFileInfo支持從資源獲取文件.
            posted @ 2012-08-13 21:27 ccsdu2009 閱讀(1051) | 評論 (0)編輯 收藏
             
            如下只允許輸入數字和字母切長度為九
                QRegExp regx("[a-zA-Z0-9]{9}");
                QValidator
            * validator = new QRegExpValidator(regx,this);

                edit   
            = new QLineEdit();
                edit
            ->setValidator(validator);
            posted @ 2012-08-01 20:56 ccsdu2009 閱讀(886) | 評論 (0)編輯 收藏
             
            效果不太明顯
            class StateMachine : public QWidget
            {
                Q_OBJECT
            public:
                StateMachine(QWidget 
            *parent = 0, Qt::WFlags flags = 0);
                
            ~StateMachine();
            private:
                
            void createWidget();
            private:
                QStateMachine
            * machine;
                QState
            *        state1;
                QState
            *        state2;

                QLayout
            *       layout;

                QLineEdit
            *     edit1;
                QPushButton
            *   button1;
                QLineEdit
            *     edit2;
                QPushButton
            *   button2;
            };

            StateMachine::StateMachine(QWidget *parent, Qt::WFlags flags):
            QWidget(parent,flags)
            {
                machine 
            = new QStateMachine;
                state1 
            = new QState(machine);
                state2 
            = new QState(machine);
                createWidget();
            }

            StateMachine::
            ~StateMachine()
            {
            }

            void StateMachine::createWidget()
            {
                layout 
            = new QHBoxLayout(this);
                edit1 
            = new QLineEdit("QLineEdit1");
                button1 
            = new QPushButton("Click1");
                
                edit2 
            = new QLineEdit("QLineEdit2");
                button2 
            = new QPushButton("Click2");
                edit2
            ->setVisible(false);
                button2
            ->setVisible(false);

                layout
            ->addWidget(edit1);
                layout
            ->addWidget(button1);
                layout
            ->addWidget(edit2);
                layout
            ->addWidget(button2);
                 
                state1
            ->assignProperty(edit2,"visible",false);
                state1
            ->assignProperty(button2,"visible",false);
                state1
            ->assignProperty(edit1,"visible",true);
                state1
            ->assignProperty(button1,"visible",true);
                machine
            ->setInitialState(state1);

                state2
            ->assignProperty(edit1,"visible",false);
                state2
            ->assignProperty(button1,"visible",false);
                state2
            ->assignProperty(edit2,"visible",true);
                state2
            ->assignProperty(button2,"visible",true);

                QPropertyAnimation
            * ani = new QPropertyAnimation();
                ani
            ->setDuration(2000);
                ani
            ->setEasingCurve(QEasingCurve::InOutExpo);   

                QSignalTransition 
            *transition1=state1->addTransition(button1,SIGNAL(clicked()),state2);    
                transition1->addAnimation(ani);
                QSignalTransition 
            *transition2=state2->addTransition(button2,SIGNAL(clicked()),state1);
                transition2
            ->addAnimation(ani);
                machine
            ->start();  
            }
            posted @ 2012-07-30 23:09 ccsdu2009 閱讀(1119) | 評論 (0)編輯 收藏
            僅列出標題
            共38頁: First 11 12 13 14 15 16 17 18 19 Last 
             
            亚洲欧美一级久久精品| 国产精品内射久久久久欢欢| 国产精品久久新婚兰兰| 国产午夜福利精品久久2021 | AA级片免费看视频久久| 久久精品女人天堂AV麻| 7777精品久久久大香线蕉| 久久青草国产手机看片福利盒子| 99精品伊人久久久大香线蕉| 国产精品久久久久久久人人看| 久久国产免费观看精品3| 欧洲国产伦久久久久久久| 久久精品aⅴ无码中文字字幕重口 久久精品a亚洲国产v高清不卡 | 亚洲国产成人精品无码久久久久久综合 | 伊人伊成久久人综合网777| 久久精品a亚洲国产v高清不卡| 色综合久久天天综线观看| 久久国产精品一区二区| 偷偷做久久久久网站| 久久精品亚洲精品国产欧美| 久久精品99久久香蕉国产色戒 | 欧美精品一区二区久久| 精品久久久久久久无码| 囯产极品美女高潮无套久久久| 精品久久久久中文字幕一区| 91久久精品91久久性色| 久久亚洲国产成人精品性色| 奇米影视7777久久精品人人爽| 久久久艹| 午夜视频久久久久一区 | 伊人久久精品无码av一区| 亚洲伊人久久成综合人影院| 久久WWW免费人成—看片| 99国内精品久久久久久久| 大香网伊人久久综合网2020| 久久精品国产半推半就| 久久伊人精品青青草原高清| 91久久成人免费| 精品久久久久久无码中文野结衣| 51久久夜色精品国产| 精品一久久香蕉国产线看播放|