以下是我用来播放视频的代码
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();
使用iodevice时是否还需要其他初始化步骤?最终我的代码将使用自定义的iodevice,它不能正常工作。
答案 0 :(得分:1)
这是一篇很老的帖子,但我想澄清任何混淆,以防将来有人帮助。
它不适合我的原因是QT遇到了我正在使用的编解码器的问题。当您使用QIO设备时,您将获得与传递字符串时相同的格式支持。
还有一点需要注意,虽然此解决方案在Windows上运行良好。在Mac上使用QIO设备时,整个文件将在播放前加载到内存中。就我而言,这是一个交易破坏者。如果你做的第一件事是解密整个文件并将其加载到内存中,那么加密文件是无用的。
答案 1 :(得分:-1)
来自Phonon::MediaSource
文档:
警告:在Windows上,我们只支持包含avi的QIODevices, mp3或mpg格式。使用带有文件名的构造函数 打开文件(Qt后端内部不使用QFile)。
我认为最后一行应该回答你的问题。您可以使用QFile
代替QString
,或者像这样调用函数QFile::fileName
:
QFile* file =new QFile(“C:\\Video\\test.avi”);
media->setCurrentSource(Phonon::MediaSource(file->fileName()));
media->play();
答案 2 :(得分:-1)
如果仔细查看[Phonon Module docu] [1],您会发现无法使用MediaSource
构建QFile*
。
顺便说一句,我没有在你的代码中看到任何声音路径。至少你应该创建音频接收器并将其与mediaobject连接:
Phonon::AudioOutput *audioOut = new PhononAudioOutpu(Phonon::MusicCategory);//or the category you need
Phonon::createPath(mediaObject, audioOutput);
mediaObject->play();
适用于QFile