Russian Qt Forum
Ноябрь 22, 2024, 00:31 *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

Войти
 
  Начало   Форум  WIKI (Вики)FAQ Помощь Поиск Войти Регистрация  

Страниц: [1] 2   Вниз
  Печать  
Автор Тема: Мультимедиа в Qt5 линукс минт  (Прочитано 9782 раз)
alexu007
Чайник
*
Offline Offline

Сообщений: 58


Просмотр профиля
« : Февраль 09, 2021, 16:15 »

Ну, в общем попробовал написать самый примитивный плеер, что-бы воспроизводил один файл (для начала). Где-то так:
.pro
Код
C++ (Qt)
#-------------------------------------------------
#
# Project created by QtCreator 2021-02-09T12:21:36
#
#-------------------------------------------------
 
greaterThan(QT_MAJOR_VERSION, 4): QT += widgets
 
QT       += core gui
QT       += core gui multimedia
 
QMAKE_LFLAGS += -no-pie
 
TARGET = aplr2
TEMPLATE = app
 
DEFINES += QT_DEPRECATED_WARNINGS
 
SOURCES += \
       main.cpp \
       widget.cpp
 
HEADERS += \
       widget.h
 
FORMS += \
       widget.ui

.h
Код
C++ (Qt)
#ifndef WIDGET_H
#define WIDGET_H
 
#include <QWidget>
#include <QMediaPlayer>
#include <QDir>
#include <QUrl>
 
namespace Ui {
class Widget;
}
 
class Widget : public QWidget
{
   Q_OBJECT
 
public:
   explicit Widget(QWidget *parent = 0);
   ~Widget();
 
private:
   Ui::Widget *ui;
 
   QMediaPlayer        *m_player;
 
public slots:
   void press_pbtn_01();
};
 
#endif // WIDGET_H

.cpp
Код
C++ (Qt)
#include "widget.h"
#include "ui_widget.h"
 
 
Widget::Widget(QWidget *parent) :
   QWidget(parent),
   ui(new Ui::Widget)
{
   ui->setupUi(this);
 
   //m_player = new QMediaPlayer(this);
 
   QObject::connect(ui->pbtn_01, SIGNAL(clicked()), this, SLOT(press_pbtn_01()));
}
 
 
Widget::~Widget()
{
   delete ui;
}
 
 
void Widget::press_pbtn_01()
{
 
   QString str = QUrl::fromLocalFile(":/home/alexu/music/Here.mp3").toString();
   ui->label->setText(str);
}

естественно не работает. Установил библиотеку "sudo apt install libqt5multimedia5-plugins", после выполнения строчки "m_player = new QMediaPlayer(this);" начало исчезать окно программы: прога запускается, а окно не появляется. Если эту строчку закомментировать, окно восстанавливается. Что за хрень? И почему не хочет петь?
Записан
demal
Чайник
*
Offline Offline

Сообщений: 53


Просмотр профиля
« Ответ #1 : Февраль 12, 2021, 21:16 »

В инструкции вот так должно быть: player = new QMediaPlayer;
Зачем  this?
Записан
alexu007
Чайник
*
Offline Offline

Сообщений: 58


Просмотр профиля
« Ответ #2 : Февраль 12, 2021, 23:59 »

Не знаю, в интернете так увидел, не работал и с this и без this, это то я пробовал. Но в итоге всё-таки плеер заработал. И знаете как? Я в шоке! На одном из форумов посоветовали включить отладку (до этого я пробовал запустить только в релизе) и посмотреть, что выдаёт отладка (какие ошибки и т.п.). Отладка написала мне какую-то последовательность ничего не говорящих (мне) цифр, но программа ЗАПУСТИЛАСЬ! И после этого стала работать и в дебиге, и в релизе, и музыку играет. В мозгах компьютера что-то щёлкнуло? Или он отдохнул за ночь и обдумал своё поведение?

Ну ладно, как бы то ни было, а плеер заиграл. Дописать свой плейлист дело времени, а я хочу индикаторы уровня сигнала (ну как раньше в магнитофонах - правый/левый канал). И что-бы не рэндом показывали, а реальный уровень сигнала. Есть какие-нибудь соображения по этому поводу?

Собсна само вычисление уровня сигнала в общих чертах понятно. Нужно взять цифры аудиосигнала за какое-то время, и подсчитать среднее арифметическое. Вопрос - где взять эти цифры? Можно заставить плеер не только отправлять их на звуковую карту, но и скидывать в какой-нибудь буфер?
Записан
alexu007
Чайник
*
Offline Offline

Сообщений: 58


Просмотр профиля
« Ответ #3 : Ноябрь 10, 2021, 11:35 »

Пришлось переустановить Линукс, проблема вернулась - мультимедиа установилась, прога (плеер) компилируется и запускается - но не работает, плей не включается, звука нет. Увы.
Записан
tux
Global Moderator
Бывалый
*****
Offline Offline

Сообщений: 404



Просмотр профиля
« Ответ #4 : Ноябрь 10, 2021, 18:02 »

this нужен,чтобы у QMediaPlayer был хозяин. Который освободит память, занятую QMediaPlayer. Без этого будет утечка. Хотя и не заметная. Пока.  Подмигивающий
Попробуйте запустить полученный файл из консоли. Возможно в неё увидите, что проигрывателю не нравится.
А "последовательность ничего не говорящих (мне) цифр" лучше скопировать и выложить сюда. Будет больше информации.
Записан

alexu007
Чайник
*
Offline Offline

Сообщений: 58


Просмотр профиля
« Ответ #5 : Ноябрь 11, 2021, 12:01 »

Значит смотрите:

если установить "sudo apt install qtmultimedia5-dev", то программа компилируется, запускается, но музыка не играет. Плеер выдаёт сигнал с ошибкой 5: "Допустимая служба воспроизведения не найдена, воспроизведение не может продолжаться."

если удалить "sudo apt remove qtmultimedia5-dev" и установить вместо него "sudo apt install libqt5multimedia5-plugins" - то программа перестаёт компилироваться, пишет что "Project ERROR: Unknown module(s) in QT: multimedia" - ну тут понятно без перевода.

если установить обе эти библиотеки (в любой последовательности), то программа наглухо виснет при создании плеера в конструкторе - на строчке "m_player = new QMediaPlayer();" - даже окно не появляется. Вот тут в режиме отладки и вылетают этит загадочные цифры:

Отладка запущена
&“warning: GDB: Failed to set controlling terminal: \320\235\320\265\320\277\321\200\320\270\320\274\320\265\320\275\320\270\320\274\321\213\320\271 \320\272 \320\264\320\260\320\275\320\275\320\276\320\274\321\203 \321\203\321\201\321\202\321\200\320\276\320\271\321\201\321\202\320\262\321\203 ioctl\n”

Но!!! В режиме отладки прога всё-таки непериодически запускается и работает нормально. Непериодически - это после нескольких попыток запустить и принудительно остановить приложение. К сожалению в этот раз чуда не произошло, и программа постоянно не заработала.

Мои догадки:
qtmultimedia5-dev не работает
libqt5multimedia5 возможно и работала бы, но она не определяется компилятором и исполняемым файлом

при установке обеих библиотек они конфликтуют между собой

Записан
kambala
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 4747



Просмотр профиля WWW
« Ответ #6 : Ноябрь 11, 2021, 12:17 »

https://wiki.qt.io/Qt_5.13_Multimedia_Backends

попробуй установить GStreamer и/или PulseAudio/Alsa (не разбираюсь в линуксах)
Записан

Изучением C++ вымощена дорога в Qt.

UTF-8 has been around since 1993 and Unicode 2.0 since 1996; if you have created any 8-bit character content since 1996 in anything other than UTF-8, then I hate you. © Matt Gallagher
alexu007
Чайник
*
Offline Offline

Сообщений: 58


Просмотр профиля
« Ответ #7 : Ноябрь 11, 2021, 13:40 »

Пишет, что эти модули уже установлены самой последней версии.
Вот такое предупреждение при старте программы выдаёт, и что с этим делать, я не нашёл:

Цитировать
defaultServiceProvider::requestService(): no service found for - "org.qt-project.qt.mediaplayer"
Записан
tux
Global Moderator
Бывалый
*****
Offline Offline

Сообщений: 404



Просмотр профиля
« Ответ #8 : Ноябрь 12, 2021, 00:20 »

Было что-то похожее, относительно недавно.
Вы свою программу запускаете непосредственно из creator или из консоли?
P.S. "Таинственные цифры" - это UTF-16, скорее всего. Настройте консоль корректно, сначала. Потом сможете прочитать по русски. Либо можно временно поставить латинскую консоль и читать по английски.
« Последнее редактирование: Ноябрь 12, 2021, 00:23 от tux » Записан

alexu007
Чайник
*
Offline Offline

Сообщений: 58


Просмотр профиля
« Ответ #9 : Ноябрь 12, 2021, 13:33 »

Спс. Уже решил проблему. Всё дело в нерабочих qtmultimedia5-dev и libqt5multimedia5, ну или какая-то одна кривая, или устанавливаются криво. Я установил линукс минт 20.1, установил Qt, обе эти библиотеки - и всё заработало. Но зато теперь не устанавливается vine - ни из репозитория, ни вручную. А ещё говорят, что виндовс это большой вирус. Я бы поспорил.
Записан
tux
Global Moderator
Бывалый
*****
Offline Offline

Сообщений: 404



Просмотр профиля
« Ответ #10 : Ноябрь 12, 2021, 19:54 »

А ещё говорят, что виндовс это большой вирус. Я бы поспорил.
Руки  - это большие вирусы. Две штуки. Улыбающийся Я к тому, что вы тащите виндовые привычки в линукс. Отсюда и проблемы.
Почти уверен, что вы любите ставить программы помимо пакетного менеджера и удалять их вручную. Так... предположение.  Смеющийся
Записан

sergek
Гипер активный житель
*****
Offline Offline

Сообщений: 872


Мы должны приносить пользу людям.


Просмотр профиля
« Ответ #11 : Ноябрь 12, 2021, 20:38 »

Интересно, а как можно устанавливать программы в Linux без использования пакетного менеджера?
Записан

Qt 5.13.0 Qt Creator 5.0.1
Win10, Ubuntu 20.04
__Heaven__
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 2130



Просмотр профиля
« Ответ #12 : Ноябрь 13, 2021, 07:58 »

Интересно, а как можно устанавливать программы в Linux без использования пакетного менеджера?

В home или opt можно с помощью инсталлера. Есть возможность и Qt так поставить. Коммерческий софт, игрушки кмк, часто имеют именно инсталлер. Но да, это не линукс вэй)
Записан
tux
Global Moderator
Бывалый
*****
Offline Offline

Сообщений: 404



Просмотр профиля
« Ответ #13 : Ноябрь 13, 2021, 15:25 »

Интересно, а как можно устанавливать программы в Linux без использования пакетного менеджера?
Классически. Что-то типа
Цитировать
./configure
make
make install
Другое дело, что лучше так не делать. Даже в gentoo. Улыбающийся
Записан

alexu007
Чайник
*
Offline Offline

Сообщений: 58


Просмотр профиля
« Ответ #14 : Декабрь 02, 2021, 13:09 »

Почти уверен, что вы любите ставить программы помимо пакетного менеджера и удалять их вручную. Так... предположение.  Смеющийся
1. Попробовал ставить из репозитория - приблизительно на середине процесса выскочила ошибка.
2. Попробовал ставить по инструкциям из интернета из командной строки - ошибка.
3. Зарегился на форуме и задал там вопрос - мне скинули инструкции как сделать - я сделал и заработало. Ну хоть так, с третьей попытки.
Записан
Страниц: [1] 2   Вверх
  Печать  
 
Перейти в:  


Страница сгенерирована за 0.113 секунд. Запросов: 22.