Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
Tags
- jsp
- Memory
- ipad
- 티스토리 초대장
- Android
- UIWebView
- udp
- 톰켓
- Tomcat
- JavaScript
- 인코딩
- Database
- encoding
- 한글
- C#
- 이클립스
- iphone
- java
- spring
- WebView
- ios
- XML
- HTML
- Objective C
- 티스토리 초대
- MySQL
- Eclipse
- permgen space
- 메모리
- jQuery
Archives
- Today
- Total
suroMind
[iOS] Audio Streaming 본문
iOS에서 AvAudioPlayer는 기본적으로 MP3 Streaming을 지원하지 않고 Local File만을 지원합니다.
그래서 원격지에 있는 음악파일을 재생시에는 다운 받아서 재생을 해야겠지요..
스트리밍이 지원되는 라이브러리가 없을까 찾아보다가 아래와 같은 사이트 검색...
https://github.com/mattgallagher/AudioStreamer
라이브러리와 사용하는 샘플 예제가 같이 들어 있습니다. 어렵지 않게 사용하 실 수 있을 겁니다.
예제 속에는 슬라이더를 이용한 프로그레스 진행상황을 알 수있는 부분과 특정 위치 이동하는 기능등
필요한 부분은 다 구현되어 있습니다.
다만 한가지 스트리밍이 종료될 시점에 현재 재생시간을 알아오는 부분이 문제가 좀 있더군요..
음악은 처음 부터 끝까지 잘 재생되지만 마지막 부분에서 슬라이더가 이동되지 않아 사용자가 보기에
노래가 재생이 덜 된것 처럼 보입니다. 실제로는 다 재생된 겁니다.
해결 방법은 AudioStreamer.m 파일에서 소스를 약간 추가해 주었습니다.
if(sampleRate > 0 && ![self isFinishing]){
....
별건 없습니다. 종료될 타임에는 현재 오디오 재생시간을 못가져오도록 막혀 있어서 추가해 줬습니다.
원본 소스에서 else if 구문을 추가해 주시면 됩니다.
더 좋은 방법이 있는지는 모르겠지만...
그럼 즐프..
그래서 원격지에 있는 음악파일을 재생시에는 다운 받아서 재생을 해야겠지요..
스트리밍이 지원되는 라이브러리가 없을까 찾아보다가 아래와 같은 사이트 검색...
https://github.com/mattgallagher/AudioStreamer
라이브러리와 사용하는 샘플 예제가 같이 들어 있습니다. 어렵지 않게 사용하 실 수 있을 겁니다.
예제 속에는 슬라이더를 이용한 프로그레스 진행상황을 알 수있는 부분과 특정 위치 이동하는 기능등
필요한 부분은 다 구현되어 있습니다.
다만 한가지 스트리밍이 종료될 시점에 현재 재생시간을 알아오는 부분이 문제가 좀 있더군요..
음악은 처음 부터 끝까지 잘 재생되지만 마지막 부분에서 슬라이더가 이동되지 않아 사용자가 보기에
노래가 재생이 덜 된것 처럼 보입니다. 실제로는 다 재생된 겁니다.
해결 방법은 AudioStreamer.m 파일에서 소스를 약간 추가해 주었습니다.
if(sampleRate > 0 && ![self isFinishing]){
....
....
}else if([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 구문을 추가해 주시면 됩니다.
더 좋은 방법이 있는지는 모르겠지만...
그럼 즐프..
'IT분야 > iOS' 카테고리의 다른 글
[iOS]한글 추가 폰트 사용하기 (0) | 2012.02.22 |
---|---|
[iOS]CATransction을 이용한 애니메이션 구현 (0) | 2012.02.22 |
[iOS] TBXML 파서로 XML 파싱하기 (0) | 2012.02.08 |
[iOS] Background Pattern Image 적용 (0) | 2012.02.08 |
[iOS] 인코딩 변경 (UTF-8) (0) | 2012.02.08 |
Comments