我已经下载了qt-everywhere-opensource-src-5.4.1并构建并安装了静态.接下来我构建了QMultimedia并进行了安装.
当包括QT + =多媒体时,我从.pro获得"QT中的未知模块:多媒体".
我在/usr/local/Qt-5.4.1/include中有QtMultimedia,QtMultimediaQuick_p和QtMultimediaWidgets.在/usr/local/Qt-5.4.1/plugins中也有mediaservice,playlistformats在/ usr/include中也有QtMobility,QtMultimediaKit
我正在运行Ubuntu 15.0
我发现的所有相关问题都无济于事.
我正在尝试使用QAudioDecoder类解码.wav文件。尽管我通过添加将QtMultimedia模块包含到我的.pro文件中,
但我收到了一个错误,即未找到QAudioDecoder 的服务。我看不出问题出在哪里。QT += multimedia
我在 Windows 7 上使用 Qt 5.1.0 和 MingGW 4.8 32 位。
错误信息:
defaultServiceProvider::requestService(): no service found for - "org.qt-project.qt.audiodecode"
.pro文件:
QT += core
QT += multimedia
QT -= gui
TARGET = test
CONFIG += console
CONFIG -= app_bundle
TEMPLATE = app
SOURCES += main.cpp
Run Code Online (Sandbox Code Playgroud)
主文件:
#include <QCoreApplication>
#include <QAudioDecoder>
#include <QAudioBuffer>
int main(int argc, char *argv[])
{
QCoreApplication a(argc, argv);
QString pathToFile …Run Code Online (Sandbox Code Playgroud) 我正在尝试创建一个用 C++ 定义的 QML 项,它会在 QML 中的帧Camera由VideoOutput. 就像是:
Window {
Camera {
id: camera
}
MyFrameinterceptor {
id: myprocessing
source: camera.mediaObject
}
VideoOutput {
id: feedback
source: myprocessing
}
}
Run Code Online (Sandbox Code Playgroud)
根据此注释,项目的mediaObject 属性Camera可用于访问Camera.
但是,当我尝试从 QML 访问 mediaObject 时,例如
Text {
text: qsTr(camera.mediaObject.objectName)
}
Run Code Online (Sandbox Code Playgroud)
当我TypeError: Cannot read property 'objectName' of undefined
尝试使用 C++ 中的camera.mediaObject 属性时,我收到类似的消息,让我认为 mediaObject 未定义、未初始化或不存在。
我是 Qt 的新手,所以我可能会错过一些非常愚蠢的东西,比如启动相机或其他什么......但我对一个MediaPlayer项目有同样的问题
如何从 C++ 访问 QML Camera 的 mediaObject?
假设我使用文件对话框在 PyQt5 应用程序中打开了一个名为 file1.mp3 的文件,并将其分配给这样的变量:
song = QFileDialog.getOpenFileName(self, "Open Song", "~", "Sound Files (*.mp3 *.ogg *.wav *.m4a)")
print(song[0])
url = QUrl.fromLocalFile(song[0])
self.playlist.addMedia(QMediaContent(url))
Run Code Online (Sandbox Code Playgroud)
如何获取文件名而不是文件路径,以便我可以在状态栏中显示它?或者更好的是,是否有我可以使用或创建的类似“正在播放”的功能?
我正在尝试构建一个集成视频的 GUI,为此我需要导入 PyQt5.QtMultimedia。然而,当尝试导入模块(导入 PyQt5.QtMultimedia)时,我收到错误:ModuleNotFoundError:没有名为“PyQt5.QtMultimedia”的模块。
我正在使用 Ubuntu 18.04,我的 Python 包来自 Anaconda。“conda list”命令报告 pyqt 已正确安装,版本 5.9.2。到目前为止,所有其他 PyQt5 导入都工作正常,实际上只有 PyQt5.QtMultimedia 会导致问题。
这个问题已经在这些帖子中讨论过:link1,link2,但他们没有提供任何解决方案。
我尝试卸载(sudo apt-get remove python3-pyqt5.qtmultimedia)并重新安装(sudo apt install python3-pyqt5.qtmultimedia),但没有成功。
有人可以帮忙吗?如果我不能解决这个问题,我的项目就真的陷入困境了。
多谢。
我目前正在将应用程序从Qt4(.8.4)移植到Qt5(.2.0).我几乎完成了所有已知的更改,例如弃用toAscii() - 函数,缺少QtGui等等.现在我们有一个使用声子框架的音乐播放器,它不再受支持,并被QtMultimedia模块取代,包括QMediaPlayer和一堆音频处理类.
我们的播放器实现采用自定义QIODevice.此设备为磁盘上的加密audiofiles提供接口.现在播放器向设备询问x字节,设备从加密文件中读取,解密播放器要求的字节并返回它们.
现在我在多媒体模块中搜索了一个函数来重用我的IODevice并找到了以下函数:
void setMedia(const QMediaContent & media, QIODevice * stream = 0)
Run Code Online (Sandbox Code Playgroud)
并使用如下:
m_pDecryptingMediaDevice = new BYIODevice(filename);
m_pDecryptingMediaDevice->open(QIODevice::ReadOnly);
m_pPlayer->setMedia(0, m_pDecryptingMediaDevice);
Run Code Online (Sandbox Code Playgroud)
其中m_pDecryptingMediaDevice是QIODevice-subclass,m_pPlayer是QMediaPlayer.
现在在Windows上,一切都按预期工作.QMediaplayer将其MediaStatus更改为QMediaPlayer :: LoadingMedia并向我的设备询问字节数.然后更改为QMediaPlayer :: State PlayingState,状态设置为BufferedMedia.一切安好.在Mac OS上的不幸(10.9.1)我只得到QMediaPlayer :: PlayingState而已.播放器/ audiobackend从不向我的设备询问字节数,也不调用任何其他功能.我不认为这个错误与自定义QIODevice有关,而是与QMediaPlayer有关,因为播放器甚至不询问任何字节或调用设备上的任何功能.
我只是试图将其分解为一个小测试项目:
QMediaPlayer *player = new QMediaPlayer(this);
QFile *music = new QFile("C:/Users/.../Music/Test.mp3");
music->open(QIODevice::ReadOnly);
player->setMedia(0, music);
connect(ui->pushButton, SIGNAL(clicked()), player, SLOT(play()));
connect(player, SIGNAL(stateChanged(QMediaPlayer::State)), this, SLOT(stateChanged(QMediaPlayer::State)));
Run Code Online (Sandbox Code Playgroud)
奇怪的是,这根本不起作用 - 不是在Windows上,而是在Mac OS上.总是有效的是给玩家一个URL
根据使用函数setMedia(const QMediaContent&media,QIODevice*stream = 0)将QIODevice流式传输到QMediaPlayer,是否有任何类似案例的经验?我坚持这个.
最好的问候和许多提前感谢.
一月
我想做的是在某个时间(例如20秒)获取视频帧。我知道我可以做这样的事情-倒带视频并暂停它:
QMediaPlayer* player = new QMediaPlayer;
...
player->play();
player->setPosition(20000);
player->pause();
Run Code Online (Sandbox Code Playgroud)
但是,是否有一些更优雅的解决方案(对我来说这似乎是一个hack,因为我不需要整个视频,而有时只需要一帧)?
我想循环一个音频文件并使用这个代码(我的原始问题和解决方案)和这个代码(Qt C示例)的组合设法创建这个:
from PyQt5.QtCore import *
from PyQt5.QtMultimedia import *
import sys
if __name__ == "__main__":
app = QCoreApplication(sys.argv)
playlist = QMediaPlaylist()
url = QUrl.fromLocalFile("./sound2.mp3")
playlist.addMedia(url)
playlist.setPlaybackMode(QMediaPlaylist.Loop)
content = playlist()
player = QMediaPlayer()
player.setMedia(content)
player.play()
app.lastWindowClosed.connect(player.stop)
app.exec()
Run Code Online (Sandbox Code Playgroud)
但是,此代码不起作用,报告的错误是:
类型错误:参数不匹配任何重载调用:addMedia(self, QMediaContent):参数 1 具有意外类型 'QUrl' addMedia(self, object):参数 1 具有意外类型 'QUrl'
我的代码哪里出错了?非常感谢任何帮助。
我试图在视频播放器(QVideoWidget)之上覆盖一些图形(QtGraphicsView)。我已经尝试将 QtGraphicsView 子类样式表设置为透明和背景画笔,但都没有工作。
#self.setBackgroundBrush(QtGui.QBrush(QtGui.QColor(30, 30, 30, 3)))
#self.setStyleSheet("background-color:rgba(0,0,0,0)")
#self.setStyleSheet("background:rgba(0,0,0,0)")
self.setStyleSheet("background:transparent")
self.setStyleSheet("background-color:transparent")
self.setStyleSheet("background-color:rgba(30,30,30,3)")
self.setStyleSheet("background:rgba(30,30,30,3)")
Run Code Online (Sandbox Code Playgroud)
实际意图是轻松裁剪视频(视觉方式)。所有其他工作都是关于捕获事件、做数学等。这张图片很好地解释了情况。
. 在这一点上,我感觉肯定是我做错了,QtMultiMedia 组件中必须有一些更简单的方法来绘制它们。任何想法真的很感激。
我已经使用普通的apt-get 安装方法在 Raspberry Pi 3 上安装了 Qt 和 Qtcreator 。一切似乎都工作正常,除了当我尝试构建声明性相机示例或其他多媒体示例时,我收到一条错误消息module "QtMultimedia" is not installed。然后弹出空白的白色应用程序窗口。
我已经尝试安装和重新安装所有必需的软件包,例如libqt5multimedia5,,它只是说它们安装了最新版本。qtmultimedia5-devetc
有没有人在树莓派上成功地让qt多媒体工作?
编辑:
我尝试使用建议的解决方案:
sudo apt-get install qtdeclarative5-qtmultimedia-plugin
这给了我一个错误:
E: Unable to locate package qtdeclarative5-qtmultimedia-plugin
我有以下代码:
#include <QtWidgets/QtWidgets>
#include <QtMultimedia/QCamera>
#include <QtMultimedia/QMediaPlayer>
int main(int argc, char * argv[])
{
QApplication testQt(argc, argv);
QMainWindow w;
QWidget videoContainer(&w);
w.setCentralWidget(&videoContainer);
QVideoWidget videoWidget(&videoContainer);
QCamera cam(&w);
cam.setViewfinder(&videoWidget);
cam.start();
w.show();
return testQt.exec();
}
Run Code Online (Sandbox Code Playgroud)
我正在尝试创建一个主窗口,创建一个容器小部件来显示视频,在该容器中创建一个视频单元,然后最终将摄像机的取景器设置为该视频单元.但是,当我尝试这样做时,我得到了错误
变量具有不完整类型'QVideoWidget'
为什么我收到此错误?
我需要使用QT(从Windows上的qt 5.7)将从麦克风录制的音频直接回送至扬声器(假设在Windows上为qt 5.7)-假设我无法使用窗口的内部mic->扬声器回送(在麦克风面板上启用“收听此设备” )。
任何方向该怎么做?