Unity에서 ExoPlayer를 사용하여 사운드 파일 재생
안드로이드 라이브러리 만들기
먼저 안드로이드 스튜디오에서 안드로이드 라이브러리의 프로젝트를 제작하고 다음과 같은 종류를 제작한다.이 클래스는 ExoPlayer의 인스턴스를 만들거나 URI를 읽는 방법을 제공합니다.
import android.content.Context;
import android.net.Uri;
import com.google.android.exoplayer2.DefaultRenderersFactory;
import com.google.android.exoplayer2.ExoPlayerFactory;
import com.google.android.exoplayer2.SimpleExoPlayer;
import com.google.android.exoplayer2.audio.AudioProcessor;
import com.google.android.exoplayer2.ext.gvr.GvrAudioProcessor;
import com.google.android.exoplayer2.source.ExtractorMediaSource;
import com.google.android.exoplayer2.trackselection.DefaultTrackSelector;
import com.google.android.exoplayer2.upstream.DefaultDataSourceFactory;
import com.google.android.exoplayer2.util.Util;
public class UnityExoPlayer {
private final GvrAudioProcessor audioProcessor = new GvrAudioProcessor();
private final SimpleExoPlayer player;
private final ExtractorMediaSource.Factory factory;
public UnityExoPlayer(Context context) {
final DefaultRenderersFactory renderersFactory = new DefaultRenderersFactory(context) {
@Override
protected AudioProcessor[] buildAudioProcessors() {
return new AudioProcessor[]{audioProcessor};
}
};
player = ExoPlayerFactory.newSimpleInstance(renderersFactory, new DefaultTrackSelector());
factory = new ExtractorMediaSource.Factory(new DefaultDataSourceFactory(context, Util.getUserAgent(context, "UnityExoPlayer")));
}
public void prepare(String uri) {
ExtractorMediaSource mediaSource = factory.createMediaSource(Uri.parse(uri));
player.prepare(mediaSource);
}
public void play() {
player.setPlayWhenReady(true);
}
public void pause() {
player.setPlayWhenReady(false);
}
public void stop() {
player.stop();
}
public void release() {
player.release();
}
public void updateOrientation(float w, float x, float y, float z) {
audioProcessor.updateOrientation(w, x, y, z);
}
}
이 코드를 컴파일하기 위해서는 다음과 같은dependenciesbuild.gradle
가 필요합니다.dependencies {
implementation 'com.google.android.exoplayer:exoplayer-core:2.8.1'
implementation 'com.google.vr:sdk-audio:1.150.0'
}
그리고Gradle의assemble
빌딩을 이동해서aar파일을 만듭니다.Unity 프로젝트에 aar 파일 불러오기
↑ 제작된 aar에는 ExoPlayer와 GVR 오디오의 종류가 포함되지 않기 때문에 aar 파일을 따로 가지고 Unity 프로젝트에 들어가야 한다.다음 링크에서 아라를 다운로드할 수 있습니다.2018/06/15시 최신 버전은 엑소플레이어 2.8.1, GVR 오디오는 1.150.0이다.
Unity 범주 만들기
다음은 ↑의 자바 클래스를 C#에서 호출하는 호각을 쓰십시오.
using System;
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class UnityExoPlayer
{
private AndroidJavaObject javaInstance;
public UnityExoPlayer()
{
using (AndroidJavaClass javaUnityPlayer = new AndroidJavaClass("com.unity3d.player.UnityPlayer"))
{
using (var currentActivity = javaUnityPlayer.GetStatic<AndroidJavaObject>("currentActivity"))
{
// ↓ここのクラス名はパッケージ名に合わせて書き換える
javaInstance = new AndroidJavaObject("com.niusounds.unityexoplayer.UnityExoPlayer", currentActivity);
}
}
}
public void Prepare(string uri)
{
javaInstance.Call("prepare", uri);
}
public void Play()
{
javaInstance.Call("play");
}
public void Pause()
{
javaInstance.Call("pause");
}
public void Stop()
{
javaInstance.Call("stop");
}
public void SetTexture(int texPtr)
{
javaInstance.Call("setTexture", texPtr);
}
public void Release()
{
javaInstance.Call("release");
}
public void UpdateOrientation(float w, float x, float y, float z)
{
javaInstance.Call("updateOrientation", w, x, y, z);
}
}
사용
이렇게 하면
UnityExoPlayer
클래스를 사용하여 ExoPlayer를 사용하여 공간 사운드를 재생할 수 있습니다.using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class ExoPlayerComponent : MonoBehaviour
{
private UnityExoPlayer player;
void Awake()
{
player = new UnityExoPlayer();
}
void Start()
{
player.Prepare("/path/to/audio");
player.Play();
}
void Update()
{
var orientation = Quaternion.Inverse(Camera.main.transform.rotation);
player.UpdateOrientation(orientation.w, orientation.x, orientation.y, orientation.z);
}
}
비디오 대응 정보
player.Prepare
애니메이션 URI를 통해 Anvisonic 사운드가 있는 애니메이션 사운드만 재생할 수 있습니다.그리고 유닛의 텍스쳐를 엑소플레이어에게 넘겨주고, 유닛 장면 속 공의 표면에 영상을 띄우면 Anvisonic이 들어간 360 영상을 만들 수 있는 완전 플레이어... 도전한 사람이 있다면 알려주세요.
Reference
이 문제에 관하여(Unity에서 ExoPlayer를 사용하여 사운드 파일 재생), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/niusounds/items/d224562bb95f26782b17텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)