2011-02-14 4 views
4

이것이 주관적인 질문처럼 들리 겠지만,이 주제에 대한 좋은 의견이 필요합니다.WPF에서 오디오 재생을위한 프레임 워크는 무엇입니까?

C#/WPF GUI에서 사용자 상호 작용에 대한 응답으로 단파 파일을 재생해야합니다. 다음과 같이
사양은 다음과 같습니다

  • 낮은 대기 시간 (재생을 즉시 시작)
  • 코드가 네이티브 C#을해야을 (닷넷 4.0)
  • WPF와 함께 받아야합니다
  • 여러 개의 동시 플레이
  • 사운드 버퍼 조작에 대한 제한이 없습니다.
  • 미래가 보장됩니다. (몇 년 후에도 계속 지원할 예정입니다.)
  • 사운드 플레이어 모듈은 간단한 클래스 (= C# 코드),하지 (은 Microsoft의 DirectX SDK를 사용하여) 내가 DirectSound를 함께 아주 잘 함께있어 지금까지 캡슐화 된 DLL

해야한다, 그것은 언급 한 모든 요구 사항에 맞는 위. Visual Studio 2010 (.Net 4.0) 이후 Managed DirectX (MDX)는 더 이상 지원되지 않으며 최신 DirectX SDK에서도 사라졌습니다.

내 옵션은 무엇입니까?

  • 게임을 개발하는 것이 아니기 때문에 XNA는 너무 과장하여 보이지만 응용 프로그램입니다. 자세한 내용은 this question을 참조하십시오.
    MDX를 대체하기로되어 있지만 구현에 대한 많은 무서운 이야기를 읽습니다. 아니면 그 모든 동화인가?
  • SlimDX는 옵션 일 수 있지만 제 3 자 제품이며 상당히 큰 프로젝트입니다.
  • 내가 알고있는 몇 가지 "작은"솔루션은 자신의 단점 각각이 있습니다 :
    • MediaElement에 (만 WMP10 +와)
    • P는/WinMM
    • 는 PlaySound
    • SoundPlayer
    • 으로 호출 MediaPlayer
  • 와일드에는 엄청난 양의 맞춤형 오디오 라이브러리가 있습니다. 엘.
    (NAudio, BASS, waveOut ...)

는 내가 새로운 프로젝트를 위해 사용해야하는 일에 대해 정말 의아해 해요. 나는 그것의 한계가 나를 사용하는 것을 방해한다는 것을 알기 위해 전혀 새로운 프레임 워크를 파고 드는 것을 원하지 않는다.

미리 감사드립니다.

+0

왜 제 3 자 관리되지 않는 라이브러리를 제외하는지 궁금합니다. 결국 DirectX는 비 관리 코드입니다. 모든 사운드 라이브러리는 특정 레벨에서 비 관리 코드를 갖습니다. 왜 Microsoft 관리되지 않는 라이브러리는 괜찮습니까, 제 3 자 라이브러리는 그렇지 않은 것입니까? –

+0

M $가 타사 솔루션보다 자신의 제품에 더 나은 지원을 제공 할 것이라고 생각했기 때문에 처음에는 괜찮 았지만 DirectX를 중단 한 이후로는 더 이상 확신 할 수 없습니다 ... 이제는 두려워요. 미래의 .Net 버전은 M $에서 나온 것이 아니기 때문에 현재 작동 할 수도있는 것을 지원하지 않을 것입니다. –

+0

NAudio에서 지금 일하십니까? 아니면 다른 프레임 워크를 사용하기로 결정 했습니까? – 10ff

답변

5

는 당신이 필요로 할 것입니다 옵션의 꽤 많은 것 같은데,하지만 난 NAudio

낮은 대기 시간 (재생을 즉시 시작)

없음 오디오 라이브러리 의지에 대한 귀하의 요구 사항에 응답 할 것이다 "즉시"시작하십시오. NAudio는 WaveOut API를 사용하여 약 50ms의 대기 시간으로 쉽게 작업 할 수 있습니다. 아마도 빠른 네이티브 C의 # (4.0 닷넷)해야 WASAPI

코드를 사용하는 경우

NAudio 코드 네이티브 C#을 & 윈도우 API에 대한 래퍼를 포함입니다

WPF와 함께 받아야합니다

NAudio는 WPF로 정상적으로 작동합니다.

여러 개의 동시 재생

여러 재생이 지원됩니다. 선택적으로 믹서를 생성하여 하나의 재생을 가지며 다양한 입력을 믹싱 할 수 있습니다. 사운드 버퍼 조작

이것은 당신이 언급 한 몇 가지 다른 옵션을 통해 NAudio의 큰 장점이다에

제한이 없습니다. 샘플 데이터에 대한 모든 액세스 권한이 있으며 원하는 방식으로 조작 할 수 있습니다.

보장 된 미래 (나는 아직도 몇 년 동안 지원을 무언가를 사용하고 싶습니다.) 오픈 소스 소프트웨어와 보장이 없습니다

. 그러나 오픈 소스 이후로 버그를 스스로 고치지 못하게하는 것은 아무것도 없습니다. NAudio는 10 년 전부터 사용되어 왔습니다.

사운드 플레이어 모듈은

그럼 당신이 당신의 자신의 프로젝트에 코드를 복사 할 수있는 간단한 클래스 (= C# 코드)가 아닌 캡슐화 된 DLL 수 있지만, 그래서 헬퍼 클래스의 꽤 많이있다한다 실제로 DLL을 사용하는 것이 더 쉬울 수도 있습니다.

+0

감사합니다. 지금까지 감사의 말을 전합니다. –

관련 문제