我正在使用MediaRecorder API一段时间,我以为所有的问题都已经过去了,但我想我错了。
我正在使用MediaRecorder API将视频记录到文件中。当我使用高质量的setProfile时,我得到了很好的质量,但是当我尝试手动设置参数时(如下面的代码所示),质量就很差(因为由于某种原因,比特率被裁剪了)。我想要720便士和1 1fps。
我一直收到以下警告: WARN/AuthorDriver(268):视频编码比特率设置为480000 bps
我正在运行的代码:
m_MediaRecorder.setVideoSource(MediaRecorder.VideoSource.CAMERA);
m_MediaRecorder.setOutputFormat(MediaRecorder.OutputFormat.MPEG_4);
m_MediaRecorder.setVideoSize(1280, 720);
m_MediaRecorder.setVideoEncoder(MediaRecorder.VideoEncoder.H264);
m_MediaRecorder.setVideoFrameRate(1);
m_MediaRecorder.setVideoEncodingBitRate(8000000);
有什么想法吗?非常感谢。
发布于 2011-07-18 10:34:07
但是发现solution...very很奇怪。在设置压缩类型之前设置比特率解决了这个问题.唯一的问题是它是谷歌代码中的一个bug,还是其他一些我不明白的东西。
原件:
m_MediaRecorder.setVideoEncoder(MediaRecorder.VideoEncoder.H264);
m_MediaRecorder.setVideoFrameRate(1);
m_MediaRecorder.setVideoEncodingBitRate(8000000);
解决方案:
m_MediaRecorder.setVideoEncodingBitRate(8000000);
m_MediaRecorder.setVideoEncoder(MediaRecorder.VideoEncoder.H264);
m_MediaRecorder.setVideoFrameRate(1);
发布于 2011-07-17 17:55:04
setVideoEncodingBitRate()文档说:
设置用于记录的视频编码比特率。在准备()之前调用此方法。Prepare()可以对参数执行额外的检查,以确定指定的比特率是否适用,有时传递的bitRate将在内部被裁剪,以确保基于平台的功能能够顺利地进行视频记录。
由于MediaRecorder API处理的是某种类型的硬件编码芯片,这与设备不同,所以它不能总是给出您所要求的编解码器、帧大小、帧速率和编码比特率的每个组合。
您的需求有点不寻常,因为您正在尝试记录1 fps。如果您正在为蜂窝开发应用程序,则有用于MediaRecorder的“时间差”API和一个可能有用的打电话。
https://stackoverflow.com/questions/6725258
复制相似问题