Android 将mediacodec与createInputSurface一起使用时强制i帧

Android 将mediacodec与createInputSurface一起使用时强制i帧,android,android-mediacodec,Android,Android Mediacodec,当使用曲面作为输入时,是否可能触发编码器发送i帧? 我知道在对输入缓冲区排队时这是可能的,但在使用createInputSurface时,我没有找到这样做的方法。您不能在缓冲区上设置标志。这也会影响流的BUFFER\u FLAG\u END\u,但为此您有signalEndOfInputStream()调用 I帧将每隔关键帧速率*关键帧间隔发送一次。(我不知道这有多牢固——我怀疑它们在实践中可能或多或少会出现。)这不是参数“关键”请求“同步”框架吗?API 19中添加了setParameters

当使用曲面作为输入时,是否可能触发编码器发送i帧?
我知道在对输入缓冲区排队时这是可能的,但在使用createInputSurface时,我没有找到这样做的方法。

您不能在缓冲区上设置标志。这也会影响流的
BUFFER\u FLAG\u END\u
,但为此您有
signalEndOfInputStream()
调用


I帧将每隔
关键帧速率*关键帧间隔发送一次。(我不知道这有多牢固——我怀疑它们在实践中可能或多或少会出现。)

这不是参数“关键”请求“同步”框架吗?API 19中添加了
setParameters()
API,因此曲面输入(在API 18中添加)的任何地方都不可用。API只说它将“很快”发送同步帧,因此您实际上无法完全控制哪些帧是I帧。