gpt4 book ai didi

ios - AVPlayer 断断续续的播放,只有在使用 AVMutableComposition 时才会出现不良的网络行为

转载 作者:行者123 更新时间:2023-11-28 13:33:09 29 4
gpt4 key购买 nike

概览

我正在使用 AVPlayer 在我的应用中播放远程视频。我们有 .mp4 视频 Assets 和 .vtt 格式的独立字幕 Assets ,以在 CDN 上生存。我们目前没有使用 HLS 播放列表容器的选项。

为了播放视频和字幕,我们使用 AVMutableComposition 和视频和音频轨道 AVURLAsset 实例在 AVPlayer 中同时播放项目。这在这个苹果开发论坛中有解释 post .下面是一些简单的例子。

事实证明,当使用 AVMutableComposition 时,无论我们是否向其添加字幕轨道,我们都会看到很多请求视频文件的 ~64k block ,因为 AVPlayer 请求顺序字节范围。在高延迟环境或高比特率视频中,播放会断断续续,因为接收 block 的速度不够快,无法跟上播放速度,体验很糟糕。如果我们不将它作为轨道添加到 AVMutableComposition 而是直接播放,我们可以从相同的 url 播放相同的视频。如下图所示。

关于加载视频的网络行为的文章很少,但它 appears block 大小选择发生在 CoreMedia 框架中。

有没有办法控制这种网络行为?是否有一些我不知道的解决方法可以在涉及字幕时欺骗玩家正常加载 Assets ?它导致糟糕的用户体验?这是 CoreMedia 框架中的错误吗?

示例

示例 1 - 查看视频,仅使用带有视频 url 的 AVURLAsset

let player = AVPlayer()
let asset = AVURLAsset(url: videoURL)
let playerItem = AVPlayerItem(asset: asset)
player.replaceCurrentItem(item: playerItem)
player.play()

我们看到 CoreMedia 请求的 block 越来越少,播放也很流畅。

example 1 web trace

示例 2 - 查看同一视频,将其添加为 AVMutableComposition 播放器项目上的轨道。

let player = AVPlayer()
let videoAsset = AVURLAsset(url: videoURL)
let subtitleAsset = AVURLAsset(url: subtitleURL)
let composition = AVMutableComposition()

// add video to the mutable composition
composition.insertTimeRange(
CMTimeRangeMake(start: CMTime.zero, duration: videoAsset.duration),
of: videoAsset,
at: CMTime.zero)

/* not shown. adding subtitle track, since it produces same result */

let playerItem = AVPlayerItem(asset: composition)
player.replaceCurrentItem(item: playerItem)
player.play()

CoreMedia 请求了许多小视频 block ,播放时断断续续。

example 2 web trace

这似乎是 Core Media 框架中的一个错误。有什么方法可以影响视频流的渐进式下载字节范围请求大小吗?

有没有其他人看到这个问题并找到解决方法?

我只想同时播放 .mp4 和 .vtt Assets ,而不会出现疯狂的网络性能问题!我们目前无法轻松切换视频/字幕 Assets 设置。

已经尝试过 - 不起作用- 在实例化 AVAsset 之前使用 copy() 将 AVMutableCompositionItem 转换为 AVCompositionItem

最佳答案

提交了 radar就此直接联系了 Apple。这是我从他们的一位工程师那里听到的:

AVMutableComposition is, at least as of today, not optimized for remote file playback. A workaround could be to multiplex the subtitle in the main movie file as a tx3g track and store the file in the server.

事实证明,使用 AVMutableComposition 时不支持远程文件播放的网络优化。

关于ios - AVPlayer 断断续续的播放,只有在使用 AVMutableComposition 时才会出现不良的网络行为,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57062973/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com