在 Styled Media Receiver 上显示字幕 Google Cast with communication messages

Show subtitles on the Styled Media Receiver Google Cast with communication messages

我正在尝试在 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

但是自定义数据没有做任何事情。

我发现的所有 Whosebug 问题都来自 2014 年。从那时起,应该可以通过 3 种文件格式使用 ClosedCaptions 或字幕:WebVTT、TTML 和 CEA-608。

此文档用于 play/pause/stop 实施:

我已经看到的 Stackoveflow 问题:

我没有这方面的经验,但你可以看看 this repo。它使用 cpp 来做类似的事情,并提供了一种构建有效载荷的方法,包括 text/vtt 和 link 作为字幕。 所以你可以用更多数据扩展轨道对象

    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";