1

我在渲染视频的地方使用surfaceView。我有一个带有 video/hevc 和 video/avc 的 .mp4 文件。我创建了两个线程,以便通过surfaceView 将它们提取、解码并渲染到表面。我可以通过更改线程中的这一行来选择要在表面上显示的视频:

 decoder.configure(format, null, null, 0);

 decoder.configure(format, surface, null, 0);

但是如何通过单击按钮动态地执行此操作?

4

1 回答 1

0

如果您的目标是自 M 以来的 Android 版本,则可以使用 MediaCodec.SetOutputSurface(Surface)即时设置表面。 请注意,为了避免解码器在同一表面上并发,(唯一?)解决方案(不好?)是使用另一个隐藏表面并将其传递给第一个解码器,然后再将您想要的表面设置为第二个

于 2020-01-30T09:53:54.487 回答