在Android中,如何将表面传递给MediaCodec :: configure API

时间:2013-03-27 05:34:43

标签: android android-layout

我正在尝试使用MediaExtractorMediaCodec API创建一个简单的视频播放器。

我能够提取TS(传输流)文件的各个轨道。 我也能够创建解码器并对其进行配置并能够解码内容。

当我想在surface上呈现视频时,我理解我们应该将表面作为参数提供给MediaCodec.configure

status_t MediaCodec::configure (MediaFormat format, Surface surface, MediaCrypto crypto, int flags)

现在,我找不到任何关于如何创建surface并将其传递给configure函数的示例。 有人可以帮帮我吗?

1 个答案:

答案 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);