HTTP 라이브 스트리밍 방식을 사용하여 라이브 스트림을 재생할 때 현재 메타 데이터 (예 : 제목 및 아티스트)를 읽을 수 있습니까? iPhone 라디오 앱용입니다.iPhone SDK에서 HTTP 라이브 스트리밍을 사용하여 메타 데이터를 읽을 수 있습니다
답변
그래도 쉽지 않습니다. Matt Gallagher는 스트리밍 오디오에 대해 nice post on his blog입니다. 주제에 대해 다음과 같이 인용하십시오.
가장 쉬운 메타 데이터 소스는 HTTP 헤더에서 입니다. 이벤트 유형 : 다음 handleReadFromStream 내부 방법, 은 응답에서 헤더 필드를 복사하려면 은 다음 CFHTTPMessageCopyAllHeaderFields를 사용할 수 있으며, CFReadStreamRef에서 kCFStreamPropertyHTTPResponseHeader 속성을 복사 할 CFReadStreamCopyProperty 를 사용합니다. 많은 스트리밍 오디오 서버의 경우 스트림 이름은 이 필드 중 하나입니다.
메타 데이터의 상당히 더 어려운 출처는 ID3 태그입니다. ID3v1은 파일 끝에 항상 입니다 (따라서 스트리밍 할 때 쓸데없는 입니다). ID3v2는 처음에 이므로 에 액세스 할 수 있습니다.
I했습니다 적이없는 ID3 태그를 읽을 수 있지만 난 당신이 파일이로드 어딘가로 의 첫 번째 몇 백 킬로바이트 캐시 경우, AudioFileGetProperty으로 kAudioFilePropertyID3Tag 을 AudioFileOpenWithCallbacks와 캐쉬 를 열고 다음 읽어 의심 ID3 데이터를 읽을 수있는 일 수 있습니다 ( 이있는 경우). 내가 말했듯이 : 나는 을 실제로 그렇게하지 않았으므로 나는 그렇지 않다. 그것이 작동 할 것이라고 확신한다.
이 질문은 작성자의 실제 것임을 확신하지 않지만 도움이 될 수 있습니다. 고통의 2 일 후에 나는 그것이 아주 간단하다는 것을 조사했다. 다음
AVPlayerItem* playerItem = [AVPlayerItem playerItemWithURL:[NSURL URLWithString:<here your http stream url>]];
[playerItem addObserver:self forKeyPath:@"timedMetadata" options:NSKeyValueObservingOptionNew context:nil];
AVPlayer* player = [[AVPlayer playerWithPlayerItem:playerItem] retain];
[player play];
과 : 그것 뿐이다
- (void) observeValueForKeyPath:(NSString*)keyPath ofObject:(id)object
change:(NSDictionary*)change context:(void*)context {
if ([keyPath isEqualToString:@"timedMetadata"])
{
AVPlayerItem* playerItem = object;
for (AVMetadataItem* metadata in playerItem.timedMetadata)
{
NSLog(@"\nkey: %@\nkeySpace: %@\ncommonKey: %@\nvalue: %@", [metadata.key description], metadata.keySpace, metadata.commonKey, metadata.stringValue);
}
}
}
여기에 나를 위해 작동 코드입니다. 나는 왜 애플이 AVPlayerItem에 대한 문서를 제공하지 않았는지 알지 못한다.이 샘플은 실제 스트리밍 오디오의 핵심 기능인 스트림의 "제목"에 대한 접근이다. "AV Foundation Framework Reference"에서 필요한 경우 "timedMetadata"에 대해 알려줍니다. Matt의 샘플은 모든 스트림에서 작동하지 않지만 AVPlayer는 모든 스트림에서 작동하지 않습니다. SWIFT 2.0 점점 메타 데이터 정보를 음악 스트리밍
이것이 왜 정답으로 표시되지 않았는지 확실하지 않지만 실제로 표시해야합니다. 라디오 앱의 연속 스트림에서 현재 오디오 파일이 재생 된 후에 메타 데이터를 가져오고 새 오디오 파일이 재생되기 시작하면 무엇을 할 수 있습니까? – user717452
위의 코드는'timedMetadata' 값이 변경 될 때마다 호출됩니다. 따라서 (인터넷 라디오와 같은) 웹 스트림을 재생할 때'observeValueForKeyPath : ofObject : change : context :'가 변경 사항에 따라 변경됩니다. – rckoenes
위의 이유는 모르겠지만 정답으로 선택해야합니다. 그러나 그것은 저에게 많은 도움이됩니다. 고맙습니다. –
:이 작업을 진행 할 경우
override func observeValueForKeyPath(keyPath: String?, ofObject object: AnyObject?, change: [String : AnyObject]?, context: UnsafeMutablePointer<Void>) {
//Atualiza Nome Musica
if keyPath == "timedMetadata" {
if let meta = PlayerItem.timedMetadata {
print("Novo Metadata \(meta)")
for metadata in meta {
if let nomemusica = metadata.valueForKey("value") as? String{
LB_NomeMusica.text = nomemusica
if NSClassFromString("MPNowPlayingInfoCenter") != nil {
let image:UIImage = UIImage(named: "logo.gif")!
let albumArt = MPMediaItemArtwork(image: image)
var songInfo: [String:AnyObject] = [
MPMediaItemPropertyTitle: nomemusica,
MPMediaItemPropertyArtist: "Ao Vivo",
MPMediaItemPropertyArtwork: albumArt
]
MPNowPlayingInfoCenter.defaultCenter().nowPlayingInfo = songInfo
}
}
}
}
}
}
- 1. http 라이브 스트림의 메타 데이터를 구문 분석하십시오.
- 2. iSight 카메라를 통해 HTTP 라이브 스트리밍을 테스트 할 수 있습니까?
- 3. HTTP 라이브 스트리밍을 통해 MP3에서 ID3 태그 추출
- 4. 사과의 http 라이브 스트리밍을 지원하는 소프트웨어
- 5. IPhone 용 HTTP 라이브 스트리밍
- 6. 라이브 스트리밍을 재생하는 방법은 무엇입니까?
- 7. CORBA/RMI를 사용하여 라이브 오디오 스트리밍을 할 수 있습니까?
- 8. mp3 파일을위한 http 라이브 스트리밍
- 9. mediafilesegmenter 도구 - HTTP 라이브 스트리밍을 사용하여 두 개 이상의 동영상 파일을 세그먼트화할 수 있습니까?
- 10. MPMoviePlayerController 및 HTTP 라이브 스트리밍
- 11. Linux 서버의 HTTP 라이브 김이
- 12. iphone SDK에 라이브 스트리밍 중?
- 13. 캐리어 데이터 네트워크를 사용하여 Iphone SDK에서 데이터를 보내시겠습니까?
- 14. iPhone SDK에서 빌드 된 일정보기가 있습니다
- 15. 3GS 미만의 모델에서는 iPhone HTTP 라이브 스트리밍이 작동하지 않습니다
- 16. iPhone/Android에서 실시간 스트리밍 : RTMP - HTTP
- 17. ASP.NET에서 DataSet을 사용하여 데이터를 읽을 수 없습니다.
- 18. 라이브 비디오 스트리밍을 표시하지만 UIGraphicsGetCurrentContext로 이미지를 캡처 할 수 없습니까?
- 19. HTTP 라이브 스트리밍의 m3u8 파일?
- 20. plist iphone sdk에서 데이터를 읽는 중 문제가 발생했습니다.
- 21. iphone에서 라이브 카메라 스트리밍을 구현하는 방법은 무엇입니까?
- 22. ipad, iphone 및 safari 용 Http 라이브 스트리밍
- 23. UI를 잃지 않고 iOS 클라이언트에서 HTTP 라이브 스트리밍을 사용하여 오디오 파일 스트림 재생
- 24. <잘못된 CFStringRef> iPhone에서 이미지의 메타 데이터를 읽을 때
- 25. XML 데이터를 로컬 XML 파일에 추가하면 나중에 읽을 수 있습니다.
- 26. Apple HTTP 라이브 스트리밍
- 27. PHP가 서버 HTTP 로그를 읽을 수 있습니까?
- 28. iPhone SDK에서 UIWebView의 배경을 변경할 수 없습니다.
- 29. TouchXML로 iphone 앱의 트위터 피드를 읽을 수 있습니다.
- 30. 어떻게 데이터베이스에서 읽을 수 있고 http 스트림에 쓸 수 있습니다. php & mysql
이 알려 :
이 방법을 추가 할 수 있습니다. – Moshe
예, iTunes에서 .m3u 파일이 스트리밍 중일 때 노래 및 아티스트 정보가 자동으로 업데이트됩니다. 아마도 ID3v2가 처음부터 끝까지 스트리밍됩니다. 아마 메타 데이터를 기다리는 이벤트 리스너의 문제 일 수도 있습니다. 나는 계속 찾아 볼 것입니다. – miketucker
@mike 예.Matt의 코드를 살펴보고, 최신 버전은 GitHub에 있습니다. 좋은 힌트를 제공해야합니다. – Moshe