Android Mediacodec用于在线视频编码
我能够实现一个基于grafika的CameraCaptureActivity录制视频的代码。现在我可以记录自己从1数到10,但当我去看录制的视频时,我说的是1,3,8,9,也就是说我错过了一些要录制的帧。曲面已配置为:Android Mediacodec用于在线视频编码,android,android-mediacodec,mediamuxer,Android,Android Mediacodec,Mediamuxer,我能够实现一个基于grafika的CameraCaptureActivity录制视频的代码。现在我可以记录自己从1数到10,但当我去看录制的视频时,我说的是1,3,8,9,也就是说我错过了一些要录制的帧。曲面已配置为: private static int VIDEO_WIDTH = 720; // dimensions for 720p video private static int VIDEO_HEIGHT = 1280; private static int DESIRED_PREVI
private static int VIDEO_WIDTH = 720; // dimensions for 720p video
private static int VIDEO_HEIGHT = 1280;
private static int DESIRED_PREVIEW_FPS = 30;
还有编码器
format.SetInteger(MediaFormat.KeyColorFormat, (int)MediaCodecCapabilities.Formatsurface);
format.SetInteger(MediaFormat.KeyBitRate, 100000);
format.SetInteger(MediaFormat.KeyFrameRate, 30);
format.SetInteger(MediaFormat.KeyIFrameInterval, 5);
宽度:310,高度:310
我的问题是比特率吗?我应该设置哪些值,以便接收编码器记录的我显示的每个帧?
谢谢。我见过MediaMuxer在向磁盘写入数据时暂停1秒以上,但通常不会以较低的比特率(Grafika使用的1Mbps比特率应该可以),而且它们通常相隔几秒。所以我不确定这是否是你面临的问题 这里有一篇关于MediaMuxer问题的博文:。简而言之,MediaMuxer写入暂停,因此没有帧从MediaCodec编码器中拉出。最终,MediaCodec耗尽缓冲区,无法再接收任何输入,因此相机开始丢弃帧 用标签包装MediaMuxer调用将有助于缩小范围。我们的想法是将编码设置中所有“有趣”的调用括在
beginstation()
/endSection()
调用中,并使用--app
标记()收集systrace输出。查看systrace输出将向您显示每个函数需要多长时间,显示每个函数运行在哪些线程上,并帮助您确定调用阻塞和其他线程不足的区域
完全有可能发生了其他事情,但这是一个很好的开始。我看到MediaMuxer在向磁盘写入数据时暂停了1秒以上,但通常不会以较低的比特率(Grafika使用的1Mbps比特率应该可以),而且它们通常相隔几秒。所以我不确定这是否是你面临的问题 这里有一篇关于MediaMuxer问题的博文:。简而言之,MediaMuxer写入暂停,因此没有帧从MediaCodec编码器中拉出。最终,MediaCodec耗尽缓冲区,无法再接收任何输入,因此相机开始丢弃帧 用标签包装MediaMuxer调用将有助于缩小范围。我们的想法是将编码设置中所有“有趣”的调用括在
beginstation()
/endSection()
调用中,并使用--app
标记()收集systrace输出。查看systrace输出将向您显示每个函数需要多长时间,显示每个函数运行在哪些线程上,并帮助您确定调用阻塞和其他线程不足的区域
完全有可能发生了其他事情,但这是一个很好的开始。文章不错。我来看看!谢谢法登!好文章。我来看看!谢谢法登!