android - MediaCodec API android 中的 timeoutUs

标签 android codec android-mediacodec

我在我的一个应用程序中使用 MediaCodec API。我使用了 bigflake 的代码,应用程序运行得很好。但是我仍然无法理解函数 dequeueInputBuffer() 和函数 dequeueOutputBuffer() 中的参数 timeoutUs 即使在阅读了它在 API 引用中。 如果有人能很好地解释这个参数的使用和效果,那就太好了。并且在上述两个函数调用中它应该相同吗?

最佳答案

好吧,主要思想是在内部,MediaCodec 层组件工作是异步的。因此,当您调用 dequeueInputBuffer()dequeueOutputBuffer() 时,调用线程并未完成任何实际工作,只是在选定的超时期间检查内部组件状态,直到响应准备好或超时发生。 根据我的经验,即使缓冲区分配也是异步的,所以如果没有内部缓冲区准备好出队……小的超时可能会导致 INFO_TRY_AGAIN_LATER。但主要是用于解码\编码。您提交输入帧以通过非阻塞调用进行处理,处理发生在另一个线程中,您还使用非阻塞调用检查输出帧准备情况。所以所有的管道都不会为每一个繁重的(解码\编码\等)操作而休眠,并且可以执行其他操作

关于android - MediaCodec API android 中的 timeoutUs,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25067244/

相关文章:

Android 支持的编解码器意味着软件编解码器?

android - Android MediaCodec dequeueOutputBuffer 返回 -1 是什么意思?

android - EncodeDecodeMux - 三星设备 - 在 S6 Edge 和 S5 上测试

java - 将Android源码导入ADT(Eclipse)报错

c# - X264 捕获视频时出现错误消息

python - 使用 Python 编解码器会导致 sys.stdin 的 readline 问题?

Android:使用 MediaCodec 编码音频和视频

java - 打印重音 (UTF-8) Zebra cpcl Java/Android

android - Flutter 图像缓存 : Images are reloading

android - 如何获得android中两个位置之间的直线距离?