我想为一个播放视频文件的跨平台(Linux,Win)应用程序创建一个HTML5 / CSS3 / JS GUI。简单吧?
好吧,在过去的几周里,我花了很多时间寻找合适的解决方案,尝试了很多,此时,我正在拔头发。
我从检查Electron开始,但不幸的是它本身并不支持所有视频格式(如MKV等)。所以我认为LibVLC可能是在这个应用程序中使用的一个很好的组件。但我无法与Electron合作。像WebChimera(VLCLib for Electron)这样的项目似乎已经死了。
我尝试的另一个角度是安装Visual Studio Code,运行C ++ Hello World测试(G ++编译,效果很好),然后尝试将CEF(编译后的二进制文件,似乎更容易?)到我的项目中。不幸的是,我的知识还远远不足以让CEF在VSCode中运行(g ++很好,但这需要cmake?)
所以,我再次转向StackOverflow社区,询问一些指示并听取一些想法。也许还有其他角度。你会怎么做?
我想我可能会使用C ++,CEF和LibVLC走上正轨。如果是这样,是否有人可以帮助我在Visual Studio代码中运行CEFSimple?我在Linux上开发。如果更好的话,我愿意尝试编辑/ IDE。
最后,我安装了QT Creator和QT 5.6.2,并使用QWebEngineView作为中心小部件。
使用..
QString appPath = qApp->applicationDirPath();
view->setUrl( QUrl::fromLocalFile( appPath + "/GUI/index.html") );
我能够加载我的本地HTML文件,它的工作原理。
WebEngine不在QT Creator的小部件列表中,所以我发现我可以通过在主窗口标题中添加一个include来以编程方式创建它:
#include <QWebEngineView>
然后在我的主窗口代码中写这个..
QWebEngineView *view = new QWebEngineView(this);
setCentralWidget(view);
我仍然需要看看我是否可以与QWebEngineView进行通信,以便捕获事件并将数据发送到HTML中的javascript函数。
由于该项目现在用C语言编写,Qt负责HTML GUI,我确信我也可以在Windows上编译它。当我到达LibVLC的部分时,C也会有所帮助。
编辑于2017年12月25日:我现在也设法与QWebEngineView进行通信。通过以下方式简单Qt到QWebEngineView通信:
view->page()->runJavaScript("MyJSFunction('optionalArgument')");
为了更强大和双向的通信,我正在使用QWebChannel