首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Chromecast -如何区分主媒体和替代媒体与HLS媒体?

Chromecast -如何区分主媒体和替代媒体与HLS媒体?
EN

Stack Overflow用户
提问于 2022-07-04 17:30:13
回答 1查看 78关注 0票数 0

目前,我在Chromecast上面临一个与交替音轨和文本音轨管理有关的问题。

我试图用相同的语言来区分媒体轨道(音频和文本),但是角色不同。根据Cast的文档,我们可以通过roles属性来确定这一点:mainalternatesubtitlecaption

但是,当使用多个媒体轨道加载HLS清单时,roles属性总是以未定义的形式返回,因此我们无法确定音频轨道的角色是主的还是备用的,也不能确定文本轨道的角色是字幕还是标题。加载破折号时不会发生此错误。

在HLS媒体中,是否有其他方法来识别音频轨道的角色是主要的还是替代的?在此之后,是否还有其他方法来识别HLS媒体中的文本轨道是字幕还是标题?

我已经创建了一个与这个问题相关的谷歌的IssueTracker杂志,但是我还没有收到任何关于这个问题的返回。

下面是这个问题的一个例子。所使用的清单有两个音频轨道,一个main和另一个alternate,以及两个文本轨道,一个是subtitle,另一个是caption。清单与HTTP Live流媒体第二版一致。

HLS

清单

代码语言:javascript
复制
#EXTM3U
#EXT-X-VERSION:4
(version=1.11.14-26090)

# AUDIO groups
#EXT-X-MEDIA:TYPE=AUDIO,GROUP-ID="audio-aacl-128",LANGUAGE="pt",NAME="Portuguese",DEFAULT=YES,AUTOSELECT=YES,CHANNELS="2",URI="9645657-tst007-manifest-audio_por=128000.m3u8"
#EXT-X-MEDIA:TYPE=AUDIO,GROUP-ID="audio-aacl-128",LANGUAGE="pt",NAME="Portuguese (describes-video)",AUTOSELECT=YES,CHARACTERISTICS="public.accessibility.describes-video",CHANNELS="2",URI="9645657-tst007-manifest-audio_por_1=128000.m3u8"

# SUBTITLES groups
#EXT-X-MEDIA:TYPE=SUBTITLES,GROUP-ID="textstream",LANGUAGE="pt",NAME="Portuguese (caption)",DEFAULT=YES,AUTOSELECT=YES,CHARACTERISTICS="public.accessibility.describes-spoken-dialog,public.accessibility.describes-music-and-sound",URI="9645657-tst007-manifest-textstream_por=1000.m3u8"

# variants
#EXT-X-STREAM-INF:BANDWIDTH=1294000,CODECS="mp4a.40.2,avc1.64001F",RESOLUTION=854x480,AUDIO="audio-aacl-128",SUBTITLES="textstream",CLOSED-CAPTIONS=NONE
9645657-tst007-manifest-video_por=1097000.m3u8

# keyframes
#EXT-X-I-FRAME-STREAM-INF:BANDWIDTH=146000,CODECS="avc1.64001F",RESOLUTION=854x480,URI="keyframes/9645657-tst007-manifest-video_por=1097000.m3u8"

音轨

代码语言:javascript
复制
# Calling Receiver.playerManager.AudioTracksManager.getTracks()
{
  {
    assocLanguage:undefined,
    customData: undefined,
    forced: undefined,
    isInband: undefined,
    language: "pt",
    name: "Português"› 
    roles: undefined,
    subtype: undefined,
    trackContentId: undefined,
    trackContentType: "audio/mp4",
    trackId: 2,
    type: "AUDIO"
  },
  {
    assocLanguage: undefined,
    customData: undefined,
    forced: undefined,
    isInband: undefined,
    language: "pt",
    name: "Português"› 
    roles: undefined,
    subtype: undefined,
    trackContentId: undefined,
    trackContentType: "audio/mp4",
    trackId: 3,
    type: "AUDIO"
  }
}

文本轨迹

代码语言:javascript
复制
# Calling Receiver.playerManager.TextTracksManager.getTracks() 
{
  {
    assocLanguage: null,
    customData: undefined,
    forced: false,
    isInband: undefined,
    language: "pt",
    name: "Português"› 
    roles: undefined,
    subtype: undefined,
    trackContentId: undefined,
    trackContentType: "text/vtt",
    trackId: 4,
    type: "TEXT"
  },
  {
    assocLanguage: null,
    customData: undefined,
    forced: false,
    isInband: undefined,
    language: "pt",
    name: "Português"› 
    roles: undefined,
    subtype: undefined,
    trackContentId: undefined,
    trackContentType: "text/vtt",
    trackId: 5,
    type: "TEXT"
  }
}

破折号

音轨

代码语言:javascript
复制
# Calling Receiver.playerManager.AudioTracksManager.getTracks() 
{
  {
    assocLanguage:undefined,
    customData: undefined,
    forced: undefined,
    isInband: undefined,
    language: "pt",
    name: "Português"› 
    roles: ["alternate"],
    subtype: undefined,
    trackContentId: undefined,
    trackContentType: "mp4a.40.2",
    trackId: 1,
    type: "AUDIO"
  },
  {
    assocLanguage: undefined,
    customData: undefined,
    forced: undefined,
    isInband: undefined,
    language: "pt",
    name: "Português"› 
    roles: ["main"],
    subtype: undefined,
    trackContentId: undefined,
    trackContentType: "mp4a.40.2",
    trackId: 2,
    type: "AUDIO"
  }
}

文本轨迹

代码语言:javascript
复制
# When calling Receiver.playerManager.TextTracksManager.getTracks() 
{
  {
    assocLanguage:undefined,
    customData: undefined,
    forced: undefined,
    isInband: undefined,
    language: "pt",
    name: "Português"› 
    roles: ["subtitle"],
    subtype: "SUBTITLE",
    trackContentId: undefined,
    trackContentType: "application/mp4",
    trackId: 3,
    type: "TEXT"
  },
  {
    assocLanguage: undefined,
    customData: undefined,
    forced: undefined,
    isInband: undefined,
    language: "pt",
    name: "Português"› 
    roles: ["caption", "subtitle"],
    subtype: "SUBTITLE",
    trackContentId: undefined,
    trackContentType: "application/mp4",
    trackId: 4,
    type: "TEXT"
  }
}
EN

回答 1

Stack Overflow用户

发布于 2022-08-01 07:27:20

是的一切都很好。请让我来投。我们试着享受这个show.please

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/72860255

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档