Qt--编译QtWebEngine支持mp4

1.首先在编译QtWebEngine之前我需要准备下环境

1.我用的vs2013编译器。

2.采用的是Qt 5.6.3。

3.系统windows 10。

因为我并不是全部编译Qt项目,只是把QtWebEngine源码拿出来编译。

在编译大型项目之前其实难点就是在环境的配置上,大多数的编译问题都是环境的问题。这点我深有体会,我在编译chromium的时候就遇到了,其中花了将近一周的时间去排查问题。

2.配置编译环境

接下来需要你严格按照的我步骤去配置环境:

1.需要python2.7,注意不支持python3.你去官网去下载一个2.7版本。然后把它放到你的环境变量的最前面(是为了覆盖可能存在的python3版本)。

2.下载 Perl (Strawberry vesion) from http://strawberryperl.com/

3.下载 Bison and flex from https://sourceforge.net/projects/winflexbison/ (将 win-bison.exe 重命名为 bison.exe and win-flex.exe to flex.exe)

4.下载 Gperf from http://gnuwin32.sourceforge.net/packages/gperf.htm

5.将bison.exe和flex.exe 还有解压好的Gperf放到一个文件夹中,并一定要加入环境变量中。

6.最后环境弄好之后需要重启机器或者重启所有的explorer.exe进程

Qt--编译QtWebEngine支持mp4_第1张图片

这些工具基本上都是需要才能下载,但是我为了方便都会放到网盘上提供给大家下载。

网盘地址:https://pan.baidu.com/s/1eipoPOiV83YHyTQ8V53LpQ  提取码:cpps

3.具体步骤

1.右键vs2013 开发者工具,使用管理员权限打开

Qt--编译QtWebEngine支持mp4_第2张图片

2.cd C:\Qt\Qt5.6.3\5.6.3\Src\qtWebengine 目录

3."C:\Qt\Qt5.6.3\5.6.3\msvc2013\bin\qmake.exe" WEBENGINE_CONFIG+=use_proprietary_codecs

Qt--编译QtWebEngine支持mp4_第3张图片

注意我的Qt目录,需要替换成你自己的安装目录

4.文件的编码修改,因为使用vs工具编译,它需要文件的文件格式为utf-8 BOM格式

如果你不修改的话,编译过程就爆出这样的错误 error C2220: 警告被视为错误 - 没有生成“object”文件

但是为了方便编译,我找到了网友做好的python脚本去处理这件事。再次非常感谢那位提供帮助的网友

将下面的文字保存并命名为"unicode_escape.txt"

c:\qt\qt5.6.3\5.6.3\src\qtwebengine\src\3rdparty\chromium\url\scheme_host_port.h

c:\qt\qt5.6.3\5.6.3\src\qtwebengine\src\3rdparty\chromium\third_party\boringssl\src\include\openssl\ssl.h

c:\qt\qt5.6.3\5.6.3\src\qtwebengine\src\3rdparty\chromium\v8\src\parsing\parser.cc

c:\qt\qt5.6.3\5.6.3\src\qtwebengine\src\3rdparty\chromium\third_party\boringssl\src\crypto\curve25519\curve25519.c

c:\qt\qt5.6.3\5.6.3\src\qtwebengine\src\3rdparty\chromium\third_party\boringssl\src\include\openssl\curve25519.h

C:\Qt\Qt5.6.3\5.6.3\Src\qtwebengine\src\3rdparty\chromium\third_party\snappy\src\snappy-stubs-internal.h

C:\Qt\Qt5.6.3\5.6.3\Src\qtwebengine\src\3rdparty\chromium\third_party\re2\src\re2\unicode_casefold.h

C:\Qt\Qt5.6.3\5.6.3\Src\qtwebengine\src\3rdparty\chromium\third_party\qcms\src\qcms.h

C:\Qt\Qt5.6.3\5.6.3\Src\qtwebengine\src\3rdparty\chromium\third_party\openmax_dl\dl\api\omxtypes.h

C:\Qt\Qt5.6.3\5.6.3\Src\qtwebengine\src\3rdparty\chromium\third_party\harfbuzz-ng\src\hb-private.hh

C:\Qt\Qt5.6.3\5.6.3\Src\qtwebengine\src\3rdparty\chromium\third_party\harfbuzz-ng\src\hb-ot-head-table.hh

C:\Qt\Qt5.6.3\5.6.3\Src\qtwebengine\src\3rdparty\chromium\third_party\harfbuzz-ng\src\hb-ot-layout-common-private.hh

C:\Qt\Qt5.6.3\5.6.3\Src\qtwebengine\src\3rdparty\chromium\third_party\harfbuzz-ng\src\hb-ot-shape-complex-indic.cc

C:\Qt\Qt5.6.3\5.6.3\Src\qtwebengine\src\3rdparty\chromium\third_party\harfbuzz-ng\src\hb-ot-shape-complex-thai.cc

C:\Qt\Qt5.6.3\5.6.3\Src\qtwebengine\src\3rdparty\chromium\third_party\boringssl\src\include\openssl\aead.h

C:\Qt\Qt5.6.3\5.6.3\Src\qtwebengine\src\3rdparty\chromium\third_party\boringssl\src\include\openssl\engine.h

C:\Qt\Qt5.6.3\5.6.3\Src\qtwebengine\src\3rdparty\chromium\third_party\boringssl\src\crypto\cmac\cmac.c

C:\Qt\Qt5.6.3\5.6.3\Src\qtwebengine\src\3rdparty\chromium\third_party\boringssl\src\crypto\rsa\internal.h

C:\Qt\Qt5.6.3\5.6.3\Src\qtwebengine\src\3rdparty\chromium\third_party\skia\src\effects\skdisplacementmapeffect.cpp

C:\Qt\Qt5.6.3\5.6.3\Src\qtwebengine\src\3rdparty\chromium\crypto\p224.h

C:\Qt\Qt5.6.3\5.6.3\Src\qtwebengine\src\3rdparty\chromium\crypto\p224.cc

C:\Qt\Qt5.6.3\5.6.3\Src\qtwebengine\src\3rdparty\chromium\third_party\libxslt\libxslt\xslt.c

C:\Qt\Qt5.6.3\5.6.3\Src\qtwebengine\src\3rdparty\chromium\net\quic\crypto\crypto_handshake_message.h

C:\Qt\Qt5.6.3\5.6.3\Src\qtwebengine\src\3rdparty\chromium\media\formats\mp2t\ts_section_pmt.h

下面的python脚本就是修改文件的编码格式

import sys
import os
import codecs
import chardet
 
def utf8_converter(file_path , universal_endline =True ):
    # Read from file
    print("file:"+ file_path)
    file_open = open(file_path, "rb")
    raw = file_open.read()
    encoding_name = chardet.detect(raw)[ 'encoding']
    print(encoding_name )
    file_open.close()
    # Decode
    raw = raw.decode(encoding_name)
    # Remove windows end line
    if universal_endline:
        raw = raw.replace( '\r\n', '\n')
    # Encode to UTF-8-sig
    raw = raw.encode('utf-8-sig')
 
    file_open = open(file_path, 'wb')
    file_open.write(raw)
    file_open.close()
    return 0
 
if __name__ == '__main__' :
    '''file = sys.argv[1].encode( 'unicode_escape')'''
    f = open("unicode_escape.txt", "r")
    s = f.read()
    files = s.split("\n")
    for file in files:
        utf8_converter(file, False)
    f.close()

4."C:\Program Files (x86)\Microsoft Visual Studio 12.0\VC\bin\nmake.exe" all

使用VS nmake 编译,all表示编译所有的项目,并且生成了examples

5."C:\Program Files (x86)\Microsoft Visual Studio 12.0\VC\bin\nmake.exe" install

漫长的等待,我的笔记本编译大概了5,6个小时,剩下的就是文件的复制

6.测试程序

到这里就是编译结束了。

如果你编译了全部的时候,就可以在C:\Qt\Qt5.6.3\5.6.3\Src\qtwebengine\examples\webengine\quicknanobrowser下找到demo程序。

将quicknanobrowser.exe 拷贝到C:\Qt\Qt5.6.3\5.6.3\msvc2013\bin目录下,否则会提示你找不到Qt的相关dll文件。

Qt--编译QtWebEngine支持mp4_第4张图片

 

你可能感兴趣的:(Qt实战记录,WebEngine,支持mp4)