日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

Qt 3D 音频播放器 Example

發布時間:2023/12/20 编程问答 29 豆豆
生活随笔 收集整理的這篇文章主要介紹了 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}控制。基于單擊的按鈕state,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的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。