gpt4 book ai didi

android - YouTube Android APIeekToMillis() 无法正常工作

转载 作者:行者123 更新时间:2023-12-02 20:58:16 26 4
gpt4 key购买 nike

使用 youtubePlayer.seekToMillis() 函数时,存在 2 秒的查找延迟。不完全是2秒,但大致如此。就像您尝试寻找 10,000 毫秒到 12,000 毫秒之间的任何位置(例如:11,000 11,500, 11,550)一样。视频将从 10,000 本身开始。如果您给出的值在 12,000 到 14,000 之间,它将达到 12,000 点..依此类推...

我们正在开发一款应用,其中 YouTube 必须从指定的准确时间开始。所以这个功能对于我们来说是非常重要的。

youtubePlayer.seekToMillis(10000);
youtubePlayer.play();

请向我们提供一些提示,说明如何使用 YouTube 播放器从精确的开始时间(如果可能的话精确到毫秒)开始播放视频。

最佳答案

这不是错误,这是可搜索压缩视频文件的标准行为

简短且 super 简化的解释

压缩视频文件由一系列帧组成。帧有两种宏类型: 全帧 ( F) 和 部分帧 (p*):

  • 全帧:包含特定时间的完整真实帧(如完整的 JPEG 图像)
  • 部分帧只是与前一帧相关的一组差异,通常表示为运动向量。

原始视频序列:

F F F F F F F F F F F F F F F F F F ... (eof)

压缩视频序列:

F p p p p F p p p p F p p p p p F p p ... (eof)

像这样的压缩结构允许创建较小的文件(因为部分帧完整帧小),但也引入了一个愚蠢的问题:不可能直接从部分帧开始播放,因为为了正确解码,您需要上升直到第一个完整帧!

This is exactly the problem you are experiencing: you are seeking to a specific time which is mapped on a partial frame, so you need to go back to the nearest full frame and start the playback from there.

在像 YouTube 这样的流媒体环境中,问题甚至更加困难,因为 header 使用快进方法等来欺骗此限制。

如上所述,这是一个非常简单的解释。您可以找到更多信息here .

关于android - YouTube Android APIeekToMillis() 无法正常工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29317205/

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