suroMind

[iOS] Audio Streaming 본문

IT분야/iOS

[iOS] Audio Streaming

suroMind 2012. 2. 17. 11:41
iOS에서 AvAudioPlayer는 기본적으로 MP3 Streaming을 지원하지 않고 Local File만을 지원합니다.
그래서 원격지에 있는 음악파일을 재생시에는 다운 받아서 재생을 해야겠지요..

스트리밍이 지원되는 라이브러리가 없을까 찾아보다가 아래와 같은 사이트 검색...
 https://github.com/mattgallagher/AudioStreamer 

라이브러리와 사용하는 샘플 예제가 같이 들어 있습니다. 어렵지 않게 사용하 실 수 있을 겁니다.
예제 속에는 슬라이더를 이용한 프로그레스 진행상황을 알 수있는 부분과 특정 위치 이동하는 기능등
필요한 부분은 다 구현되어 있습니다.

다만 한가지 스트리밍이 종료될 시점에 현재 재생시간을 알아오는 부분이 문제가 좀 있더군요..
음악은 처음 부터 끝까지 잘 재생되지만 마지막 부분에서 슬라이더가 이동되지 않아 사용자가 보기에
노래가 재생이 덜 된것 처럼 보입니다. 실제로는 다 재생된 겁니다.

해결 방법은 AudioStreamer.m 파일에서 소스를 약간 추가해 주었습니다. 
           if(sampleRate > 0 && ![self isFinishing]){
              ....
  ....
}else if([self isFinishing]){
            AudioTimeStamp queueTime;
Boolean discontinuity;
err = AudioQueueGetCurrentTime(audioQueue, NULL, &queueTime, &discontinuity);
            
const OSStatus AudioQueueStopped = 0x73746F70; // 0x73746F70 is 'stop'
if (err == AudioQueueStopped)
{
return lastProgress;
}
double progress = seekTime + queueTime.mSampleTime / sampleRate;
            lastProgress = progress;
            return progress;
 
별건 없습니다. 종료될 타임에는 현재 오디오 재생시간을 못가져오도록 막혀 있어서 추가해 줬습니다.
원본 소스에서 else if 구문을 추가해 주시면 됩니다. 
더 좋은 방법이 있는지는 모르겠지만...

그럼 즐프.. 
Comments