windowsクレートで音楽ファイルを再生したい

実現したいこと

発生している問題・エラーメッセージ

windows::Media::Playback::MediaPlayerオブジェクトのPlay()は実行されるのですが、音が出ません。
Play()の実行後、media_playerの状態は"Opening"(1)でした。再生中のときは"Playing"(3)になるようなので、なにか足りない操作があるのか、すごい勘違いをしていると思っています。

ソースコードとコンソールの出力

以下はmain.rsのソースです。

rust

1use windows::Media::Playback::MediaPlayer;2use windows::core::HSTRING;3use windows::Media::Core::MediaSource;4 5/** 6 * mediaplayer 7 */8pub fn main(){9 play_with_storage();10}11 12pub fn play_with_storage(){13 let file = HSTRING::from(r"C:\Users\user\Documents\winrt_test\project\src\hoge_song.mp3");14 let storage = windows::Storage::StorageFile::GetFileFromPathAsync(&file).unwrap().get().unwrap();15 //let str = storage.Name().unwrap().to_string();16 17 let media_player = MediaPlayer::new().unwrap();18 let media_source = MediaSource::CreateFromStorageFile(&storage).unwrap();19 media_player.SetSource(&media_source).unwrap();20 21 println!("{:?}", media_player.CurrentState().unwrap());22 media_player.Play().unwrap();23 println!("{:?}", media_player.CurrentState().unwrap());24 println!("{:?}", media_player.Volume().unwrap()); 25}

以下はコンソールの出力です。

MediaPlayerState(0) MediaPlayerState(1) 1.0

補足情報1

Windowsのバージョンです。

  • エディション Windows 11 Home
  • バージョン 22H2
  • OS ビルド 22621.2428

補足情報2

以下はディレクトリ構造の概要です。
targetフォルダより下のフォルダ内のファイルは省略しました。

C:. └───project │ .gitignore │ Cargo.lock │ Cargo.toml │ ├───src │ hoge_song.mp4 │ hoge_song.mp3 │ main.rs │ └───target │ └───debug │ ├───.fingerprint │ ├───build │ ├───deps │ ├───examples └───incremental

補足情報3

以下はCargo.tomlの中身です。

[package] name = "project" version = "0.1.0" edition = "2021" [dependencies.windows] version = "0.51.0" features = [ "Foundation", "Foundation_Collections", "Media_Control", "deprecated", "Media_Playback", "Media", "UI_Notifications", "Data_Xml_Dom", "Media_Core", "Storage_Pickers", "Web", "Web_UI", "Web_UI_Interop" ]

コメントを投稿

0 コメント