编程学习
Qt学习21:音视频播放
00 分钟
2023-9-13
2023-11-23
type
status
date
slug
summary
tags
category
icon
password
Email
💡
落絮无声春堕泪,行云有影月含羞。——吴文英《浣溪沙》
💡
文章首发于我的个人博客:欢迎大佬们来逛逛
🔆
Qt学习的项目地址源码:
Qt-code
luumodUpdated Jul 3, 2023

音频、视频播放

Qt Multimedia模块

Qt Multimedia是一个附加模块,它提供了一组丰富的QML类型和c++类来处理多媒体内容。它包含一个易于使用的API,用于播放音频和视频文件,并在屏幕上呈现这些文件,以及一个全面的API,用于记录来自系统摄像头和麦克风的音频和视频。
本模块的功能分为以下几个子模块:
模块
描述
Qt Multimedia
为多媒体特定的用例提供API。
Qt Multimedia Widgets
提供基于小部件的多媒体API。

音频播放

QSoundEffect

这个类允许你以较低的延迟方式播放未压缩的音频文件(通常是WAV文件),并且适用于响应用户操作的“反馈”类型的声音(例如虚拟键盘声音,弹出对话框的积极或消极反馈,或游戏声音)。如果低延迟不是很重要,可以考虑使用QMediaPlayer类,因为它支持更广泛的媒体格式,而且资源较少。
这个例子展示了如何播放一个循环的,并设置了音量的效果:
 
通常情况下,音效应该被重用,这样就可以提前完成所有解析和准备工作,并且只在必要时触发。这有助于降低延迟音频播放。

QMediaPlayer

对于播放不简单、未压缩音频的媒体或音频文件,可以使用QMediaPlayer类型。
Media Player需要连接到一个QAudioOutput对象来播放音频。
下面代码演示了如何播放本地文件:

视频播放

需要 MultimediaWidgets 模块

QMediaPlayer

QMediaPlayer类也能够播放视频,Media Player需要通过setVideoOutput函数连接到一个QVideoWidget对象来播放视频。

录制音频

要将音频记录到文件中,您需要创建一个capture session(捕获会话),并将 audio input(音频输入)和recorder(记录器)连接到该会话。这些元素是通过QMediaCaptureSession、QAudioInput和QMediaRecorder类实现的。默认构造的QAudioInput选择系统默认音频输入。记录器使用简单的record()和stop()函数来控制记录过程。此外,您还可以使用它来选择输出位置、音频编码器或文件容器格式。
从默认麦克风录制音频的会话在如下所示:

QAudioInput

QAudioInput类允许您从音频设备中读取音频数据。您可以使用它来捕获麦克风或其他音频输入设备的音频,并进行处理或保存。以下是使用QAudioInput录制音频的示例代码:

QMediaRecorder

QMediaRecorder类用于录制音频和视频。您可以使用它来录制音频、视频或同时录制音频和视频。以下是使用QMediaRecorder录制音频的示例代码:
 

评论
  • Twikoo
  • Valine