问题描述
作为标题,我尝试使用 MediaCodec 它可以将流媒体视频加速到 x2 倍(最大)。 因此我在我的项目中添加了 FFMpeg API,它可以成功 x16 次,但我需要等待视频创建。
这是我编码的问题吗?? 我能做什么??非常感谢~~
mTimeAnimator.setTimeListener(new TimeAnimator.TimeListener() {
@Override
public void onTimeUpdate(final TimeAnimator animation,final long totalTime,final long deltaTime) {
boolean iSEOs = ((mExtractor.getSampleFlags() & MediaCodec
.BUFFER_FLAG_END_OF_STREAM) == MediaCodec.BUFFER_FLAG_END_OF_STREAM);
Log.e(TAG,"mExtractor.getSampleFlags() :" + mExtractor.getSampleFlags());
Log.e(TAG,"MediaCodec.BUFFER_FLAG_END_OF_STREAM :" + MediaCodec.BUFFER_FLAG_END_OF_STREAM);
// BEGIN_INCLUDE(write_sample)
if (!iSEOs) {
Log.e(TAG,"goto iSEOs = false");
// Try to submit the sample to the codec and if successful advance the
// extractor to the next available sample to read.
boolean result = mCodecWrapper.writeSample(mExtractor,false,mExtractor.getSampleTime(),mExtractor.getSampleFlags());
Log.e(TAG,"getSampleTime()" + mExtractor.getSampleTime());
Log.e(TAG,"result" + result);
if (result) {
mExtractor.advance();
}
}else
{
onPause();
return;
}
MediaCodec.BufferInfo out_bufferInfo = new MediaCodec.BufferInfo();
mCodecWrapper.peekSample(out_bufferInfo);
Log.i(TAG,"onTimeUpdate: out_bufferinfo: " + out_bufferInfo.size);
// BEGIN_INCLUDE(render_sample)
if (out_bufferInfo.size <= 0 && iSEOs) {
mTimeAnimator.end();
mCodecWrapper.stopAndRelease();
mExtractor.release();
} else if ((out_bufferInfo.presentationTimeUs) / (times * 1000) < totalTime) {
// Pop the sample off the queue and send it to {@link Surface}
mCodecWrapper.popSample(true);
}
// END_INCLUDE(render_sample)
}
});
mTimeAnimator.start();
***time var 表示我在那里传递值,例如:4、8 等 但我最多只能加速到 2
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)