前提・実現したいこと
⑴Linux上でOpenal(libopenal.so)とSDL(libSDL_mixer.so)ライブラリーを利用してwavファイルをロード、再生させるコード(C言語)を作成
⑵再生させるコードをライブラリーとして生成(libaudio.so)、3つのライブラリをリンクさせてUnityに3つのライブラリをplugin
⑶apkファイル生成
⑷Androidフォンでwavファイルの音を聴く
試したこと
現在はSDLライブラリーを使用せずに(SDLライブラリーはwavファイルをロードさせる関数を使用するため)サイン波だけを生成させ、Androidフォンからサイン波の音が鳴るとこまで確認出来ました。
問題
wavファイルはLinux上に位置しているので音を再生させるコードでMix_LoadWav("wavファイルのpath")関数を利用してdataを取り出しBufferに入れ音を再生させるのですが、Androidフォンでテストしたところwavファイルを探し出せないのか音が鳴りません(予想はしていたのですが……)
wavファイルの位置をどのように設定してどのように持ってくればいいのかが分からず困っています。
該当のソースコード
Linux側での音を再生させるコード(audio.c)
C
1#include<stdio.h> 2#include<math.h> 3#include "include/al.h" 4#include "include/alc.h" 5#include "include/SDL_mixer.h" 6 7int open(){ 8 int i; 9 ALuint buffer; 10 ALuint source; 11 Mix_Chunk *sound=NULL; 12 ALCdevice *device; 13 ALCcontext *context; 14 15 device=alcOpenDevice(NULL); 16 context=alcCreateContext(device,NULL); 17 alcMakeContextCurrent(context); 18 19 Mix_OpenAudio( 22050, MIX_DEFAULT_FORMAT, 2, 4096 ); 20 sound = Mix_LoadWAV("include/220.wav");//wavファイルをロード 21 if( Mix_OpenAudio( 22050, MIX_DEFAULT_FORMAT, 2, 4096 ) == -1 ) 22 return -1; 23 alGenBuffers(1,&buffer); 24 //バッファ生成 25 alBufferData(buffer, AL_FORMAT_STEREO16, sound->abuf, sound->alen, 44100); 26 //ソース生成 27 alGenSources(1,&source); 28 //ソースに再生させるバッファを割り当てる 29 alSourcei(source,AL_BUFFER,buffer); 30 alSourcei(source, AL_LOOPING, AL_TRUE); 31 //ソースに再生 32 alSourcePlay(source); 33 for(i=0;i<1000000000000;i++){} 34 35 //SDL_mixer 終了 36 Mix_CloseAudio(); 37 //ソースの割り当て解除 38 alSourcei(source,AL_BUFFER,0); 39 //ソース廃棄 40 alDeleteSources(1,&source); 41 //バッファ廃棄 42 alDeleteBuffers(1,&buffer); 43 //廃棄 44 alcMakeContextCurrent(NULL); 45 alcDestroyContext(context); 46 alcCloseDevice(device); 47 48 return 0; 49} 50
Unity側のコード
C#
1using System.Collections; 2using System.Collections.Generic; 3using UnityEngine.UI; 4using UnityEngine; 5using System.Runtime.InteropServices; 6using System; 7 8public class call : MonoBehaviour 9 10 11{ 12 [DllImport("audio")] //自作のライブラリーをインポート 13 static extern int open(); 14 15 public Text num; 16 17 18 void Start() 19 { 20 num.text = open() + ""; //wavファイルを再生させる関数を呼び出す 21 } 22 void Update() 23 { 24 } 25} 26
補足情報(FW/ツールのバージョンなど)
使用中のPC:mac OS X
開発環境:virtual machine ubuntu 18.04.1 Desktop (Linux)
Unity version:2018.2.0f2
Android Phone Architecture : ARM Cortex-A53
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2018/11/17 03:20 編集
2018/11/17 10:20
2018/11/22 07:37