iOS의 음악 라이브러리 음악을 재생하여 오디오 시청

iOS의 음악 라이브러리 음악을 재생하고 오디오 구성의 Unity 플러그인을 공개했다.
https://github.com/kkkkoyo/UnityMusicPlayerVisualizer

기존에는 withAR 주최스트레칭에 참가해 유튜버와 협업했다.오가토의 인기 시리즈''의 AR 적용화에 도전했다.
사용자 단말기의 악곡으로 음악 게임을 할 수 있도록 유니티로부터 iOS의 음악 라이브러리의 악곡을 얻어 소리 수준에 따라 악보를 자동으로 생성하는 소리 게임의 원형을 제작했다.
이번에는 이 사운드 게임 애플리케이션이 설치된 로컬 플러그인 부분을 정리해 공개했다.

컨디션

  • Unity2020.1.13f1
  • Xcode12.2
  • 기능


    MPMediaPickerController 곡을 얻고AVAudioPlayer 소리를 틀고averagePowerForChannel 소리 등급을 얻는다.
  • 음악 라이브러리 방문
  • 노래의 재생/정지
  • 노래 정보 획득
  • ※ 애플뮤직 등 스트리밍 음악은 지원하지 않습니다.

    이루어지다


    .
    └── MusicPlayerVisualizer
        ├── Editor
        │   └── PostBuildProcess.cs
        ├── Plugins
        │   ├── MusicPlayerPlugin.cs
        │   └── iOS
        │       ├── MediaPlayer.framework
        │       ├── UnityMusicPlayerPlugin.h
        │       └── UnityMusicPlayerPlugin.mm
        │
        └── Sample
            ├── Sample.cs
            └── Sample.unity
    
    

    UnityMusicPlayerPlugin.mm


    asus4/UnityMusicPlayerPlugin 구현 참조이 플러그인은 MPMusic Player Controller에서 읽고 재생합니다.하지만 이 반은 이번에 하고 싶은 음성 데이터에 접근할 수 없다.
    따라서 MPMediaItem에서 오디오 터미널의 URL을 가져와 파일을 한 번에 나열합니다.AVaudio Player에서 오디오 데이터를 재생하여 사운드 레벨을 얻을 수 있습니다.
    사운드 레벨을 얻으려면 터미널 내 URL을 취득해야 하기 때문에 URL을 취득할 수 없는 애플뮤직 등 스트리밍 음악은 지원하지 않는다.
    참조: openFrameworks로 iPod 라이브러리의 곡을 읽고 소리 레벨을 얻습니다

    MediaPlayer.framework


    구축할 때 매번 X코드에 프레임워크를 추가하지 않기 위해 iOS 폴더에 보관합니다.
    참조: Unity Xcode 구축 시 필요한 프레임 자동 설정

    Sample.cs


    Music Player Plugin급으로 악곡 정보의 취득, 재생, 정지, 악곡이 끝날 때의 취득을 진행한다.동시에 오디오 수준에 따라 cube의 비율을 실시간으로 이동한다.
            void SetInfo()
            {
                var player = MusicPlayerPlugin.Instance.info;
                string title = player.title;
                string artist = player.artist;
                double duration = player.duration;
                // ... 略
            }
    
            void Update()
            {
                double currentTime = MusicPlayerPlugin.Instance.currentTime;
                float level = MusicPlayerPlugin.Instance.level(0);
                // ... 略
                cube.transform.localScale = Vector3.one * level;
            }
    
            // 再生終了時に呼ばれる
            void EndOfPlayback()
            {
                Debug.Log("EndOfPlayback");
            }
            
            // 楽曲情報が更新された際に呼ばれる
            void OnPlayingItemChanged(MusicPlayer.Info info)
            {
                SetInfo();
            }
    
            // State(再生・停止・再生終了)が変更した際に呼ばれる
            void OnStateChanged(MusicPlayer.PlaybackState state)
            {
                SetInfo();
            }
    
            public void OnPlay()
            {
                // 再生
                MusicPlayerPlugin.Instance.Play();
            }
    
            public void OnLoad()
            {
                // ミュージックライブラリを開く
                MusicPlayerPlugin.Instance.Load();
            }
    

    끝말


    UnityMusicPlayerVisualizer를 이용하면 유니티에서 iOS의 음악 라이브러리의 악곡을 쉽게 재생하고 오디오 접근을 할 수 있다.꼭 사용하세요!
    Twitter :

    좋은 웹페이지 즐겨찾기