目前,我在Chromecast上面临一个与交替音轨和文本音轨管理有关的问题。
我试图用相同的语言来区分媒体轨道(音频和文本),但是角色不同。根据Cast的文档,我们可以通过roles属性来确定这一点:main和alternate、subtitle和caption。
但是,当使用多个媒体轨道加载HLS清单时,roles属性总是以未定义的形式返回,因此我们无法确定音频轨道的角色是主的还是备用的,也不能确定文本轨道的角色是字幕还是标题。加载破折号时不会发生此错误。
在HLS媒体中,是否有其他方法来识别音频轨道的角色是主要的还是替代的?在此之后,是否还有其他方法来识别HLS媒体中的文本轨道是字幕还是标题?
我已经创建了一个与这个问题相关的谷歌的IssueTracker杂志,但是我还没有收到任何关于这个问题的返回。
下面是这个问题的一个例子。所使用的清单有两个音频轨道,一个main和另一个alternate,以及两个文本轨道,一个是subtitle,另一个是caption。清单与HTTP Live流媒体第二版一致。
HLS
清单
#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"音轨
# 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"
}
}文本轨迹
# 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"
}
}破折号
音轨
# 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"
}
}文本轨迹
# 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"
}
}发布于 2022-08-01 07:27:20
是的一切都很好。请让我来投。我们试着享受这个show.please
https://stackoverflow.com/questions/72860255
复制相似问题