Qt 3D 音频播放器 Example
Qt 3D渲染和Qt Quick 2
實現將Qt 3D渲染與Qt Quick 2D元素結合使用的應用程序。該示例使用媒體播放器播放音樂,并將音樂的進度作為可視化進度條。
運行實例:
要從Qt Creator運行示例,請打開“歡迎”模式,然后從“示例”中選擇示例。有關更多信息,請訪問構建和運行示例。
Qt Quick 2D實現
該audio-visualizer-qml/main.qml示例中的Qt快速實現MediaPlayer用于播放音頻內容。
MediaPlayer {id: mediaPlayerautoPlay: truevolume: 0.5source: "qrc:/music/tiltshifted_lost_neon_sun.mp3" }播放器由playButton和和c {stopButton}控制?;趩螕舻陌粹ostate,mainview更改。
使用該Scene3D類型渲染3D內容。音頻可視化器的狀態保留在中mainview。它會傳遞給visualizerbar動畫所需的。
Scene3D {anchors.fill: parentVisualizer {id: visualizeranimationState: mainview.statenumberOfBars: 120barRotationTimeMs: 8160 // 68 ms per bar} }Qt 3D實施
該示例的3D元素是在中創建的audio-visualizer-qml/Visualizer.qml。攝像機設置為固定位置,以正確的角度顯示可視化的條形圖。
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用于創建使音樂大小可視化的小節。
// 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顯示進度。該元素具有曲線形狀的網格,并根據播放曲目的持續時間在某個級別上旋轉以顯示進度。
// 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其中有用于旋轉條形和更改條形顏色的動畫。這些條在遵循環形的水平上旋轉。同時,條形的顏色是動態的。
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文件中讀取,該文件基于正在播放的曲目。但歌曲播放時,高度將按比例縮放以突出顯示當前播放的位置。播放完成后,將刷新播放器播放音樂信息。
總結
以上是生活随笔為你收集整理的Qt 3D 音频播放器 Example的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 4.1 Beamer海报
- 下一篇: [生存志] 第103节 范雎逐宣太后