Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/204.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
YouTube Android API seekToMillis()工作不准确_Android_Android Youtube Api - Fatal编程技术网

YouTube Android API seekToMillis()工作不准确

YouTube Android API seekToMillis()工作不准确,android,android-youtube-api,Android,Android Youtube Api,使用youtubeplyer.seekToMillis()函数时,搜索延迟为2秒。不完全是2秒,但大致如此。例如,如果您尝试查找10000毫秒到12000毫秒之间的任何位置(例如:11000 11500 11550)。视频将从10000本身开始。如果您给出的值介于12000和14000之间,则会转到12000点。。等等 我们正在开发一个应用程序,YouTube必须从指定的准确时间开始。因此,这个功能对我们来说非常重要 youtubePlayer.seekToMillis(10000); yout

使用
youtubeplyer.seekToMillis()
函数时,搜索延迟为2秒。不完全是2秒,但大致如此。例如,如果您尝试查找10000毫秒到12000毫秒之间的任何位置(例如:11000 11500 11550)。视频将从10000本身开始。如果您给出的值介于12000和14000之间,则会转到12000点。。等等

我们正在开发一个应用程序,YouTube必须从指定的准确时间开始。因此,这个功能对我们来说非常重要

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

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

这不是bug,这是可查找压缩视频文件的标准行为

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

  • 完整帧:包含特定时间的完整真实帧(如完整JPEG图像)
  • 部分帧只是相对于前一帧的一组差异,通常表示为运动矢量
原始视频序列:

F F F F F F F F F F F F F F F F F F F。。。(eof)

压缩视频序列:

飞碟飞碟飞碟飞碟飞碟飞碟飞碟飞碟飞碟飞碟飞碟飞碟飞碟飞碟飞碟飞碟飞碟飞碟飞碟飞碟飞碟飞碟飞碟飞碟飞碟飞碟飞碟飞碟。。。(eof)

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

这正是你正在经历的问题:你正在寻找 映射到局部帧上的特定时间,因此需要返回 到最近的完整帧,然后从那里开始播放

在像YouTube这样的散播环境中,这个问题甚至更难解决,因为使用快速前进的方法来欺骗这个限制


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

我想这就是YouTube本身的特点,你无法改变。是的。但youtube开发者不可能漏掉一个如此明显的bug。我想应该有办法解决这个问题。如果我从YouTube上获取高质量的视频,而不是低质量的视频(这是我现在没有做的),这个问题还会持续吗?或者说还有其他办法吗?@HarishMohanan我不确定YouTube是如何处理各种格式的视频的,但我可以假设低质量的版本可能比高质量的版本具有更少的关键帧。你可以试试;)