AVSampleBufferDisplayLayer播放速度太快

时间:2019-12-23 08:40:13

标签: ios macos video-toolbox core-media

因此,我整理了一个示例项目https://github.com/liuxuan30/TestH264.git,该项目使用VideoToolBox具有H264示例解码器来显示从摄像机捕获的流文件。

使用VideoToolBox的H264解码器是从互联网复制的,我没有写它,当我尝试播放h264流文件时,与ffmpeg或ffplay相比,它们播放得太快了,后者都以正常速度播放。

我想问一下,如何解决此问题?谢谢。

1 个答案:

答案 0 :(得分:0)

发生这种情况是由于此常数kCMSampleAttachmentKey_DisplayImmediately

如果存在此键,则应尽快显示样本,而不是
根据其演示时间戳记。在运行时使用此附件来请求此
显示管道(例如AVSampleBufferDisplayLayer类)中的行为。
该附件未写入媒体文件。 from Apple documation

因此,您有两个显示选项:

  1. 立即显示-当您需要尽快显示帧时,这可能对实时流很有用

  2. 在特定时间戳显示帧

*与ffmpeg或ffplay相比,两者均以正常速度播放。

ffplay和ffmpeg此时可能使用时间戳。

我从测试的H.264文件中得到的结果与您相同,但是发生这种情况的原因是,您一次获得了所有解码的帧,因此解码器会立即显示它。

您可以观看此视频,以获取有关VideoToolbox框架的更多信息: Direct Access to Video Encoding and Decoding