2

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

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

当我想在 a 上渲染视频时surface,我知道我们应该将表面作为参数提供给MediaCodec.configure.

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

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

4

1 回答 1

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);
于 2018-03-22T09:56:19.030 回答