Articles of textureview

使用MediaPlayer使video适合TextureView(部分视图在外部(不可见))

我正在使用MediaPlayer在TextureView中播放video。 TextureView具有固定大小,video大小不同。 它播放video,但问题是video的一部分在外面,video没有按比例缩小以适应TextureView。 黑色矩形+照片(video)是TextureView。 红色矩形是实际的video,我画了它来显示问题。 因此它只显示video的一部分而不显示其余部分。 我希望所有video都可见,并保持原始比例。 谢谢。 // The class implements SurfaceTextureListener // Set TextureView to MediaPlayer m_TextureView.setSurfaceTextureListener(this); @Override public void onSurfaceTextureAvailable(SurfaceTexture surfaceTexture, int width, int height) { m_MediaPlayer = new MediaPlayer(); m_MediaPlayer.setSurface(new Surface(surfaceTexture)); } // Play video m_MediaPlayer.reset(); m_MediaPlayer.setDataSource(videoFilePath); m_MediaPlayer.prepare(); m_MediaPlayer.start();

如何在android中的TextureView上应用video效果(像棕褐色,复古等filter)?

我们如何在video中应用像棕褐色,复古等filter,然后在我们的服务器上发布相同内容? 同样,我们可以通过在TextureView上创建filter层来欺骗用户,从而在服务器上应用相应的filter。 代码: package com.example.mediaplayerdemo_video; import java.io.IOException; import android.app.Activity; import android.content.res.AssetFileDescriptor; import android.graphics.Matrix; import android.graphics.SurfaceTexture; import android.media.MediaPlayer; import android.os.Bundle; import android.util.Log; import android.view.Surface; import android.view.TextureView; public class MainActivity extends Activity implements TextureView.SurfaceTextureListener { // Log tag. private static final String TAG = MainActivity.class.getName(); // Asset video file name. private static final String FILE_NAME = “test.mp4”; […]

TextureView setBackgroundColor无法正常工作

我试图简单地改变TextureView的背景颜色。 我希望通过半透明相机预览可以看到这种颜色。 出于某种原因,它没有。 如果我从onSurfaceTextureAvailable完全删除相机预览,则视图保持白色(或无法看到)。 有任何想法吗? 我正在尝试实现一个有时包含相机预览的TextureView框,其他时候是我选择的纯色。 谢谢。 import android.graphics.Color; import android.graphics.SurfaceTexture; import android.hardware.Camera; import android.media.MediaPlayer; import android.os.Bundle; import android.app.Activity; import android.view.Menu; import android.view.Surface; import android.view.TextureView; import android.widget.FrameLayout; import android.widget.RelativeLayout; import java.io.IOException; public class MainActivity extends Activity { private TextureView mTextureView; FrameLayout screenFrame; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); screenFrame = (FrameLayout)findViewById(R.id.screenFrame); setVideoScreens(); } […]

在纹理视图上播放video与video的宽高比

我正在使用纹理视图在我的服务器上播放video,但是它会拉伸video并且无法保持video的宽高比。 但是,我希望保持video的长宽比,如在应用程序或Instagram应用程序中。

Android TextureView /绘图/绘画性能

我试图在Android上使用TextureView制作绘图/绘画应用程序。 我想支持高达4096×4096像素的绘图表面,这对于我的最小目标设备(我用于测试)来说似乎是合理的,这是一款具有漂亮的四核CPU和2GB内存的Google Nexus 7 2013。 我的一个要求是我的视图必须在一个允许它放大和缩小的视图中,这是我编写的所有自定义代码(想想来自iOS的UIScrollView)。 我尝试使用OnDraw的常规View(而不是TextureView ),性能绝对可怕 – 每秒不到1帧。 即使我只使用更改的rect调用了Invalidate(rect) ,也会发生这种情况。 我尝试关闭视图的硬件加速,但没有渲染,我假设因为4096×4096对于软件来说太大了。 然后我尝试使用TextureView并且性能稍微好一点 – 大约每秒5-10帧(仍然很糟糕但更好)。 用户绘制一个位图,然后使用后台线程将其绘制到纹理中。 我正在使用Xamarin,但希望代码对Java人员有意义。 private void RunUpdateThread() { try { TimeSpan sleep = TimeSpan.FromSeconds(1.0f / 60.0f); while (true) { lock (dirtyRect) { if (dirtyRect.Width() > 0 && dirtyRect.Height() > 0) { Canvas c = LockCanvas(dirtyRect); if (c != null) { c.DrawBitmap(bitmap, […]

在Android 7.0上并不总是调用SurfaceTexture方法

我的代码中有一个TextureView ,我已经设置了SurfaceTextureListener 。 在Android 6.0上,每当我离开活动并在Android 7.0上返回(分别)时,都会调用onSurfaceTextureDestroyed和onSurfaceTextureAvailable上的方法。我注意到onSurfaceTextureAvailable仅在创建活动后调用一次。 每当我离开活动并返回时,表面都不会被破坏和重新创建,就像我以前从Android 6.0那样。 经过一些调查后,我注意到API 18,19,24表现一种方式,API 20-23表现为另一种方式。 知道为什么,主要是如何使它在所有Android版本上表现相同?

如何在TextureView上绘制位图

我正在尝试使用TextureView在Android上播放video。 关于video任务运作良好。 但是MediaPlayer.prepare(); 需要一些时间。 所以我想展示一些占位符。 我试图用Glide这样做: public static final Rect rc = new Rect(); @Override public void onSurfaceTextureAvailable(SurfaceTexture surfaceTexture, int w, int h) { Surface s = new Surface(surfaceTexture); Glide.with(mTextureView.getContext()) .load(thumbUrl) .asBitmap() .dontAnimate() .centerCrop() .into(new SimpleTarget(w, h) { @Override public void onResourceReady(Bitmap resource, GlideAnimation glideAnimation) { rc.set(0,0,w,h); Canvas c = mTextureView.lockCanvas(rc); if (c == null) […]

带有SurfaceView的Camera2

我正在尝试让新的Camera2使用简单的SurfaceView,我在实时预览时遇到了一些问题。 在某些设备上,图像按比例拉伸,而在其他设备上看起来很好。 我已经设置了一个SurfaceView,我以编程方式调整它以适应预览流大小的大小。 在Nexus 5上,这看起来不错,但一台三星设备就此消失了。 此外,三星设备在预览的右侧部分有黑色边框。 是否真的无法使用SurfaceView,或者是时候切换到TextureView了?

SurfaceView vs TextureView for Camera?

我想在我的应用程序中加入一个相机function,它将允许视图本身的布局过渡,更改其大小,预览大小和有效处理方向更改。 我应该使用TextureView还是SurfaceView ? 决定决定..

玻璃相机预览显示乱码

我正在尝试在Google Glass中显示实时相机预览。 我正在使用所有相机默认设置(并且还尝试使用一些不同的图像格式;理想情况下,我可以使用其中一种YUV格式),但显示屏中显示的图像是乱码,如下所示: 布局很简单: 这是活动代码: public class ScanActivity extends Activity { private static final String kTag = ScanActivity.class.getSimpleName(); private TextureView mVideoCaptureView = null; private Camera mCamera = null; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_scan); setTitle(R.string.title_scan); mVideoCaptureView = (TextureView) findViewById(R.id.scan_preview); mVideoCaptureView.setKeepScreenOn(true); mVideoCaptureView.setSurfaceTextureListener(new VideoCaptureTextureListener()); } @Override protected void onPause() { super.onPause(); stopVideo(); } @Override protected […]