当QFILE用于mediaSource时,QT声子播放失败,当字符串通过时,QT声波播放正常
QT phonon playback is failing when a QFILE is used for mediaSource, works fine when a string is passed
下面是我用来播放视频的代码
QFile* file =new QFile(“C:\Video\test.avi”);
media->setCurrentSource(Phonon::MediaSource(file));
media->play();
使用此代码播放失败-我看到的是底部的播放栏,但视频从未开始。
如果我将代码更改为以下内容,则一切都如预期所示
media->setCurrentSource(Phonon::MediaSource(“C:\Video\test.avi”));
media->play();
使用iodvice时是否需要额外的初始化步骤?最终,我的代码将使用一个无法正常工作的自定义iodevice。
这是一篇旧帖子,但我想消除任何困惑,以防将来对某人有所帮助。
- QT允许您将Phonon::MediaSource()传递给QIODevice。我们通过创建自己的QIODevice子类成功部署了我们的解决方案
它对我不起作用的原因是QT对我使用的编解码器有问题。当你使用QIO设备时,你不会得到与传递字符串相同的格式支持。
另一件需要注意的事情是,虽然此解决方案在windows上运行良好。在mac上,当使用QIO设备时,整个文件将在播放前加载到内存中。就我而言,这是一个破坏交易的行为。如果你要做的第一件事是对整个文件进行解密并将其加载到内存中,那么拥有一个加密的文件是没有意义的。
来自Phonon::MediaSource
文档:
警告:在Windows上,我们只支持包含avi的QIOD设备,mp3或mpg格式。使用采用文件名的构造函数打开文件(Qt后端内部不使用QFile)。
我认为最后一行应该回答你的问题。您可以使用QString
来代替QFile
,或者调用函数QFile::fileName
,如下所示:
QFile* file =new QFile(“C:\Video\test.avi”);
media->setCurrentSource(Phonon::MediaSource(file->fileName()));
media->play();
如果仔细查看[Phonon Module docu][1],就会发现MediaSource
不能用QFile*
构造。
顺便说一句,我在你的代码中没有看到任何声子路径。至少你应该创建音频接收器并将其与媒体对象连接:
Phonon::AudioOutput *audioOut = new PhononAudioOutpu(Phonon::MusicCategory);//or the category you need
Phonon::createPath(mediaObject, audioOutput);
mediaObject->play();
适用于QFile
相关文章:
- Qt C++ 创建方形音频音调波.播放并保存它
- 如何在QT中飞溅之前播放声音?
- 是否可以在QT GUI应用程序中处理事件时播放加载动画指示器?
- 如何使用信号帧Changed(int)在QT中播放QMovie一次
- QT 创建器:程序启动时音量滑块仍播放音频
- 如何使用QT或Linux上的任何其他CPP框架播放WMA音频文件
- QT 5.8 WebEngine HTML 5视频播放器支持
- 带有QMediaPlaylist的播放列表在QT中
- Qt:在Linux上没有播放
- 通过QT播放mov-files
- 如何在QT中播放视频文件
- 无法在QT中播放视频
- 使用QT播放实时视频流
- 在C++和QT中播放WAV音频文件
- 使用 QT 创建器在 c++ 中播放视频
- 无法使用适用于Android的Qt使手机播放声音或振动
- Qt c++在按键时播放声音 - 几秒钟后停止工作
- QT/QML/C++媒体播放器
- 我正在尝试获取媒体播放器的元数据,但QT中不断出现C2228错误
- QML组件'Video'无法播放Qt资源文件中的视频文件