【问题标题】:AVSampleBufferDisplayLayer plays too fastAVSampleBufferDisplayLayer 播放太快
【发布时间】:2020-04-14 13:31:47
【问题描述】:

所以我整理了一个示例项目https://github.com/liuxuan30/TestH264.git,它使用 VideoToolBox 有一个 H264 示例解码器来显示从相机捕获的流文件。

使用VideoToolBox的H264解码器是从网上复制的,不是我写的,当我尝试播放我的h264流文件时,它播放速度太快,与ffmpeg或ffplay相比,两者都以正常速度播放。

我想问一下,如何解决这种行为?谢谢。

【问题讨论】:

    标签: ios macos video-toolbox core-media


    【解决方案1】:

    这是因为这个常量kCMSampleAttachmentKey_DisplayImmediately

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

    所以你有两种显示方式:

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

    2. 在特定时间戳显示帧

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

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

    我的测试 H.264 文件的结果与您相同,但这是因为您一次获得所有解码帧,因此解码器会立即显示它。

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2012-07-17
      • 1970-01-01
      • 1970-01-01
      • 2012-10-07
      • 2014-06-08
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多