第十章 多媒体 Multimedia
多媒体(Multimedia)
Qt Multimedia 中的多媒体元素使播放和记录媒体(如声音、视频或图片)成为可能。解码和编码是通过特定于平台的后端处理的。例如,流行的 GStreamer 框架用于 Linux,WMF 用于 Windows,AVFramework 用于 OS X 和 iOS,Android 多媒体 API 用于 Android。
多媒体元素不是 Qt Quick 核心 API 的一部分。相反,它们是通过导入 Qt Multimedia 提供的单独 API 提供的,如下所示:
import QtMultimedia
播放媒体(Playing Media)
QML 应用程序中多媒体集成的最基本案例是播放媒体。 QtMultimedia 模块通过提供一个专用的 QML 组件来支持这一点:MediaPlayer。
MediaPlayer 组件是将媒体源连接到一个或多个输出通道的非可视项。根据媒体的性质(即音频、图像或视频),可以配置各种输出通道。
(一)播放音频(Playing audio)
在以下示例中,MediaPlayer 在空窗口中播放来自本地URL 的 mp3 示例音频文件:
准备工作:
添加一个音频文件资源
QML代码如下:
import QtQuick
import QtMultimedia
Window {
width: 640
height: 480
visible: true
title: qsTr("Hello World")
MediaPlayer {
id:player
source: "qrc:/001.mp3"
audioOutput: AudioOutput{
}
Component.onCompleted: {
player.play()
}
}
}
在这个例子中,MediaPlayer 定义了两个属性:
source:它包含要播放的媒体的 URL。它可以嵌入 (qrc://)、本地 (file://) 或远程 (https://)。
audioOutput:它包含一个音频输出通道,AudioOutput,连接到一个物理输出设备。默认情况下,它将使用系统默认的音频输出设备。
一旦主组件完全初始化,就会调用播放器的播放函数:
Component.onCompleted: {
player.play()
}
(二)播放视频(Playing a video)
如果要播放图片或视频等视觉媒体,还必须定义一个 VideoOutput 元素以将生成的图像或视频放置在用户界面中。
在以下示例中,MediaPlayer 播放来自本地 URL 的 mp4 示例视频文件,并将视频内容置于窗口的中心:
准备工作:
添加一个视频文件资源
QML代码如下:
import QtQuick
import QtMultimedia
Window {
width: 1920
height: 1080
visible: true
title: qsTr("Hello World")
MediaPlayer {
id:player
source: "qrc:/Res/001.mp4"
audioOutput: AudioOutput{
}
videoOutput: vdo
}
VideoOutput{
id:vdo
anchors.fill: parent
anchors.margins: 20
}
Component.onCompleted: {
player.play()
}
}
videoOutput:它包含视频输出通道VideoOutput,表示为在用户界面中显示视频而保留的视觉空间。
(三)控制回放(Controlling the playback)
。。。
(四)声音特效(Sound Effects
。。。
(五)视频流(Video Streams)
VideoOutput 元素不限于与 MediaPlayer 元素结合使用。它还可以与各种视频源一起使用以显示视频流。
例如,我们可以使用 VideoOutput 来显示用户相机的实时视频流。为此,我们将把它与两个组件结合起来:Camera 和 CaptureSession。
QML代码如下:
import QtQuick
import QtMultimedia
Window {
width: 640
height: 480
visible: true
title: qsTr("Hello World")
CaptureSession{
id:capturesession
camera: Camera{
}
videoOutput: output
}
VideoOutput{
id:output
anchors.fill: parent
}
Component.onCompleted: capturesession.camera.start()
}
CaptureSession 组件提供了一种简单的方法来读取摄像机流、捕获静止图像或录制视频。
作为 MediaPlayer 组件,CaptureSession 元素提供了一个 videoOutput 属性。因此我们可以使用这个属性来配置我们自己的可视化组件。
最后,当应用程序加载完毕后,我们就可以开始摄像了:
Component.onCompleted: captureSession.camera.start()
(六)拍摄图像(Capturing Images)
机元素的主要功能之一是可用于拍照。我们将在一个简单的定格动画应用程序中使用它。通过构建应用程序,您将学习如何显示取景器、在相机之间切换、拍摄照片以及跟踪拍摄的照片。
。。。
最后更新于
这有帮助吗?