如何解决将视频串流至 16 次
作为标题,我尝试使用 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 举报,一经查实,本站将立刻删除。