Qt 3D 音频播放器 Example
Qt 3D渲染和Qt Quick 2
實現(xiàn)將Qt 3D渲染與Qt Quick 2D元素結(jié)合使用的應(yīng)用程序。該示例使用媒體播放器播放音樂,并將音樂的進度作為可視化進度條。
運行實例:
要從Qt Creator運行示例,請打開“歡迎”模式,然后從“示例”中選擇示例。有關(guān)更多信息,請訪問構(gòu)建和運行示例。
Qt Quick 2D實現(xiàn)
該audio-visualizer-qml/main.qml示例中的Qt快速實現(xiàn)MediaPlayer用于播放音頻內(nèi)容。
MediaPlayer {id: mediaPlayerautoPlay: truevolume: 0.5source: "qrc:/music/tiltshifted_lost_neon_sun.mp3" }播放器由playButton和和c {stopButton}控制?;趩螕舻陌粹ostate,mainview更改。
使用該Scene3D類型渲染3D內(nèi)容。音頻可視化器的狀態(tài)保留在中mainview。它會傳遞給visualizerbar動畫所需的。
Scene3D {anchors.fill: parentVisualizer {id: visualizeranimationState: mainview.statenumberOfBars: 120barRotationTimeMs: 8160 // 68 ms per bar} }Qt 3D實施
該示例的3D元素是在中創(chuàng)建的audio-visualizer-qml/Visualizer.qml。攝像機設(shè)置為固定位置,以正確的角度顯示可視化的條形圖。
Camera {id: cameraprojectionType: CameraLens.PerspectiveProjectionfieldOfView: 45aspectRatio: 1820 / 1080nearPlane: 0.1farPlane: 1000.0position: Qt.vector3d(0.014, 0.956, 2.178)upVector: Qt.vector3d(0.0, 1.0, 0.0)viewCenter: Qt.vector3d(0.0, 0.7, 0.0) }ANodeInstantiator用于創(chuàng)建使音樂大小可視化的小節(jié)。
// Bars CuboidMesh {id: barMeshxExtent: 0.1yExtent: 0.1zExtent: 0.1 }NodeInstantiator {id: collectionproperty int maxCount: parent.numberOfBarsmodel: maxCountdelegate: BarEntity {id: cubicEntityentityMesh: barMeshrotationTimeMs: sceneRoot.barRotationTimeMsentityIndex: indexentityCount: sceneRoot.numberOfBarsentityAnimationsState: animationStatemagnitude: 0} }該visualizer還包含一個Entity顯示進度。該元素具有曲線形狀的網(wǎng)格,并根據(jù)播放曲目的持續(xù)時間在某個級別上旋轉(zhuǎn)以顯示進度。
// Progress Mesh {id: progressMeshsource: "qrc:/meshes/progressbar.obj" }Transform {id: progressTransformproperty real defaultStartAngle: -90property real progressAngle: defaultStartAnglerotationY: progressAngle }Entity {property Material progressMaterial: PhongMaterial {ambient: "#80C342"diffuse: "black"}components: [progressMesh, progressMaterial, progressTransform] }在audio-visualizer-qml/BarEntity.qml其中有用于旋轉(zhuǎn)條形和更改條形顏色的動畫。這些條在遵循環(huán)形的水平上旋轉(zhuǎn)。同時,條形的顏色是動態(tài)的。
QQ2.NumberAnimation {id: angleAnimationtarget: angleTransformproperty: "barAngle"duration: rotationTimeMsloops: QQ2.Animation.Infiniterunning: truefrom: startAngleto: 360 + startAngle } QQ2.SequentialAnimation on barColor {id: barColorAnimationsrunning: falseQQ2.ColorAnimation {from: lowColorto: highColorduration: animationDuration}QQ2.PauseAnimation {duration: animationDuration}QQ2.ColorAnimation {from: highColorto: lowColorduration: animationDuration} }每首音樂的播放時長都從一個單獨的.raw文件中讀取,該文件基于正在播放的曲目。但歌曲播放時,高度將按比例縮放以突出顯示當(dāng)前播放的位置。播放完成后,將刷新播放器播放音樂信息。
總結(jié)
以上是生活随笔為你收集整理的Qt 3D 音频播放器 Example的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 4.1 Beamer海报
- 下一篇: [生存志] 第103节 范雎逐宣太后