我有一个只有视频和单独音轨的 MP4 URL。我可以通过更改"主流"流 URL 和相应的内容类型来播放其中一个,但我想要两者,而不是一个或另一个。
在(愚蠢的视频(有一个核心网址 https://v.redd.it/3hyw7hwoajn21/DASHPlaylist.mpd
您只能获取带有音频的MP4视频 https://v.redd.it/3hyw7hwoajn21/DASH_720 其相应的音轨为 https://v.redd.it/3hyw7hwoajn21/audio
如果我使用 iOS SDK 播放 MP4,它可以正常工作,但没有音频:
let url = URL(string: "https://v.redd.it/3hyw7hwoajn21/DASH_720")!
let mediaInfoBuilder = GCKMediaInformationBuilder(contentURL: url)
mediaInfoBuilder.contentID = url.absoluteString
mediaInfoBuilder.streamType = .buffered
mediaInfoBuilder.streamDuration = TimeInterval(75)
mediaInfoBuilder.contentType = "video/mp4"
mediaInfoBuilder.metadata = metadata
let mediaInfo = mediaInfoBuilder.build()
所以我尝试在调用build()
之前添加音轨,尝试遵循此处的文档:
mediaInfoBuilder.mediaTracks = [GCKMediaTrack(identifier: 98911, contentIdentifier: nil, contentType: "audio/mp4", type: GCKMediaTrackType.audio, textSubtype: GCKMediaTextTrackSubtype.unknown, name: "Fun time fun", languageCode: "en", customData: nil)]
但结果是一样的:没有音频。
我做错了吗?
音频和视频流必须位于同一清单中,我们才能支持它,否则 SDK 不支持此功能。一般来说,ChromeCast的硬件仅限于允许一个mediaElement。一些应用程序设法在阅读书籍时添加声音效果,这可能使用 WebAudio,但这完全在应用程序中完成。