因此,我整理了一个示例项目https://github.com/liuxuan30/TestH264.git,该项目使用VideoToolBox具有H264示例解码器来显示从摄像机捕获的流文件。
使用VideoToolBox的H264解码器是从互联网复制的,我没有写它,当我尝试播放h264流文件时,与ffmpeg或ffplay相比,它们播放得太快了,后者都以正常速度播放。
我想问一下,如何解决此问题?谢谢。
答案 0 :(得分:0)
发生这种情况是由于此常数kCMSampleAttachmentKey_DisplayImmediately
:
如果存在此键,则应尽快显示样本,而不是
根据其演示时间戳记。在运行时使用此附件来请求此
显示管道(例如AVSampleBufferDisplayLayer类)中的行为。
该附件未写入媒体文件。 from Apple documation
因此,您有两个显示选项:
立即显示-当您需要尽快显示帧时,这可能对实时流很有用
在特定时间戳显示帧
*与ffmpeg或ffplay相比,两者均以正常速度播放。
ffplay和ffmpeg此时可能使用时间戳。
我从测试的H.264文件中得到的结果与您相同,但是发生这种情况的原因是,您一次获得了所有解码的帧,因此解码器会立即显示它。
您可以观看此视频,以获取有关VideoToolbox
框架的更多信息:
Direct Access to Video Encoding and Decoding