在阅读互联网上的大量资源后,我有点困惑。
1)我在Application中有一个TextureView。 ((TV))
2)我已将SurfaceTextureLister与((tv))相关联。
tv.setSurfaceTextureListener(new TextureView.SurfaceTextureListener() {
public void onSurfaceTextureAvailable(SurfaceTexture surface, int width, int height) {
mySurface = new Surface(surface); => This surface is sent to native layer.
....
}
3)将此 mySurface 曲面传递给原生曲面,我获得此曲面的ANativeWindow,并使用 ANativeWindow_lock 和 ANativeWindow_unlockAndPost 复制数据进入水面。
到目前为止一切顺利。它正在显示我复制到ANativeWindow中的数据。
现在,我想将所有这些帧记录到文件中的MP4格式中。
我做了什么?
1)
我使用以下链接作为参考:
http://www.bigflake.com/mediacodec/EncodeAndMuxTest.java.txt
2)
我从mediacodec编码器中检索了一个曲面,并传递给原生复制,就像我复制到显示表面一样。我在mp4文件中看不到输出。只是一个黑屏。
问题:
1)这是正确的方法吗?我的意思是你有一个原始数据, 将此数据复制到两个表面,一个来自应用程序TextureView,另一个来自mediacodec编码器表面。
2) 或者,我是否忽略了将数据录制成mp4格式的其他简单方法?
3) 或者,我完全想念任何概念吗?
请提供宝贵的意见。