【发布时间】:2014-08-17 20:46:17
【问题描述】:
我正在开发适用于 Android 的 Chromecast 应用,并试图让 WebVTT 字幕/字幕正常工作。
我按如下方式实例化一个 MediaTrack 对象:
MediaTrack track = new MediaTrack.Builder(0, MediaTrack.TYPE_TEXT)
.setContentId("http://www.example.com/example.vtt")
.setSubtype(MediaTrack.SUBTYPE_SUBTITLES)
.setContentType("ISO-8859-1")
.setLanguage(Locale.ENGLISH)
.setName("English")
.build();
并将其添加到列表中。
我使用构建器实例化 MediaInfo,并使用 .setMediaTracks 方法引用轨道列表:
MediaInfo.Builder builder = new MediaInfo.Builder("http://www.example.com/example.m3u8")
.setStreamType(MediaInfo.STREAM_TYPE_BUFFERED)
.setContentType("application/vnd.apple.mpegurl")
.setMetadata(movieMetadata)
.setMediaTracks(mediaTracks).build();
然后在我的应用中启动伴随库附带的 CastControllerActivity:
mCastManager.startCastControllerActivity(this, mSelectedMedia, position, autoPlay);
完成此操作后,我设置了活动媒体轨道(在我的情况下只有一个)和文本轨道样式:
long [] activeTracks = new long[1];
activeTracks[0] = 0l;
mCastManager.getRemoteMediaPlayer()
.setActiveMediaTracks(mCastManager.getGoogleApiClient(), activeTracks)
.setResultCallback(new MediaResultCallback());
mCastManager.getRemoteMediaPlayer().setTextTrackStyle(
mCastManager.getGoogleApiClient(),
TextTrackStyle.fromSystemSettings(getBaseContext()));
播放包含字幕的剪辑时,控制台会显示以下内容:
[775.223s] [cast.receiver.MediaManager] Too many track IDs cast_receiver.js:18
[775.232s] [cast.receiver.MediaManager] Invalid track IDs cast_receiver.js:18
[775.238s] [cast.receiver.MediaManager] Sending error: INVALID_REQUEST INVALID_PARAMS
并且返回的 ResultCallback 中的状态代码是 SERVICE_MISSING - 即使我在开发时使用的两台 Android 4.4 设备上都安装了 Google Play Services 5.0.89。字幕使用 CORS 标头托管。
有什么想法或建议吗?
【问题讨论】:
标签: android chromecast