Important: Please read the Qt Code of Conduct - https://forum.qt.io/topic/113070/qt-code-of-conduct

[SOLVED] Embedding flash player into a QtWebKit application.



  • Hello,
    I'm developing a QtWebKit based application and I need it to support flash player
    out of the box.
    I already have flash content working by installing the Mozilla flash player plugin and
    enabling plugins in the application's web settings. However, I would like to know if
    there's a way for the application to support flash content from start, without
    having to install a separate plugin. The same Google Chrome works.

    Thank you

    Sergio



  • From what I know you need to put plugin in any path specified in http://doc.qt.nokia.com/latest/qtwebkit.html (ctrl+f "Netscape Plugin Support") and enable plugins in settings.

    You may also try to modify QWebPluginFactory



  • Hello, thank you for replying.
    And what would the plugin be?, the one
    dll file that comes with flash?



  • I'm not a Windows specialist. For Linux it would be one file libflash.so

    as I found there's more files in C:\WINDOWS\system32\Macromed\Flash
    You need to figure out it yourself. You should be able to remove flash and copy the dll to your executable directory and try it.

    Hope I've helped you.



  • Yes I tried coping those files that but it didn't work.
    I guess I'll have to figure out what files are the webkit looking for exactly, and
    where.



  • Actually Qwebkit looks for NPSWF32.dll adobe plugin for playing the flash content.
    You may find this dll under adobe installed directory on your system.

    and add the below mention line in you code.

    @
    QWebView* webViewChild = new QWebView;
    webViewChild->settings()->setAttribute(QWebSettings::PluginsEnabled, true);
    @

    [EDIT: code formatting, Volker]



  • Hi, that you for replying.

    Yes, the Webkit looks for the standard plugin location.
    I was wondering whether there is a way to specify the
    directory which it will look for the plugin. That way I could
    just deploy the app with a copy of the NPSWF32.dll file and
    the Webkit will run Flash content out of the box. It won't
    matter if the 'user' has the plugin installed.



  • I don't know does the Adobe Flash is distributed with rights "to distribute it" with your program. It may be illegal.



  • According to the sources in 4.8[1] the paths set in the environment variable QTWEBKIT_PLUGIN_PATH are also search for plugins. You might give that a try. Be aware to set the environment before instantiating any webkit classes.

    fn1. "src/3rdparty/webkit/Source/WebCore/plugins/PluginDatabase.cpp":http://qt.gitorious.org/qt/qt/blobs/4.8/src/3rdparty/webkit/Source/WebCore/plugins/PluginDatabase.cpp#line419



  • Hello,

    I can't find a way to set this environment variable: QTWEBKIT_PLUGIN_PATH.
    I don't have any experience doing these procedures before.

    Could you please give me some pointer? or a short code example?

    Thank you



  • Hi,

    you can not distribute Adobe plugins binaries along with your application.
    In the installation pacakge of your project ask user to download the latest plugin from the adobe website.
    It is against the copyright to distribute adobe dll's with third party app.



  • [quote author="Ashish Mittal" date="1328797569"]Hi,

    you can not distribute Adobe plugins binaries along with your application.
    In the installation pacakge of your project ask user to download the latest plugin from the adobe website.
    It is against the copyright to distribute adobe dll's with third party app.
    [/quote]

    Thank you for your reply.

    I still would like to know how to do the procedure indicated by Volker.

    [quote author="Volker" date="1325442522"]According to the sources in 4.8[1] the paths set in the environment variable QTWEBKIT_PLUGIN_PATH are also search for plugins. You might give that a try. Be aware to set the environment before instantiating any webkit classes.

    fn1. "src/3rdparty/webkit/Source/WebCore/plugins/PluginDatabase.cpp":http://qt.gitorious.org/qt/qt/blobs/4.8/src/3rdparty/webkit/Source/WebCore/plugins/PluginDatabase.cpp#line419[/quote]



  • @
    qputenv("QTWEBKIT_PLUGIN_PATH", "/path/to/the/plugin/directory");
    @



  • [quote author="Volker" date="1328829852"]@
    qputenv("QTWEBKIT_PLUGIN_PATH", "/path/to/the/plugin/directory");
    @[/quote]

    That's it. That's the command I needed.

    Thank you very much.



  • You're welcome. If your issue is solved, it would be nice to add [Solved] to the topic. Just hit the edit link to the right of the very first post and adjust the title. Thanks!



  • Hi,

    Thank you again, I was going to do that but
    I thought there was a more systematic way for doing so (and didn't find it).



  • Thanks!

    The QnQ forums feature is in the works. It will come some time soon. You can have a look at the new features in the "QnA Testing Area":/forums/viewforum/46/ - feel free to play around there, it's there just for testing purpose and we're supposed to "take it apart" ("MariusG":/member/2) :-)



  • I've found solution, that works for me in Qt 4.8.

    I'm creating a directory named plugins in the same directory that the my app executable and Qt libraries located in, and copy NPSWF32.dll inside it. After that application starts to recognize flash content.



  • qputenv("QTWEBKIT_PLUGIN_PATH","C:\Windows\SysWow64\Macromed\Flash");



  • @MtDewQt

    qputenv("QTWEBKIT_PLUGIN_PATH","C:\Windows\SysWow64\Macromed\Flash");
    

Log in to reply