默认接收器上的 Chromecast WebVTT 字幕
Posted
技术标签:
【中文标题】默认接收器上的 Chromecast WebVTT 字幕【英文标题】:Chromecast WebVTT captions on a default receiver 【发布时间】:2018-11-27 22:12:54 【问题描述】:所以我正在尝试使用默认的 chrome 发送器应用程序为 chromecast 设置隐藏式字幕,根据文档,这应该是可能的,as seen here。 我不知道为什么我的代码不起作用。它与提供的示例代码几乎相同。 snipper 可能不起作用,因为它太沙盒了,在普通的 html 页面中查看它: Click! 首先应该使用顶部按钮连接他们的 chromecast,然后点击“加载视频”。
我的代码:
var suburl = 'https://cors-anywhere.herokuapp.com/brenopolanski.com/html5-video-webvtt-example/MIB2-subtitles-pt-BR.vtt';
var mediaurl = 'https://cors-anywhere.herokuapp.com/www.w3schools.com/html/mov_bbb.mp4';
var mediaInfo;
window['__onGCastApiAvailable'] = function(isAvailable)
if (isAvailable)
initializeCastApi();
;
initializeCastApi = function()
cast.framework.CastContext.getInstance().setOptions(
receiverApplicationId:
chrome.cast.media.DEFAULT_MEDIA_RECEIVER_APP_ID
);
var englishSubtitle = new chrome.cast.media.Track(1, // track ID
chrome.cast.media.TrackType.TEXT);
englishSubtitle.trackContentId = suburl;
englishSubtitle.trackContentType = 'text/vtt';
englishSubtitle.subtype = chrome.cast.media.TextTrackType.SUBTITLES;
englishSubtitle.name = 'English Subtitles';
englishSubtitle.language = 'en-US';
englishSubtitle.customData = null;
mediaInfo = new chrome.cast.media.MediaInfo(mediaurl);
var textTrackStyle = new chrome.cast.media.TextTrackStyle();
textTrackStyle.foregroundColor = '#80FF0000';
mediaInfo.contentType = 'video/mp4';
mediaInfo.metadata = new chrome.cast.media.GenericMediaMetadata();
mediaInfo.customData = null;
mediaInfo.streamType = chrome.cast.media.StreamType.BUFFERED;
mediaInfo.textTrackStyle = textTrackStyle
mediaInfo.duration = null;
mediaInfo.tracks = [englishSubtitle];
mediaInfo.activeTrackIds = [1];
;
function loadVideo()
var castSession = cast.framework.CastContext.getInstance().getCurrentSession();
var request = new chrome.cast.media.LoadRequest(mediaInfo);
castSession.loadMedia(request).then(
function() console.log('Load succeed'); ,
function(errorCode) console.log('Error code: ' + errorCode); );
.cast-button, .load-button
max-width: 50px;
max-height: 50px;
<!DOCTYPE html>
<html>
<head>
<title>Sample chromcast</title>
</head>
<body>
<div class="cast-button">
<google-cast-launcher></google-cast-launcher>
</div>
<button class="load-button" onclick="loadVideo()"> Load video </button>
<script src="https://www.gstatic.com/cv/js/sender/v1/cast_sender.js?loadCastFramework=1"></script>
</body>
</html>
【问题讨论】:
【参考方案1】:经过大量搜索,我仍然无法确定确切的问题。然而,我偶然发现了这个支持字幕的 ChromeCast SDK 的惊人包装器:https://github.com/Fenny/ChromecastJS/
包括这个演示:https://fenny.github.io/ChromecastJS/demo/index.html
希望这可以帮助别人!
【讨论】:
适用于一个简单的场景:来自保存服务器的文件;每个源上的 CORS 标头。字幕位于单独的 WebVTT 流中。不做任何超出此范围所需的非常繁重的工作。以上是关于默认接收器上的 Chromecast WebVTT 字幕的主要内容,如果未能解决你的问题,请参考以下文章
Chromecast 上的 YouTube iframe api 行为