连接 QMediaPlayer 和 QIODevice

Posted

技术标签:

【中文标题】连接 QMediaPlayer 和 QIODevice【英文标题】:Connecting QMediaPlayer and QIODevice 【发布时间】:2015-03-23 18:53:01 【问题描述】:

我正在开展一个创建安全视频播放器的项目。我想在使用 QMediaPlayer 类时即时实现视频加密。有人可以帮我实现这一目标吗?将解密数据写入 QIODevice 并从 QIODevice 读取是否正确?如果是这样,我可以获得示例实现吗?

提前致谢

【问题讨论】:

【参考方案1】:

是的,这是一种可能的方式。一个例子是:

子类 QIODevice 并重新实现 readData() 在您的重新实现中,您读取加密数据,解密并返回它 您将基于 QIODevice 的对象传递给 QMediaPlayer。

如果想让播放器能够seek,则需要实现QIODevice::IsSequential()(返回false)并实现seek/pos。如果您的加密是逐字节的(即您没有打包/填充内容),这应该是一个相当简单的实现。

另一种方法是使用 QAudioDecoder + QAudioOutput。这将允许您执行一些技巧,例如先加密原始 PCM,然后再对其进行编码。

【讨论】:

以上是关于连接 QMediaPlayer 和 QIODevice的主要内容,如果未能解决你的问题,请参考以下文章

QMediaPlayer 和 QVideoWidget 的糟糕表现

在 Qt 和 C++ 中改变 mp3 速度 [QMediaPlayer]

无法从其他线程播放 QMediaPlayer

8.2.1 QMediaPlayer类介绍与基本使用

哪些视频文件可以在 Android 上播放 QMediaPlayer?

使用 QAudioOutput 和 QMediaPlayer (PyQt6) 的淡化效果