连接 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]