我正在尝试使用MediaExtractor
和MediaCodec
API创建一个简单的视频播放器。
我能够提取TS(传输流)文件的各个轨道。 我也能够创建解码器并对其进行配置并能够解码内容。
当我想在surface
上呈现视频时,我理解我们应该将表面作为参数提供给MediaCodec.configure
。
status_t MediaCodec::configure (MediaFormat format, Surface surface, MediaCrypto crypto, int flags)
现在,我找不到任何关于如何创建surface
并将其传递给configure
函数的示例。
有人可以帮帮我吗?
答案 0 :(得分:0)
首先将TextureView.SurfaceTextureListener实现为:
public class MainActivity extends AppCompatActivity implements TextureView.SurfaceTextureListener {
private TextureView m_surface;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
m_surface = (TextureView)findViewById(R.id.textureView);
m_surface.setSurfaceTextureListener(this);
}
现在将Surface传递给MediaCodec,就像这样
m_codec.configure(format,new Surface(m_surface.getSurfaceTexture()), null, 0);