Відео: TAG: новонароджені - ТРУДНОЩІ ПЕРШОГО МІСЯЦЯ! MNOGOMAMA
Я не хочу повторювати документацію і приводити якісь азбучні приклади по тому, як через Phonon програти mp3-файл. Я хочу розповісти про труднощі, з якими ви зіткнетеся, вирішивши використовувати Phonon в своїй програмі. Розповісти, але не вирішити - вирішувати доведеться вам своєю працею.
Труднощі перша - збірка програм, що використовують Phonon, в Linux. Зазвичай Phonon встановлюється в системі як частина KDE. Вірніше, плагіни-бекенд йдуть як плагіни KDE, а сам Phonon виглядає як окрема бібліотека. Однак Phonon може бути зібраний і «всередині» Qt, оскільки входить до його складу. При цьому, такий Phonon буде шукати бекенд в каталозі плагінів Qt, а не в каталозі плагінів KDE4. Такий стан справ цілком природно, коли в системі немає KDE4, проте є Qt. Як правило, в системі «з коробки» або «зі сховища» Qt зібрана без Phonon, а Phonon встановлюється окремо і абсолютно чудово підхоплюється системою збирання при звичайному наборі команд:
qmake makemake install
Інакше ж збирачеві пакета або користувачеві доведеться потрудитися, створюючи символічні посилання на Phonon і його бекенд, щоб «виправити» шляху.
Труднощі друга - збірка бекенд Direct Show в Windows під MinGW / GCC. Вважається, що це неможливо, оскільки GCC погано поєднується з деякими заголовками з SDK, або навпаки - вони з ним (залежить від того, з якої точки зору дивитися). Пікантності положенню додає той факт, що саме зібрана MinGW-версія Qt і поширюється Nokia, причому без Phonon. Умільці навчилися компілювати горезвісний бекенд і під MinGw, короткий опис процесу можна прочитати за посиланням: https://qtcentre.org/wiki/index.php?title=Building_the_Phonon_backend_plugin_on_Windows_using_MinGW. Ну, а якщо ваша мета - створення сайтів в Москві (https://newdesignlab.ru/services/sozdanie-saitov.html) по збірці Direct Show, то раджу звернутися до досвідчених фахівців.
Однак рецепт цей теж не можна вважати універсальним. Увага, тут ми входимо в область танців з бубнами, горлового співу і так далі. Опишу свій досвід. Сенс хитрості зводиться до того, що потрібно використовувати заголовки DirectX з пакета kdewin32. Беремо пакет з SVN KDE:
Внизу замість «ШЛЯХ _ До _ kdewin32» підставте свій справжній шлях. Після цього нібито має збиратися по qmake / make, але не компілюється. Заголовки начебто виправлені, проте все одно не ті. Виявляється, не вистачає опису декількох структур з файлу dvdmedia.h, а цей файл зі складу офіційного SDK від Microsoft, як я вже написав, з MinGW «не дружить». Як бути? На щастя, у мене виявився встановлений Perl для Windows - Strawberry Perl (strawberryperl.com). І в його склад входить - хто б міг подумати? - заточений навмисне для GCC заголовки dvdmedia.h. Він знаходиться в каталозі strawberry / c / include. Якщо у вас немає бажання качати Strawberry Perl, візьміть один лише dvdmedia.h з https://onlinedisk.ru/ file / 136831. Копіюємо dvdmedia.h в підкаталог include каталогу MinGw. Після цього компілюємо Phonon і його бекенд. Тепер працює! Нагадаю, що для поширення зібраної з Phonon програми треба буде скопіювати в її каталог файл phonon4.dll, а також створити підкаталог phonon_backend і помістити туди phonon_ds94.dll (береться з plugins / phonon_backend каталогу Qt).
Відео: новонароджені - труднощі першого місяця від Nataly Gorbatova
Іншим, в якійсь мірі більш простим, способом використовувати Phonon в програмах для Windows є збірка Qt і ваших програм в Microsoft Visual Studio C ++. Хоча в документації Qt написано, що треба попередньо встановити ще і DirectX SDK, повозитися з установкою шляхів і запустити якийсь скрипт, в моєму випадку досить було тих заголовків файлів, які йдуть в складі MS Visual Studio 2008. Для складання Qt в цій IDE треба спочатку з сеансу, де встановлені шляхи до Visual Studio (див. ярлик на командний процесор в підміню Visual Studio в «Пуск»), запустити програму configure.exe (в исходнике Qt), щоб налаштувати исходник. Якщо вам не потрібен WebKit, раджу відключити його на рівні настройки - він компілюється дуже довго. Також можна відключити OpenGL, якщо вам він не критичний. Інакше доведеться включати в дистрибутив програми. Після настройки традиційний шлях - це запуск nmake і очікування, поки зберуться бібліотеки і приклади. Але для збірки краще не викликати nmakе, а зробити за допомогою qmake проект Visual Studio:
qmake -t vcapp ім`я qt-проекта.pro
Тоді вийде проект з розширенням vcproj, який можна завантажити в Visual Studio і скомпілювати.
Після цього ви можете збирати програми з Phonon. У Windows зручно мати дві версії Qt: одну - MinGW, а іншу - самостійно зібрану під Visual Studio. Розмежування між ними - через установку шляхів в .bat-файлах запуску командного процесора. У мене на цю справу - два ярлика запуску з різними змінними середовища (для MinGW і для Visual Studio).
Але тепер виникає остання проблема - поширення програм, зібраних в Visual Studio. Для цього потрібні файли зі складу Microsoft Visual C ++: msvcr80.dll (число залежить від версії вашої Visual Studio), msvcp80.dll і інші. Від версії до версії умови їх видимості для програми змінюються: раніше можна було просто скопіювати в каталог програми, потім треба було вказати їх розташування через виклик функції qApp-gt; addLibraryPath (), потім в певних умовах це перестало працювати - в загальному, знову окрема тема для розмови, в яку не будемо заглиблюватися (деякі подробиці можна знайти в розділі Deploying an Application on Windows документації Qt).
Але є універсальне рішення. Включайте в установник своєї програми пакет Microsoft Visual C ++ 2008 Redistributable Package (береться на сайті Microsoft) або давайте на нього посилання. Це щоб не возитися з маніфестами і тому подібним матеріалом. Після установки пакета користувачем ваша програма запуститься без всяких складнощів. Може виявитися і так, що у користувача вже встановлено цей пакет - зараз багато програм містять його разом зі своїми установниками і теж пропонують при бажанні проинсталлировать.