При попытке воспроизвести звук с CSCore, загруженным внутри проекта Unity3D, редактор завершается.CSCore вылетает из-за вызова «soundOut.Play» изнутри Unity
IWaveSource audio = CodecFactory.Instance.GetCodec(pathToMP3File);
ISoundOut device = new WasapiOut();
device.Initialize(audio);
device.Play(); // the call causing the crash
Какой выход я выбираю (WasapiOut, DirectSoundOut, WaveOut) не меняет результата.
CSCore.dll был собран с «Unity 3.5 .net Полный базовый класс библиотеки» целевой параметр в VS 2015. Это полный сценарий:
using UnityEngine;
using CSCore;
using CSCore.Codecs;
using CSCore.SoundOut;
using System.Threading;
public class CScorePlayback : MonoBehaviour {
static string testAudio = "C:/Path/to/audio.mp3";
IWaveSource audioSource;
ISoundOut audioDevice;
Thread audioThread;
void Start() {
audioThread = new Thread(PlaySoundTest);
audioThread.Start();
}
void PlaySoundTest()
{
audioSource = CodecFactory.Instance.GetCodec(testAudio);
audioDevice = new WaveOut();
audioDevice.Initialize(audioSource);
try
{
audioDevice.Play();
Debug.Log("Sound Played!");
}
catch (System.Exception e)
{
Debug.Log("Error playing sound: " + e.Message);
}
}
void OnDestroy()
{
if (audioThread != null) audioThread.Join();
if (audioDevice != null)
{
audioDevice.Dispose();
}
if (audioSource != null)
{
audioSource.Dispose();
}
}
}
Код, который у вас есть в вашем вопросе, работает ли он в Visual Studio? Я не имею в виду Единство. Я имею в виду компиляцию с помощью MS Visual Studio. Он работает там? – Programmer
@ Программист Да, код работает в обычном проекте C#. – Appleshell