【发布时间】:2018-06-09 10:33:28
【问题描述】:
我正在制作一个使用视频工具箱解码 h264 流的 iOS 应用。我在 PC 上使用 ffmpeg 创建流,然后使用 RTP 将其发送到 iPhone。当我使用此命令创建它时,它运行良好:
ffmpeg -y -f:v rawvideo -c:v rawvideo -s 1280x720 -pix_fmt bgra -r 30 -an -i - -pix_fmt yuv420p -c:v libx264 -tune zerolatency -preset fast -b:v 5M -refs 1 -g 30 -profile:v high -level 4.1 -f rtp rtp://192.168.1.100:5678
iPhone 接收并显示所有帧。但是,当我启用内部刷新时
-intra-refresh 1
调用VTDecompressionSessionDecodeFrame() 时解码失败,错误代码为-12909(模拟器上为-8969)。
我负责处理 UDP 数据包以提取 NAL 单元,因此我对这个过程进行了三次检查,并丢弃了这部分代码的问题。
我没有找到任何关于 Video-toolbox 不支持帧内刷新的信息,所以问题是,Video-toolbox 是否支持帧内刷新?如果是这样,我是否在 ffmpeg 方面遗漏了一些东西,使视频工具箱不支持流?
除了使用 CMVideoFormatDescriptionCreateFromH264ParameterSets() 使用 SPS 和 PPS 数据创建它之外,我是否必须向 CMVideoFormatDescriptionRef 添加一些内容?
【问题讨论】:
标签: ios ffmpeg h.264 video-toolbox