Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/video/2.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
iOS:AVPlayerItem seekToTime不寻求请求的精确时间_Ios_Video_Avplayer_Avplayeritem - Fatal编程技术网

iOS:AVPlayerItem seekToTime不寻求请求的精确时间

iOS:AVPlayerItem seekToTime不寻求请求的精确时间,ios,video,avplayer,avplayeritem,Ios,Video,Avplayer,Avplayeritem,我正在开发一个通过HTTP传输视频的应用程序。AVPlayer用于播放视频。我使用AVPlayerItem和selectMediaOption方法在特定视频流之间切换(源中有三个流) 我的问题是,当我在我调用的媒体选项之间切换时,请参见“时间点:容差之前:容差之后:”,以将新视频跳过到与我切换的视频相同的时间点。问题是,这不能可靠地工作。即使AVPlayerItem currentTime属性报告我请求的时间,视频通常会跳到请求时间前几秒的某个点。我通过了KCMTIME0的前公差和后公差 另外值

我正在开发一个通过HTTP传输视频的应用程序。AVPlayer用于播放视频。我使用AVPlayerItem和selectMediaOption方法在特定视频流之间切换(源中有三个流)

我的问题是,当我在我调用的媒体选项之间切换时,请参见“时间点:容差之前:容差之后:”,以将新视频跳过到与我切换的视频相同的时间点。问题是,这不能可靠地工作。即使AVPlayerItem currentTime属性报告我请求的时间,视频通常会跳到请求时间前几秒的某个点。我通过了KCMTIME0的前公差和后公差

另外值得一提的是,这种情况只发生在一个特定的媒体流中。我有另一个媒体流没有显示这个问题


有人能提出这里可能存在的问题吗?

事实证明,这个问题与API或它们的使用方式无关。看起来用于创建视频片段的编码器在生成的文件中产生了错误

ffprobe报告的错误如下:

[h264 @ 00000249a4348980] decode_slice_header error
[h264 @ 00000249a4348980] no frame!
[h264 @ 00000249a4348980] non-existing PPS 0 referenced
我不确定最初用来创建我使用的视频片段的工具是什么,但我已经验证了苹果的mediafilesegmenter也会导致错误


我通过使用ffmpeg对片段进行编码解决了这个错误。

哪个编解码器用于对流进行编码?@sage444在mpeg ts容器中,两个流都使用h264进行视频编码,aac进行音频编码。但是,工作的流使用主配置文件,而不使用高配置文件。使用
AVPlayer
精确查找需要一些时间,这就是为什么可以指定公差。我已经有一段时间没有使用
AVPlayer
,但我相信如果指定
kCMTimeZero
作为公差,它将被忽略,因为跳到确切的时间会花费太长时间。我建议你尝试一些不同的公差,看看什么是最好的体验。@EmilioPelaez我实际上找到了一个修复方法,我将在回答中记录下来。