问题描述
我正在尝试在 Chromecast 上启动一个 mp4 流,该流也显示字幕(vtt 文件)
我看到它被添加到本机库中。但是我找不到用于将其发送到接收器应用程序的有效负载消息。我没有使用 android 和 iOS 的本机库,而是使用负载消息而不是本机库的 Flutter 版本。 -> https://github.com/jonathantribouharet/flutter_cast
这是我已经尝试过的。
{
'type': 'LOAD','autoplay': true,'currentTime': currentTime,'media': {
'contentId': url,'contentType': 'video/mp4','streamType': 'BUFFERED','Metadata': {
'type': 0,'MetadataType': 0,'title': title,'images': [
{
'url': posterUrl,}
],},'customData': {
'cc': {
'tracks': [
{'src': 'https://gist.githubusercontent.com/samdutton/ca37f3adaf4e23679957b8083e061177/raw/e19399fbccbc069a2af4266e5120ae6bad62699a/sample.vtt'},],'active': 0
},}
这是我的完整应用程序: https://github.com/vanlooverenkoen/flutter_cast_ui/tree/feature/cast-ui
但是自定义数据没有做任何事情。
我发现的所有 StackOverflow 问题都来自 2014 年。从那时起,应该可以通过 3 种文件格式使用 ClosedCaptions 或字幕:WebVTT、TTML 和 CEA-608。
- https://developers.google.com/cast/docs/web_receiver/tracks#closed_captions_subtitles
- https://developers.google.com/cast/docs/media#subtitles_and_closed_captions
本文档用于播放/暂停/停止实现:
- https://developers.google.com/cast/docs/reference/messages
- https://docs.rs/crate/gcast/0.1.5/source/PROTOCOL.md
我已经见过的 Stackoveflow 问题:
- Styled media receiver source (Chromecast)
- Google Cast - Subtitles with the Styled Media Receiver?
- Cast Receiver App does not show subtitles
解决方法
我没有这方面的经验,但您可以查看 this repo。它使用 cpp 来做类似的事情,并提供了一种构建有效负载的方法,包括带有字幕链接的 text/vtt。 所以你可以用更多的数据扩展轨道对象
msg["media"]["tracks"][0]["language"] = "en-US";
msg["media"]["tracks"][0]["name"] = "English";
msg["media"]["tracks"][0]["type"] = "TEXT";
msg["media"]["tracks"][0]["subtype"] = "SUBTITLES";
msg["media"]["tracks"][0]["trackId"] = 1;
msg["media"]["tracks"][0]["trackContentId"] = yourSubtitleUrl;
msg["media"]["tracks"][0]["trackContentType"] = "text/vtt";