IOS의 iPod에서 재생중인 노래의 앱에서 데시벨 수준을 얻으려고합니다. 나는 내가 [[[MPMusicPlayerController iPodMusicPlayer] nowPlayingItem]으로 노래에 관한 정보를 얻을 수 있다는 것을 알고 있으며, AVAudioPlayer peakPowerForChannel 메소드를 사용하여 데시벨 레벨을 말할 수는 있지만, 그 둘을 함께 샘플링하여 운율을 측정하지는 못했다. 현재 연주중인 곡의 데시벨 레벨.백그라운드에서 현재 노래 재생을위한 샘플 데시벨 수준
답변
나는 똑같은 것을 찾고 있었지만 할 수 있었다. 그러나 그것은 곧장 나아갈 과정이 아니었다.
먼저 TSLibraryExport을 사용하여 iPod에서 내 앱 디렉토리로 노래를 내 보냅니다. 그 이유는 많은 시도 후에, 1) AVPlayer와 MPMusicPlayerController는 단순히 데시벨 레벨을 제공하지 않기 때문입니다. 2) AVAudioPlayer는 MediaPicker에서 MPMediaItemPropertyAssetURL을 읽지 않습니다. iPod에서 NSURL이 실제 파일 경로가 아닌 것 같아서 읽을 수 없습니다. 적어도 나는 이렇게 할 수 없었다.
그래서,
1)은 TSLibraryExport을 Downlaod 당신은 앱에 iPod에서 내보내는 방법을 볼 수 있습니다. 난 그냥 그 라이브러리에서 다음을 사용 :
-(IBAction) handleExportTapped {}
-(void) updateExportProgress: (NSTimer*) timer {} //this is actually nice to display the progress
-(void) setUpAVPlayerForURL: (NSURL*) url {} //this is triggered after the export is done
static BOOL coreAudioCanOpenURL (NSURL* url) {}
static NSString* myDocumentsDirectory() {}
2), 앱에 iPod에서 내보내 setUpAVPlayerForURL 또는 무엇이든 당신의 방법 이름이있는 AVAudioPlayer를 초기화 할 수 있습니다되면.
-(void) setUpAVPlayerForURL: (NSURL*) url {
newPlayer = [[AVAudioPlayer alloc] initWithContentsOfURL: url error: nil];
[newPlayer setMeteringEnabled:YES];
[NSTimer scheduledTimerWithTimeInterval:0.1 target:self selector:@selector(getLevel:) userInfo:nil repeats: YES];
[newPlayer play];}
newPlayer는 헤더 파일에 선언 된 AVAudioPlayer 인스턴스 변수입니다.
3) 이제 노래를 앱으로 가져 오면 재생 중입니다. 원하는 데시벨을 표시 할 수 있습니다. 테스트에서 방금 라벨에 버렸습니다.
- (void)getLevel:(NSTimer *)timer {
if (newPlayer.playing == YES) {
[newPlayer updateMeters];
dBLevel = [newPlayer averagePowerForChannel:1]; //dBlevel is a float ivar declared in my header file
dBLabel.text = [NSString stringWithFormat:@"%.01f",dBLevel]; //%.01f is just to show 2 decimals
nowPlayingLabel.text = [NSString stringWithFormat:@"%.01f",[newPlayer peakPowerForChannel:1]];
}
이것에 대해 나쁜 것은 당신이 파일을 복사하고 있기 때문에, 앱이 더 많은 공간을 필요로한다고하고, 둘째, 나는 사용자가 있기 때문에 다른 파일 형식으로 내보낼 수 없습니다 파일이있을 수 있습니다 생각, 호환성, blah blah blah ...
나는 이것이 도움이되기를 바랍니다. 나는 온라인으로 많은 것을 읽은 후에 해결책을 생각해 내려고 며칠을 보냈지 만, 이것이 가능한 유일한 것으로 보였다.
대답은이 질문에서 찾을 수 있습니다 How can I implement a volume meter for a song currently playing? (iPhone OS 3.1.3)
그것은 AVAudioPlayer
의 averagePowerForChannel
또한 코드 샘플이 사용하여 수행됩니다 : AvTouch
당신이 트랙을 선택하여이 통합하려는 경우 미디어 플레이어의 다음 링크에서이 프로세스에 대한 조언을 제공합니다.
iphone - Using MPMediaItems with AVAudioPlayer - Stack Overflow
나는 훨씬 더 간단한 방법으로 믹싱을 할 수있었습니다.
코드가 간단하고 비슷한 것을 시도한 것 같습니다.이것은 나를 위해 일했습니다 :
MPMediaItem *item = musicPlayer.nowPlayingItem;
NSURL *url = [item valueForProperty:MPMediaItemPropertyAssetURL];
[self playSong:url];
_audioPlayer = [[AVAudioPlayer alloc] initWithContentsOfURL:url error:nil];
[_audioPlayer setNumberOfLoops:-1];
[_audioPlayer setMeteringEnabled:YES];
- 1. iOS : 동시 레코딩 및 재생을위한 샘플 코드
- 2. iTunes에서 현재 재생중인 노래 가져 오기
- 3. 음성 재생을위한 Android Mediaplayer
- 4. speex 파일 재생을위한 대안?
- 5. 현재 표시된 수준 목록 수준을 얻는 방법
- 6. iPhone SDK - 앱을 통해 현재 노래 정보에 액세스
- 7. Windows Media Player에서 현재 재생중인 노래 가져 오기
- 8. ASP.Net MVC 실제 수준 샘플 비즈니스 응용 프로그램
- 9. MediaElement.js - 오디오 재생을위한 스플래시 화면
- 10. 소리 재생을위한 clojure 친숙한 라이브러리
- 11. 안드로이드에서 마이크로폰 사운드 레벨 (데시벨 레벨)을 받으십시오.
- 12. Android : 진폭 값을 데시벨 값으로 설정 하시겠습니까?
- 13. iPhone 마이크에서 데시벨 읽기를 얻는 방법
- 14. AVAssetReader의 샘플 데이터 얻기
- 15. Android 노래 정렬
- 16. 확인 노래 AS3
- 17. 노래 부 합성
- 18. SDCARD에서 노래 보여주기
- 19. 노래 암호화에 관해서
- 20. HOW-TO 컴퓨터 노래 만들기
- 21. 노래 연주가 끝났습니까? (C# MCI)
- 22. Silverlight를 사용하여 사용자의 노래 재생
- 23. Windows 모바일 마이크 하위 수준 속성
- 24. 현재 활동을 모두 지우고 백그라운드에서 새로운 활동을 시작 하시겠습니까?
- 25. ios AudioQueue 여러 노래 스트리밍
- 26. 샘플
- 27. Android : HTTP 스트리밍을 통해 음악 재생을위한 URL
- 28. 오디오 재생을위한 간단한 플렉스 구성 요소 찾기
- 29. 동영상 재생을위한 최상의 실버 라이트 비디오 기술
- 30. WPF에서 오디오 재생을위한 프레임 워크는 무엇입니까?
이것은 내가 원하는 것의 90 %를 얻었지만, AVAudioPlayer 클래스는 재생할 파일이나 메모리를 가리켜 만들어야한다는 점에서 여전히 내가 갇혀 있습니다. 버퍼 ... 나는 그걸 가지고 있지 않습니다 .. 나는 사용자가 이미 아이팟을 통해 연주하고있는 노래에 대한 정보를 얻고 싶습니다. – FierceMonkey
위의 수정 사항을 참조하십시오! – snibbe
나는 당신의 링크를보고, 나는 여전히 사용자가 백그라운드에서 연주하고있는 노래로부터 볼륨을 얻는 방법을 보지 못한다. – FierceMonkey