1.获取webkit源码:
从webkit官网获取源码包:
wget -c https://webkitgtk.org/releases/webkitgtk-2.30.0.tar.xz
2.解压源码并安装依赖
执行:
webkitgtk-2.30.0$ ./Tools/gtk/install-dependencies
还需要再安装一个woff2包,执行命令:
sudo apt install libwoff2*
3.配置
Webkit是用cmake构建的,在顶层目录webkitgtk-2.30.0下,执行:
cmake -DPORT=GTK -DCMAKE_BUILD_TYPE=RelWithDebInfo -GNinja -DENABLE_MINIBROWSER=ON -DUSE_WPE_RENDERER=OFF -DENABLE_GAMEPAD=OFF -DENABLE_BUBBLEWRAP_SANDBOX=OFF
4.编译
编译过程非常吃内存,如果内存不足,很可能遇到下面的错误:
为了增加可用内存,最好有足够的交换空间,如果交换分区的空间不足,可以通过增加交换文件的方式在增加交换空间,过程如下:
首先关闭所有交换空间,执行
sudo swapoff -a
创建一个8G的交换文件
sudo dd if=/dev/zero of=/swapfile bs=64M count=128
格式化交换空间为交换分区格式
sudo mkswap /swapfile
修改模式:
sudo chmod 0600 /swapfile
执行启动所有交换分区
sudo swapon -a
sudo swapon /swapfile
sudo swapon --show
然后继续编译,不再出之前的错误,编译过程中,交换分区和交换文件的占用变化情况如下:
最后发现摄制成8G的交换文件还是不够,不得不外挂一个32G的优盘专门作为交换磁盘,如下图:
内存不够的问题最终解决。
编译完成:
安装,执行ninja install
5.测试:
安装完成,编译的时候选中了MiniBrowser,实际运行一下:
6.多媒体
可以发现在安装倚赖的过程中安装了libavcodec-dev,所以很可能Webkitgtk利用了FFMPEG作为底层解码框架。
HTML5多媒体测试:
基于gstreamer的多媒体框架:
单进程模式: