处理基于网络的发件人中的 Chromecast 加载错误
Handling Chromecast load errors in web-based sender
基于网络的 Chromecast 发送器的文档说 castSession.loadMedia()
returns 一个承诺。因此,我应该能够像这样在异步函数中捕获错误:
const castSession = cast.framework.CastContext.getInstance().getCurrentSession();
const mediaInfo = new chrome.cast.media.MediaInfo(
'https://example.com/stream.m3u8',
'application/vnd.apple.mpegurl'
);
const loadRequest = new chrome.cast.media.LoadRequest(mediaInfo);
try {
await castSession.getSessionObj().loadMedia(loadRequest);
} catch(e) {
console.error(e);
}
不幸的是,这不起作用。无论我遇到什么加载错误,似乎都会在下载 HLS 清单和播放之前的某个时间发生。 loadMedia()
promise 成功解决,因此没有要捕获的错误。发件人的开发者控制台出现错误:
cast_sender.js:85 Uncaught TypeError: d is not a function
at cast_sender.js:85
at V.onMessage (cast_sender.js:91)
at S.h (cast_sender.js:71)
(anonymous) @ cast_sender.js:85
V.onMessage @ cast_sender.js:91
S.h @ cast_sender.js:71
显然,某种错误正在返回给客户端,似乎应该有一些未设置的事件处理程序,但我没有看到任何有关如何捕获错误的文档。
如何捕获媒体加载错误、一般媒体错误以及 Chromecast 发送器上的任何其他错误?
chrome.cast.Session
和cast.framework.CastSession
是不同的。 CastSession
方法 returns 承诺,Session
对象与回调一起工作。调用session.loadMedia()
时缺少回调导致的错误
在您的情况下,您必须检查 chrome.cast.Session
对象的文档以进行进一步操作,或者通过从 CastSession
对象直接调用 loadMedia 来继续您的工作:
选项 1:继续使用 CastSession
对象:
try {
await castSession.loadMedia(loadRequest);
} catch(e) {
console.error(e);
}
选项 2:使用 Session
对象
try {
const sessionObj = await castSession.getSessionObj();
await (new Promise((res) => {
sessionObj.loadMedia(loadRequest, res);
}));
} catch(e) {
console.error(e);
}
更多信息:
https://developers.google.com/cast/docs/reference/chrome/cast.framework.CastSession
https://developers.google.com/cast/docs/reference/chrome/chrome.cast.Session
基于网络的 Chromecast 发送器的文档说 castSession.loadMedia()
returns 一个承诺。因此,我应该能够像这样在异步函数中捕获错误:
const castSession = cast.framework.CastContext.getInstance().getCurrentSession();
const mediaInfo = new chrome.cast.media.MediaInfo(
'https://example.com/stream.m3u8',
'application/vnd.apple.mpegurl'
);
const loadRequest = new chrome.cast.media.LoadRequest(mediaInfo);
try {
await castSession.getSessionObj().loadMedia(loadRequest);
} catch(e) {
console.error(e);
}
不幸的是,这不起作用。无论我遇到什么加载错误,似乎都会在下载 HLS 清单和播放之前的某个时间发生。 loadMedia()
promise 成功解决,因此没有要捕获的错误。发件人的开发者控制台出现错误:
cast_sender.js:85 Uncaught TypeError: d is not a function
at cast_sender.js:85
at V.onMessage (cast_sender.js:91)
at S.h (cast_sender.js:71)
(anonymous) @ cast_sender.js:85
V.onMessage @ cast_sender.js:91
S.h @ cast_sender.js:71
显然,某种错误正在返回给客户端,似乎应该有一些未设置的事件处理程序,但我没有看到任何有关如何捕获错误的文档。
如何捕获媒体加载错误、一般媒体错误以及 Chromecast 发送器上的任何其他错误?
chrome.cast.Session
和cast.framework.CastSession
是不同的。 CastSession
方法 returns 承诺,Session
对象与回调一起工作。调用session.loadMedia()
在您的情况下,您必须检查 chrome.cast.Session
对象的文档以进行进一步操作,或者通过从 CastSession
对象直接调用 loadMedia 来继续您的工作:
选项 1:继续使用 CastSession
对象:
try {
await castSession.loadMedia(loadRequest);
} catch(e) {
console.error(e);
}
选项 2:使用 Session
对象
try {
const sessionObj = await castSession.getSessionObj();
await (new Promise((res) => {
sessionObj.loadMedia(loadRequest, res);
}));
} catch(e) {
console.error(e);
}
更多信息:
https://developers.google.com/cast/docs/reference/chrome/cast.framework.CastSession https://developers.google.com/cast/docs/reference/chrome/chrome.cast.Session