How does QWebKit play a flash?
-
Hi guys,
I am using Qt 4.7.1 and hope to use QWebView to open a web site that has some flash source files.
My code like this:@QWebView* webView = new QWebView;
webView->settings()->setAttribute(QWebSettings::PluginEnabled, true);
webView->load(QUrl("http://news.sina.com.cn/"));
webView->show();@The above code can work on Windows. But, on Mac, I see some icons(a box with a question mark on it). Obviously, it is failed to load the plug-in. However, as the matter of fact, I installed the plug-in in "/Library/Internet Plug-Ins/Flash Player.plugin". And, I can open this website with Safari/Firefox on Mac OS. By the way, my Mac is iMac and OS is 10.6.6.
I don't know what is wrong in my code. Could you give me some help? Thank you so much.
- Frank
EDIT: added @ tag (vcsala)
-
Hi Frank,
I had a similar problem recently. My issue was that I was running my app as 64-bit and the flash plugin is 32-bit, so they cannot interact.
I'm using Python and PyQt, so my solution is probably different to yours, but you'll need to make sure your application compiles as 32-bit and possibly Qt as well (although this may have been compiled to support both architectures)
Hope this helps,
Rory -
Hi Rory,
Thanks for your response.
Yes, my application is 64bit. The installed flash plug-in is 32bit. I guess that it could be the reason. But, my application must run as 64bit. So, :-(.
However, my Safari is 64bit. Why can it play flash? I searched this question on Internet. Some people think that I should lunch WebKitPluginHost.app. Through this host application, access 32bit flash plugin. Your idea? And, how do I lunch it in Qt? Could you help me? Thank you so much. Maybe, I should install a 64bit flash plugin. But, I don't search it on Internet. Does flash plugin have 64bit version?
- Frank
-
I gdb my application. There is the error:
Error loading /Library/Internet
Plug-Ins/Flash Player.plugin/Contents/MacOS/Flash Player:
dlopen(/Library/Internet Plug-Ins/Flash Player.plugin/Contents/MacOS/Flash
Player, 262): no suitable image found. Did find:
/Library/Internet Plug-Ins/Flash Player.plugin/Contents/MacOS/Flash Player:
no matching architecture in universal wrapper -
Hi Frank,
As far as I know, there is no version of flash for 64-bit architectures.
I don't know what the solution to your problem is if you can't compile your app as 32-bit. But you're right, Safari is able to overcome this issue so it must be possible.
Using a 32-bit host app to run the flash plugin certainly sounds like a possibility, but I don't have any experience using this. Sorry.
Good luck,
Rory -
There is preview version of 64bit adobe-flash and it works fine on linux.
http://labs.adobe.com/downloads/flashplayer10_square.html -
Hi Rory,
Thanks for this quick response. When build my application as 32bit, a flash can be shown. But unfortunately, my application must be 64bit. Ooops...Hi Tomma,
Thanks for your response. In fact, I installed this version of flash plug-in from "http://download.macromedia.com/pub/labs/flashplayer10/flashplayer10_2_p3_64bit_mac_111710.dmg". But, you can see that this plug-in still be 32bit, when use nm command to check its information(nm /Users/frank/Desktop/Test/fancybrowser/build/Debug/fancybrowser.app/Contents/MacOS/fancybrowser -arch x86_64). So, even if install this version of flash plug-in, a flash can not be shown, yet.Hi Rory and Tomma,
Is there other way to show flash in Qt except for QtWebKit? Today, I will try Phonon library. Hope to see any progress. Thank guys.-Frank
-
Hi guys,
Today, I tried Phonon library to play a flash. It is failed because QuickTime on which Phonon depends does not support swf(flash file format). Ooops :-(
-Frank
-
I have the same problem, how do i compile my app as 32bit?
if I make an project only of qml and use an webview I can run html5 videos with no problem but the debugger shows lots of errors and some times the app crash, on qt I get the same error as the OP
-
Do you work on XCode?
If so, follow the step: "Targets" -> "(Your Application)" -> "Get Info" -> go to "Build" table -> go to "Architectures" -> go to "Architectures" -> Select "32-bit Itel".
That's all. Hope that it can help you.
-
I resolved this problem. The solution just is to invoke a 32bit process(in fact, it is a application) to play a flash while a 64bit application executes. So far, everything is OK. By the way, I don't use WebKitPluginHost.app. :-)
Generally, I expect that Adobe can release early 64bit flash plug-in. After all, it is a real way.
-
Anyway, thank Rory and Tomma.
-
I had a similar problem recently,os:embedded linux
firefox play is ok , but Qtwebkit is not play@
QWebSettings::globalSettings()->setAttribute(QWebSettings::PluginsEnabled, true);
QWebSettings::globalSettings()->setAttribute(QWebSettings::JavascriptEnabled, true);
QWebSettings::globalSettings()->setAttribute(QWebSettings::AutoLoadImages, true);
view = new QWebView(this);
view->load(url);
@libflashplayer.so is save /root/.mozilla/plugins
[EDIT: code formatting, please wrap in @-tags, Volker]