2014-06-05 2 views
0

현재 MP3를 사용하는 확장 SFML.Net에 대한 몇 가지 방법을 찾고 있습니다. 따라서 ioctllr은 NLayer를 추천했습니다. 그것을 필요로하는,NLayer MpegFile to SFML (.NET) 음악

05.06.2014 10:34:28 AudioCuesheetEditor.AudioBackend.AudioManagerSFML: FATAL | SFML.LoadingFailedException: Failed to load music from memory 
bei SFML.Audio.Music..ctor(Stream stream) 
bei AudioCuesheetEditor.AudioBackend.AudioManagerSFML.setMusic() in d:\tmp\AudioCuesheetEditor\src\AudioCuesheetEditor\AudioBackend\AudioManagerSFML.cs:Zeile 50. 

내가 SFML 읽어 :이 방법

namespace AudioCuesheetEditor.AudioBackend 
{ 
public class SFMLMp3Stream : Stream 
{ 
    private static readonly Logfile log = Logfile.getLogfile(System.Reflection.MethodBase.GetCurrentMethod().DeclaringType); 

    private MpegFile file; 

    public SFMLMp3Stream(String _filename) 
    { 
     //TODO:Check file existence 
     file = new MpegFile(_filename); 
     log.debug("file = " + file.ToString()); 
    } 

    #region implemented abstract members of Stream 

    public override void Flush() 
    { 
     file.Position = 0; 
    } 

    public override long Seek(long offset, SeekOrigin origin) 
    { 
     switch (origin) 
     { 
      case SeekOrigin.Begin: 
       file.Position = offset; 
       break; 
      case SeekOrigin.Current: 
       file.Position = file.Position + offset; 
       break; 
      case SeekOrigin.End: 
       break; 
     } 
     return file.Position; 
    } 

    public override void SetLength(long value) 
    { 
     //TODO? 
     int i = 1; 
    } 

    public override int Read(byte[] buffer, int offset, int count) 
    { 
     return file.ReadSamples(buffer, offset, count); 
    } 

    public override void Write(byte[] buffer, int offset, int count) 
    { 
     throw new NotImplementedException(); 
    } 

    public override bool CanRead 
    { 
     get 
     { 
      return true; 
     } 
    } 

    public override bool CanSeek 
    { 
     get 
     { 
      return file.CanSeek; 
     } 
    } 

    public override bool CanWrite 
    { 
     get 
     { 
      //Writing to stream is prohibited 
      return false; 
     } 
    } 

    public override long Length 
    { 
     get 
     { 
      return file.Length; 
     } 
    } 

    public override long Position 
    { 
     get 
     { 
      return file.Position; 
     } 
     set 
     { 
      file.Position = value; 
     } 
    } 

    #endregion 
} 

}

사용 :

musicStream = new SFMLMp3Stream(this.objProgram.getObjCuesheet().getAudiofilePath(true)); 
       try 
       { 
        music = new Music(musicStream); 
       } 
       catch(Exception ex) 
       { 
        log.fatal(ex.ToString()); 
       } 

내가 SFML에서 예외가 이것은 나의 접근 방식이다 PCM 16 비트 부호있는 정수 (http://en.sfml-dev.org/forums/index.php?topic=1406.0). NLayer가이를 지원합니까? 코드를 변경해야 어떻게 작동합니까?

도움 주셔서 감사합니다. Sven

답변

0

Unhappiliy 음악 수업에서는 mp3 스트림을 읽을 수 없습니다.