【发布时间】:2017-08-23 16:51:18
【问题描述】:
我正在尝试为 Chromecast 设备建立一个简单的音频流。这只是我熟悉 API 的 POC。我想要做的是加载用户的库,选择一首歌曲,然后将其转换。我一直在密切关注integration guide,但无济于事。
请在 Github here 上找到完整的项目。
我的代码概览,AppDelegate.m:
- (BOOL)application:(UIApplication*)application didFinishLaunchingWithOptions:(NSDictionary*)launchOptions
{
GCKCastOptions *options = [GCKCastOptions.alloc initWithReceiverApplicationID:kGCKMediaDefaultReceiverApplicationID];
[GCKCastContext setSharedInstanceWithOptions:options];
[GCKCastContext.sharedInstance.sessionManager addListener:self];
}
UITableViewDelegate:
- (void)tableView:(UITableView*)tableView didSelectRowAtIndexPath:(NSIndexPath*)indexPath
{
MPMediaItem *mediaItem = MusicManager.sharedManager[index];
NSString *path = [MPMediaLibrary.defaultMediaLibrary pathForAssetURL:mediaItem.assetURL];
GCKMediaMetadata *metadata = [GCKMediaMetadata.alloc initWithMetadataType:GCKMediaMetadataTypeMusicTrack];
[metadata setString:mediaItem.title forKey:kGCKMetadataKeyTitle];
[metadata setString:mediaItem.artist forKey:kGCKMetadataKeyArtist];
[metadata setString:mediaItem.albumTitle forKey:kGCKMetadataKeyAlbumTitle];
GCKMediaInformation *mediaInfo = [GCKMediaInformation.alloc initWithContentID:path
streamType:GCKMediaStreamTypeBuffered
contentType:[self fileMIMEType:path]
metadata:metadata
streamDuration:mediaItem.playbackDuration
customData:nil];
[GCKCastContext.sharedInstance.sessionManager.currentCastSession.remoteMediaClient loadMedia:mediaInfo autoplay:YES];
}
我通过点击 GCKCastButton 和 Start Session 来启动选角会话,我的电视会显示 Cast 标志,然后当我点击一首特定歌曲时,我的电视会简要显示元数据(即歌曲标题、艺术家姓名等)。 ),然后恢复为 Chromecast 徽标。在设备上,如果我停留在GCKCastButton 提供的屏幕上,我还可以看到本应正在播放的歌曲的详细信息,但几秒钟后很快变为“未选择媒体”。
我检查了文件路径、MIME 类型,一切都正确且可播放。我什至尝试过捆绑一个简短的 MP3 并尝试投射它,但无济于事。
不禁觉得我在这里遗漏了一些东西,集成指南并没有真正提供更多信息。
感谢任何见解。谢谢!
【问题讨论】:
标签: ios objective-c chromecast