QMediaPlayer - 即时修改音频
QMediaPlayer - modify audio on the fly
我正在研究创建简单视频播放器的选项。我想做的是在播放视频时应用一些音频处理(例如,为简单起见,使用低通滤波器)。我看过 Qt 多媒体 API,所以这是我的主要问题:
- 如何编辑 QMediaPlayer 的音频输出?我需要一些较低级别的 API 吗?
此外,如果其他一些技术更适合此目的或提供更好的开源库,请随时提出建议。我也有使用 C# 的经验。
QMediaPlayer 不允许对音频数据进行低级访问。
我建议您根据自己的目的使用 QAudioOutput and QAudioDecoder 类。
QAudioDecoder 生成 QAudioBuffer 个对象。您可以访问这些对象的 data(),对其进行处理(修改)并将其提供给由 QAudioOutput 对象的 start() 方法返回的 QIODevice。
这将是您的播放器的音频播放路径。
对于视频,您仍将使用静音 QMediaPlayer 解码来自同一文件的视频帧并将它们输出到 QAbstractVideoSurface。然后,您需要一种算法来同步上述两种方法生成的视频和音频帧。
我正在研究创建简单视频播放器的选项。我想做的是在播放视频时应用一些音频处理(例如,为简单起见,使用低通滤波器)。我看过 Qt 多媒体 API,所以这是我的主要问题:
- 如何编辑 QMediaPlayer 的音频输出?我需要一些较低级别的 API 吗?
此外,如果其他一些技术更适合此目的或提供更好的开源库,请随时提出建议。我也有使用 C# 的经验。
QMediaPlayer 不允许对音频数据进行低级访问。 我建议您根据自己的目的使用 QAudioOutput and QAudioDecoder 类。 QAudioDecoder 生成 QAudioBuffer 个对象。您可以访问这些对象的 data(),对其进行处理(修改)并将其提供给由 QAudioOutput 对象的 start() 方法返回的 QIODevice。 这将是您的播放器的音频播放路径。 对于视频,您仍将使用静音 QMediaPlayer 解码来自同一文件的视频帧并将它们输出到 QAbstractVideoSurface。然后,您需要一种算法来同步上述两种方法生成的视频和音频帧。