谷歌 Chromecast 字幕不起作用
Posted
技术标签:
【中文标题】谷歌 Chromecast 字幕不起作用【英文标题】:Google Chromecast subtitle not working 【发布时间】:2016-12-21 13:52:27 【问题描述】:我有这个代码
var englishSubtitle = new chrome.cast.media.Track(2,chrome.cast.media.TrackType.TEXT);
englishSubtitle.trackContentId = 'english.vtt';
englishSubtitle.trackContentType = 'text/vtt';
englishSubtitle.subtype = chrome.cast.media.TextTrackType.CAPTIONS;
englishSubtitle.name = 'English';
englishSubtitle.language = 'en-US';
englishSubtitle.customData = null;
var tracks = englishSubtitle;
var mediaInfo = new chrome.cast.media.MediaInfo(app.streamState_.manifest);
mediaInfo.contentType = app.streamState_.type;
mediaInfo.metadata = new chrome.cast.media.GenericMediaMetadata();
mediaInfo.customData = null;
mediaInfo.streamType = chrome.cast.media.StreamType.BUFFERED;
mediaInfo.textTrackStyle = new chrome.cast.media.TextTrackStyle();
mediaInfo.tracks = tracks;
mediaInfo.metadata.metadataType = chrome.cast.media.MetadataType.GENERIC;
var activeTrackIds = [2];
var request = new chrome.cast.media.LoadRequest(mediaInfo);
request.autoplay = true;
request.currentTime = 0;
request.activeTrackIds = activeTrackIds;
session.loadMedia(request,onMediaDiscovered.bind( this, 'loadedMedia'), onMediaError);
我想在 chromecast 上显示字幕。当我想在请求上设置 activeTracks 时,我收到一个错误 对象代码:“session_error”,描述:“INVALID_PARAMS”,详细信息:对象 由于该错误,它没有显示字幕,并且根本没有播放视频。 我做错了吗?
【问题讨论】:
Google cast 文档 => activeTrackIds Array of number 应该处于活动状态的 Track TrackIds 数组。如果未提供阵列,则默认轨道将处于活动状态。如果提供了两个不兼容的 trackId(例如两个活动的音轨),该命令将失败并显示 INVALID_PARAMETER。 (developers.google.com/cast/docs/reference/chrome/…) 我阅读了文档,但我无法理解我做错了什么。因为我发送了一个trackid,也就是text 教程中,字幕子类型为chrome.cast.media.TextTrackType.SUBTITLES
我也尝试了 SUBTITLES,但它不起作用
【参考方案1】:
tracks
设置时应该是一个数组
mediaInfo.tracks = tracks;
在你的情况下,你应该尝试
var tracks = [englishSubtitle];
如前所述,使用 SUBTITLES 而不是 CAPTIONS。最后确保您的网络服务器中存在 CORS 标头,即使您使用的是 mp4。
【讨论】:
【参考方案2】:tracks
应存储在数组中https://developers.google.com/cast/docs/reference/chrome/chrome.cast.media.MediaInfo#tracks
非空 chrome.cast.media.Track 数组
Track 对象数组。
mediaInfo.tracks = [englishSubtitle, frenchSubtitle, germanSubtitle]
我为 chromecast SDK 创建了一个简单的 javascript 包装器:https://github.com/Fenny/ChromecastJS
如果您偶然发现更多问题,可能值得一试,祝您好运!
【讨论】:
以上是关于谷歌 Chromecast 字幕不起作用的主要内容,如果未能解决你的问题,请参考以下文章
当我从控制器创建单独的类时,Chromecast 监听器不起作用
Android Chromecast:调用 messageStream.playFrom(position) 在 MediaProtocolCommand onCompleted 中不起作用