Russian Qt Forum

Qt => Дополнительные компоненты => Тема начата: nn1317 от Ноября 28, 2009, 11:56



Название: Проиграть flash-ролик минимальными затратами
Отправлено: nn1317 от Ноября 28, 2009, 11:56
Доброе утро всем)
Задача - проиграть swf ролик в приложении на qt, причем qt версии opensource, т.е. как я понимаю без ActiveX...
Нашел по форуму:

1. использование директивы #import, преобразует activeX в что то нативно перевариваемое с++, что то типа длл-ки с парой заголовков. (вроде есть только на VC++)
http://lists.helixcommunity.org/pipermail/datatype-cvs/2007-January/005912.html

2. декодер формата, похоже вместе с рендером и похоже на gtk...
http://swfdec.freedesktop.org/wiki/

3. видел тему где человек просто добавляет в QWebView код типа <embed ...> и у него играется ролик - у меня такая страница в IE не показывает ролик, как и в QWebView, хотя фаерфокс нормально отображает... похоже, нужно что то проинсталлировать чтобы работало?

4. в папке system32\Macromed\Flash есть длл NPSWF32.dll с достаточно интересным набором экспортируемых функций:

Java_ShockwaveFlash_CurrentFrame_stub
Java_ShockwaveFlash_FlashVersion_stub
Java_ShockwaveFlash_FrameLoaded_stub
Java_ShockwaveFlash_GetVariable_stub
Java_ShockwaveFlash_GotoFrame_stub
Java_ShockwaveFlash_IsPlaying_stub
Java_ShockwaveFlash_LoadMovie_stub
Java_ShockwaveFlash_Pan_stub
Java_ShockwaveFlash_PercentLoaded_stub
Java_ShockwaveFlash_Play_stub
Java_ShockwaveFlash_SetVariable_stub
Java_ShockwaveFlash_SetZoomRect_stub
Java_ShockwaveFlash_StopPlay_stub
Java_ShockwaveFlash_TCallFrame_stub
Java_ShockwaveFlash_TCallLabel_stub
Java_ShockwaveFlash_TCurrentFrame_stub
Java_ShockwaveFlash_TCurrentLabel_stub
Java_ShockwaveFlash_TGetProperty_stub
Java_ShockwaveFlash_TGotoFrame_stub
Java_ShockwaveFlash_TGotoLabel_stub
Java_ShockwaveFlash_TPlay_stub
Java_ShockwaveFlash_TSetProperty_stub
Java_ShockwaveFlash_TStopPlay_stub
Java_ShockwaveFlash_TotalFrames_stub
Java_ShockwaveFlash_Zoom_stub
native_ShockwaveFlash_CurrentFrame
native_ShockwaveFlash_FlashVersion
native_ShockwaveFlash_FrameLoaded
native_ShockwaveFlash_GetVariable
native_ShockwaveFlash_GotoFrame
native_ShockwaveFlash_IsPlaying
native_ShockwaveFlash_LoadMovie
native_ShockwaveFlash_Pan
native_ShockwaveFlash_PercentLoaded
native_ShockwaveFlash_Play
native_ShockwaveFlash_SetVariable
native_ShockwaveFlash_SetZoomRect
native_ShockwaveFlash_StopPlay
native_ShockwaveFlash_TCallFrame
native_ShockwaveFlash_TCallLabel
native_ShockwaveFlash_TCurrentFrame
native_ShockwaveFlash_TCurrentLabel
native_ShockwaveFlash_TGetProperty
native_ShockwaveFlash_TGotoFrame
native_ShockwaveFlash_TGotoLabel
native_ShockwaveFlash_TPlay
native_ShockwaveFlash_TSetProperty
native_ShockwaveFlash_TStopPlay
native_ShockwaveFlash_TotalFrames
native_ShockwaveFlash_Zoom

внимание, вопрос;)
Как все таки проиграть ролик и по какому пути пойти?)


Название: Re: Проиграть flash-ролик минимальными затратами
Отправлено: BigZ от Ноября 29, 2009, 10:09
http://www.prog.org.ru/topic_11093_0.html


Название: Re: Проиграть flash-ролик минимальными затратами
Отправлено: nn1317 от Ноября 29, 2009, 13:23
есть 200$ лишних?)


Название: Re: Проиграть flash-ролик минимальными затратами
Отправлено: SABROG от Декабря 07, 2009, 00:25
3. видел тему где человек просто добавляет в QWebView код типа <embed ...> и у него играется ролик - у меня такая страница в IE не показывает ролик, как и в QWebView, хотя фаерфокс нормально отображает... похоже, нужно что то проинсталлировать чтобы работало?

QWebSettings::PluginsEnabled в true выставлял?


Название: Re: Проиграть flash-ролик минимальными затратами
Отправлено: nn1317 от Декабря 07, 2009, 09:32
щас поставил - не помогает...
может для qt надо плагин как то отдельно поставить?)


Название: Re: Проиграть flash-ролик минимальными затратами
Отправлено: QCasper от Декабря 07, 2009, 10:17
Задача - проиграть swf ролик в приложении на qt, причем qt версии opensource, т.е. как я понимаю без ActiveX...

Почему без?

The ActiveQt modules are part of the Qt Full Framework Edition and the Open Source Versions of Qt.Пруфлинк (http://doc.trolltech.com/4.6/activeqt.html)


Название: Re: Проиграть flash-ролик минимальными затратами
Отправлено: nn1317 от Декабря 07, 2009, 10:34
при сборке любого примера из папки examples\activeqt возникает такое:
In file included from ../../../include/ActiveQt/qaxbase.h:1,
from ../../../include/ActiveQt/../../src/activeqt/container/qaxwidget.h:43,
from ../../../include/ActiveQt/qaxwidget.h:1,
from ../../../include/ActiveQt/QAxWidget:1,
from webaxwidget.h:45,
from ui_mainwindow.h:28,
from main.cpp:53:
../../../include/ActiveQt/../../src/activeqt/container/qaxbase.h:55: error: `QtValidLicenseForActiveQtModule' does not name a type
In file included from ../../../include/ActiveQt/qaxwidget.h:1,
from ../../../include/ActiveQt/QAxWidget:1,
from webaxwidget.h:45,
from ui_mainwindow.h:28,
from main.cpp:53:
../../../include/ActiveQt/../../src/activeqt/container/qaxwidget.h:50: error: `QtValidLicenseForActiveQtModule' does not name a type


я так понимаю фишка с лицензией... или qt собрана без activeX?)
версия 4.5.1 сдк-ная)


Название: Re: Проиграть flash-ролик минимальными затратами
Отправлено: QCasper от Декабря 07, 2009, 10:39
Странно, сам я не пробовал, но кагбэ если в доке написано, то вроде бы должно работать... Возможно стоит попытаться собрать из исходников с поддержкой ActiveX.


Название: Re: Проиграть flash-ролик минимальными затратами
Отправлено: BRE от Декабря 07, 2009, 10:40
я так понимаю фишка с лицензией... или qt собрана без activeX?)
версия 4.5.1 сдк-ная)
А в pro файле проекта есть такая строка?
CONFIG += qaxcontainer


Название: Re: Проиграть flash-ролик минимальными затратами
Отправлено: nn1317 от Декабря 07, 2009, 10:54
CONFIG += qaxcontainer стоит изначально...
просто во всех примерах бинари собраны, а в папке activeqt нету их.. я подумал что лицензия обламывает в том числе... но версия несколько старовата... может кто посмотреть в последней версии под minGW - там есть эти бинари в самплах?)


Название: Re: Проиграть flash-ролик минимальными затратами
Отправлено: nn1317 от Декабря 07, 2009, 13:25
так... нашел http://www.forum.crossplatform.ru/index.php?showtopic=3576
попробовал demos/browser - реально, играет флешки...))

centralWidget->webView->settings()->setAttribute(QWebSettings::JavascriptEnabled,true);
centralWidget->webView->settings()->setAttribute(QWebSettings::PluginsEnabled, true);

и вправду, помогает... просто пример webkit/formextract какой то странный - на нем это не работает, а вот соседний preview отлично кажет флешки вместе с верхними строчками...;)